toolkit/components/passwordmgr/test/browser/browser_passwordmgr_observers.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* Any copyright is dedicated to the Public Domain.
     2  * http://creativecommons.org/publicdomain/zero/1.0/ */
     4 function test() {
     5   waitForExplicitFinish();
     7   const LOGIN_HOST = "http://example.com";
     8   const LOGIN_COUNT = 5;
    10   let nsLoginInfo = new Components.Constructor(
    11     "@mozilla.org/login-manager/loginInfo;1", Ci.nsILoginInfo, "init");
    12   let pmDialog = window.openDialog(
    13     "chrome://passwordmgr/content/passwordManager.xul",
    14     "Toolkit:PasswordManager", "");
    15   let pmexDialog = window.openDialog(
    16     "chrome://passwordmgr/content/passwordManagerExceptions.xul",
    17     "Toolkit:PasswordManagerExceptions", "");
    18   let logins = [];
    19   let loginCounter = 0;
    20   let loginOrder = null;
    21   let modifiedLogin;
    22   let testNumber = 0;
    23   let testObserver = {
    24     observe: function (subject, topic, data) {
    25       if (topic == "passwordmgr-dialog-updated") {
    26         switch (testNumber) {
    27           case 1:
    28           case 2:
    29           case 3:
    30           case 4:
    31           case 5:
    32             is(countLogins(), loginCounter, "Verify login added");
    33             ok(getLoginOrder().startsWith(loginOrder), "Verify login order");
    34             runNextTest();
    35             break;
    36           case 6:
    37             is(countLogins(), loginCounter, "Verify login count");
    38             is(getLoginOrder(), loginOrder, "Verify login order");
    39             is(getLoginPassword(), "newpassword0", "Verify login modified");
    40             runNextTest();
    41             break;
    42           case 7:
    43             is(countLogins(), loginCounter, "Verify login removed");
    44             ok(loginOrder.endsWith(getLoginOrder()), "Verify login order");
    45             runNextTest();
    46             break;
    47           case 8:
    48             is(countLogins(), 0, "Verify all logins removed");
    49             runNextTest();
    50             break;
    51           case 9:
    52             is(countDisabledHosts(), 1, "Verify disabled host added");
    53             runNextTest();
    54             break;
    55           case 10:
    56             is(countDisabledHosts(), 0, "Verify disabled host removed");
    57             runNextTest();
    58             break;
    59         }
    60       }
    61     }
    62   };
    64   SimpleTest.waitForFocus(startTest, pmDialog);
    66   function createLogins() {
    67     let login;
    68     for (let i = 0; i < LOGIN_COUNT; i++) {
    69       login = new nsLoginInfo(LOGIN_HOST + "?n=" + i, LOGIN_HOST + "?n=" + i,
    70         null, "user" + i, "password" + i, "u" + i, "p" + i);
    71       logins.push(login);
    72     }
    73     modifiedLogin = new nsLoginInfo(LOGIN_HOST + "?n=0", LOGIN_HOST + "?n=0",
    74       null, "user0", "newpassword0", "u0", "p0");
    75     is(logins.length, LOGIN_COUNT, "Verify logins created");
    76   }
    78   function countDisabledHosts() {
    79     let doc = pmexDialog.document;
    80     let rejectsTree = doc.getElementById("rejectsTree");
    81     return rejectsTree.view.rowCount;
    82   }
    84   function countLogins() {
    85     let doc = pmDialog.document;
    86     let signonsTree = doc.getElementById("signonsTree");
    87     return signonsTree.view.rowCount;
    88   }
    90   function getLoginOrder() {
    91     let doc = pmDialog.document;
    92     let signonsTree = doc.getElementById("signonsTree");
    93     let column = signonsTree.columns[0]; // host column
    94     let order = [];
    95     for (let i = 0; i < signonsTree.view.rowCount; i++) {
    96       order.push(signonsTree.view.getCellText(i, column));
    97     }
    98     return order.join(',');
    99   }
   101   function getLoginPassword() {
   102     let doc = pmDialog.document;
   103     let loginsTree = doc.getElementById("signonsTree");
   104     let column = loginsTree.columns[2]; // password column
   105     return loginsTree.view.getCellText(0, column);
   106   }
   108   function startTest() {
   109     Services.obs.addObserver(
   110       testObserver, "passwordmgr-dialog-updated", false);
   111     is(countLogins(), 0, "Verify starts with 0 logins");
   112     createLogins();
   113     runNextTest();
   114   }
   116   function runNextTest() {
   117     switch (++testNumber) {
   118       case 1: // add the logins
   119         for (let i = 0; i < logins.length; i++) {
   120           loginCounter++;
   121           loginOrder = getLoginOrder();
   122           Services.logins.addLogin(logins[i]);
   123         }
   124         break;
   125       case 6: // modify a login
   126         loginOrder = getLoginOrder();
   127         Services.logins.modifyLogin(logins[0], modifiedLogin);
   128         break;
   129       case 7: // remove a login
   130         loginCounter--;
   131         loginOrder = getLoginOrder();
   132         Services.logins.removeLogin(modifiedLogin);
   133         break;
   134       case 8: // remove all logins
   135         Services.logins.removeAllLogins();
   136         break;
   137       case 9: // save a disabled host
   138         pmDialog.close();
   139         SimpleTest.waitForFocus(function() {
   140           Services.logins.setLoginSavingEnabled(LOGIN_HOST, false);
   141         }, pmexDialog);
   142         break;
   143       case 10: // remove a disabled host
   144         Services.logins.setLoginSavingEnabled(LOGIN_HOST, true);
   145         break;
   146       case 11: // finish
   147         Services.obs.removeObserver(
   148           testObserver, "passwordmgr-dialog-updated", false);
   149         pmexDialog.close();
   150         finish();
   151         break;
   152     }
   153   }
   154 }

mercurial