File: test_restore_from_backup.html

package info (click to toggle)
firefox 141.0.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,550,588 kB
  • sloc: cpp: 7,426,506; javascript: 6,367,238; ansic: 3,707,351; python: 1,369,002; xml: 623,983; asm: 426,918; java: 184,324; sh: 64,488; makefile: 19,203; objc: 13,059; perl: 12,955; yacc: 4,583; cs: 3,846; pascal: 3,352; lex: 1,720; ruby: 1,071; exp: 762; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10
file content (155 lines) | stat: -rw-r--r-- 5,357 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <title>Tests for the restore-from-backup component</title>
  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
  <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
  <script
  src="chrome://browser/content/backup/restore-from-backup.mjs"
  type="module"
  ></script>
  <link rel="localization" href="preview/backupSettings.ftl"/>
  <link rel="localization" href="branding/brand.ftl"/>
  <link rel="stylesheet" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
  <script>

    const { BrowserTestUtils } = ChromeUtils.importESModule(
      "resource://testing-common/BrowserTestUtils.sys.mjs"
    );

    /**
     * Tests that adding a restore-from-backup element to the DOM causes it to
     * fire a BackupUI:InitWidget event.
     */
    add_task(async function test_initWidget() {
      let restoreFromBackup = document.createElement("restore-from-backup");
      let content = document.getElementById("content");

      let sawInitWidget = BrowserTestUtils.waitForEvent(content, "BackupUI:InitWidget");
      content.appendChild(restoreFromBackup);
      await sawInitWidget;
      ok(true, "Saw BackupUI:InitWidget");

      restoreFromBackup.remove();
    });

    /**
     * Tests that pressing the restore and restart button will dispatch the expected events.
     */
    add_task(async function test_restore() {
      let restoreFromBackup = document.getElementById("test-restore-from-backup");
      let confirmButton = restoreFromBackup.confirmButtonEl;

      ok(confirmButton, "Restore button should be found");

      restoreFromBackup.backupFileToRestore = "/Some/User/Documents/Firefox Backup/backup.html";
      await restoreFromBackup.updateComplete;

      let content = document.getElementById("content");
      let promise = BrowserTestUtils.waitForEvent(content, "restoreFromBackupConfirm");

      confirmButton.click();

      await promise;

      ok(true, "Detected event after pressing the restore button");
    });

    /**
     * Tests that pressing the cancel button will dispatch the expected events.
     */
    add_task(async function test_cancel() {
      let restoreFromBackup = document.getElementById("test-restore-from-backup");
      let cancelButton = restoreFromBackup.cancelButtonEl;

      ok(cancelButton, "Cancel button should be found");

      let content = document.getElementById("content");
      let promise = BrowserTestUtils.waitForEvent(content, "dialogCancel");

      cancelButton.click();

      await promise;
      ok(true, "Detected event after pressing the cancel button");
    });

    /**
     * Tests that pressing the choose button will dispatch the expected events.
     */
     add_task(async function test_choose() {
      let restoreFromBackup = document.getElementById("test-restore-from-backup");

      ok(restoreFromBackup.chooseButtonEl, "Choose button should be found");

      let content = document.getElementById("content");
      let promise = BrowserTestUtils.waitForEvent(content, "BackupUI:ShowFilepicker");

      restoreFromBackup.chooseButtonEl.click();

      await promise;
      ok(true, "Detected event after pressing the choose button");
    });

    /**
     * Tests that changing backup files will dispatch the expected events.
     */
     add_task(async function test_restore() {
      let restoreFromBackup = document.getElementById("test-restore-from-backup");

      let content = document.getElementById("content");
      let promise = BrowserTestUtils.waitForEvent(content, "getBackupFileInfo");

      restoreFromBackup.backupFileToRestore = "/Some/User/Documents/Firefox Backup/backup-default.html";
      await restoreFromBackup.updateComplete;

      await promise;
      ok(true, "Detected event after changing files to restore");
    });

    /**
     * Tests that the password input will shown when a file is encrypted.
     */
     add_task(async function test_show_password() {
      let restoreFromBackup = document.getElementById("test-restore-from-backup");

      ok(!restoreFromBackup.passwordInput, "Password input should not be present");

      let date = new Date();
      restoreFromBackup.backupFileInfo = {
        date,
        isEncrypted: true,
      };

      await restoreFromBackup.updateComplete;

      ok(restoreFromBackup.passwordInput, "Password input should be present");
    });

    /**
     * Tests that an error message is displayed if there is an error restoring from backup.
     */
     add_task(async function test_error_condition() {
      let restoreFromBackup = document.getElementById("test-restore-from-backup");

      is(restoreFromBackup.recoveryErrorCode, undefined, "Recovery error code should be undefined");
      ok(!restoreFromBackup.errorMessageEl, "No error message should be displayed");

      restoreFromBackup.recoveryErrorCode = 1;

      await restoreFromBackup.updateComplete;

      is(restoreFromBackup.recoveryErrorCode, 1, "Recovery error code should be set");
      ok(restoreFromBackup.errorMessageEl, "Error message should be displayed");
    });

  </script>
</head>
<body>
<p id="display"></p>
<div id="content" style="display: none">
  <restore-from-backup id="test-restore-from-backup"></restore-from-backup>
</div>
<pre id="test"></pre>
</body>
</html>