tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_fxaccounts_button.html (3222B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 Test the fxaccounts-button component
      5 -->
      6 <head>
      7  <meta charset="utf-8">
      8  <title>Test the fxaccounts-button component</title>
      9  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
     10  <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
     11  <script type="module" src="chrome://browser/content/aboutlogins/components/fxaccounts-button.mjs"></script>
     12  <script src="aboutlogins_common.js"></script>
     13 
     14  <link rel="stylesheet" href="/tests/SimpleTest/test.css"/>
     15 </head>
     16 <body>
     17  <p id="display">
     18  </p>
     19 <div id="content" style="display: none">
     20  <iframe id="templateFrame" src="chrome://browser/content/aboutlogins/aboutLogins.html"
     21          sandbox="allow-same-origin"></iframe>
     22 </div>
     23 <pre id="test">
     24 </pre>
     25 <script>
     26 /** Test the fxaccounts-button component */
     27 
     28 const TEST_AVATAR_URL = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==";
     29 
     30 let gFxAccountsButton;
     31 add_setup(async () => {
     32  let templateFrame = document.getElementById("templateFrame");
     33  let displayEl = document.getElementById("display");
     34  await importDependencies(templateFrame, displayEl);
     35 
     36  gFxAccountsButton = document.createElement("fxaccounts-button");
     37  displayEl.appendChild(gFxAccountsButton);
     38 });
     39 
     40 add_task(async function test_default_state() {
     41  ok(gFxAccountsButton, "FxAccountsButton exists");
     42  ok(!isHidden(gFxAccountsButton.shadowRoot.querySelector(".logged-out-view")),
     43    "logged-out-view view is visible by default");
     44  ok(isHidden(gFxAccountsButton.shadowRoot.querySelector(".logged-in-view")),
     45    "logged-in-view view is hidden by default");
     46 });
     47 
     48 add_task(async function test_logged_in_without_login_syncing() {
     49  gFxAccountsButton.updateState({
     50    fxAccountsEnabled: true,
     51    loggedIn: true,
     52    loginSyncingEnabled: false,
     53  });
     54 
     55  ok(isHidden(gFxAccountsButton.shadowRoot.querySelector(".logged-out-view")),
     56    "logged-out-view view is hidden");
     57  ok(!isHidden(gFxAccountsButton.shadowRoot.querySelector(".logged-in-view")),
     58    "logged-in-view view is visible");
     59 });
     60 
     61 add_task(async function test_logged_in_with_login_syncing() {
     62  const TEST_EMAIL = "test@example.com";
     63 
     64  gFxAccountsButton.updateState({
     65    fxAccountsEnabled: true,
     66    loggedIn: true,
     67    loginSyncingEnabled: true,
     68    email: TEST_EMAIL,
     69    avatarURL: TEST_AVATAR_URL,
     70  });
     71 
     72  ok(isHidden(gFxAccountsButton.shadowRoot.querySelector(".logged-out-view")),
     73    "logged-out-view view is hidden");
     74  ok(!isHidden(gFxAccountsButton.shadowRoot.querySelector(".logged-in-view")),
     75    "logged-in-view view is visible");
     76  is(gFxAccountsButton.shadowRoot.querySelector(".fxaccount-email").textContent,
     77    TEST_EMAIL,
     78    "email should be shown");
     79  is(gFxAccountsButton.shadowRoot.querySelector(".fxaccounts-avatar-button").style.getPropertyValue("--avatar-url"),
     80    `url(${TEST_AVATAR_URL})`,
     81    "--avatar-url should be set");
     82 });
     83 
     84 add_task(async function test_fxaccounts_disabled() {
     85  gFxAccountsButton.updateState({
     86    fxAccountsEnabled: false,
     87  });
     88 
     89  ok(isHidden(gFxAccountsButton),
     90    "the whole button is hidden when fxaccounts are disabled");
     91 });
     92 
     93 </script>
     94 
     95 </body>
     96 </html>