summaryrefslogtreecommitdiffstats
path: root/toolkit/components/passwordmgr/test/mochitest/test_autofill_password-only.html
blob: 983356371a58d5f03373b0edd29e8d9ffe408ad0 (plain)
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
<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <title>Test password-only forms should prefer a password-only login when present</title>
  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
  <script type="text/javascript" src="pwmgr_common.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
Login Manager test: Bug 444968
<script>
let pwmgrCommonScript = runInParent(SimpleTest.getTestFileURL("pwmgr_common.js"));
pwmgrCommonScript.sendSyncMessage("setupParent", { selfFilling: true });

SimpleTest.waitForExplicitFinish();

let chromeScript = runInParent(function chromeSetup() {
  const { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components;
  let pwmgr = Cc["@mozilla.org/login-manager;1"].getService(Ci.nsILoginManager);

  let login1A  = Cc["@mozilla.org/login-manager/loginInfo;1"].
                 createInstance(Ci.nsILoginInfo);
  let login1B  = Cc["@mozilla.org/login-manager/loginInfo;1"].
                 createInstance(Ci.nsILoginInfo);
  let login2A  = Cc["@mozilla.org/login-manager/loginInfo;1"].
                 createInstance(Ci.nsILoginInfo);
  let login2B  = Cc["@mozilla.org/login-manager/loginInfo;1"].
                 createInstance(Ci.nsILoginInfo);
  let login2C  = Cc["@mozilla.org/login-manager/loginInfo;1"].
                 createInstance(Ci.nsILoginInfo);

  login1A.init("http://mochi.test:8888", "http://bug444968-1", null,
               "testuser1A", "testpass1A", "", "");
  login1B.init("http://mochi.test:8888", "http://bug444968-1", null,
               "", "testpass1B", "", "");

  login2A.init("http://mochi.test:8888", "http://bug444968-2", null,
               "testuser2A", "testpass2A", "", "");
  login2B.init("http://mochi.test:8888", "http://bug444968-2", null,
               "", "testpass2B", "", "");
  login2C.init("http://mochi.test:8888", "http://bug444968-2", null,
               "testuser2C", "testpass2C", "", "");

  pwmgr.addLogin(login1A);
  pwmgr.addLogin(login1B);
  pwmgr.addLogin(login2A);
  pwmgr.addLogin(login2B);
  pwmgr.addLogin(login2C);

  addMessageListener("removeLogins", function removeLogins() {
    pwmgr.removeLogin(login1A);
    pwmgr.removeLogin(login1B);
    pwmgr.removeLogin(login2A);
    pwmgr.removeLogin(login2B);
    pwmgr.removeLogin(login2C);
  });
});

SimpleTest.registerCleanupFunction(() => chromeScript.sendSyncMessage("removeLogins"));

registerRunTests();
</script>

<p id="display"></p>
<div id="content" style="display: none">
  <!-- first 3 forms have matching user+pass and pass-only logins -->

  <!-- user+pass form. -->
  <form id="form1" action="http://bug444968-1">
    <input  type="text"     name="uname">
    <input  type="password" name="pword">
    <button type="submit">Submit</button>
  </form>

  <!-- password-only form. -->
  <form id="form2" action="http://bug444968-1">
    <input  type="password" name="pword">
    <button type="submit">Submit</button>
  </form>

  <!-- user+pass form, username prefilled -->
  <form id="form3" action="http://bug444968-1">
    <input  type="text"     name="uname" value="testuser1A">
    <input  type="password" name="pword">
    <button type="submit">Submit</button>
  </form>


  <!-- next 4 forms have matching user+pass (2x) and pass-only (1x) logins -->

  <!-- user+pass form. -->
  <form id="form4" action="http://bug444968-2">
    <input  type="text"     name="uname">
    <input  type="password" name="pword">
    <button type="submit">Submit</button>
  </form>

  <!-- password-only form. -->
  <form id="form5" action="http://bug444968-2">
    <input  type="password" name="pword">
    <button type="submit">Submit</button>
  </form>

  <!-- user+pass form, username prefilled -->
  <form id="form6" action="http://bug444968-2">
    <input  type="text"     name="uname" value="testuser2A">
    <input  type="password" name="pword">
    <button type="submit">Submit</button>
  </form>

  <!-- user+pass form, username prefilled -->
  <form id="form7" action="http://bug444968-2">
    <input  type="text"     name="uname" value="testuser2C">
    <input  type="password" name="pword">
    <button type="submit">Submit</button>
  </form>

</div>
<pre id="test">
<script class="testbody" type="text/javascript">

/* Test for Login Manager: 444968 (password-only forms should prefer a
 * password-only login when present )
 */
function startTest() {
  checkForm(1, "testuser1A", "testpass1A");
  checkForm(2, "testpass1B");
  checkForm(3, "testuser1A", "testpass1A");

  checkUnmodifiedForm(4); // 2 logins match
  checkForm(5, "testpass2B");
  checkForm(6, "testuser2A", "testpass2A");
  checkForm(7, "testuser2C", "testpass2C");

  SimpleTest.finish();
}

window.addEventListener("runTests", startTest);
</script>
</pre>
</body>
</html>