mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-08 12:37:37 +00:00
143 lines
5.6 KiB
JavaScript
143 lines
5.6 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
"use strict";
|
|
|
|
const { store, search, remove } = require("sdk/passwords/utils");
|
|
|
|
exports["test store requires `password` field"] = function(assert) {
|
|
assert.throws(function() {
|
|
store({ username: "foo", realm: "bar" });
|
|
}, "`password` is required");
|
|
};
|
|
|
|
exports["test store requires `username` field"] = function(assert) {
|
|
assert.throws(function() {
|
|
store({ password: "foo", realm: "bar" });
|
|
}, "`username` is required");
|
|
};
|
|
|
|
exports["test store requires `realm` field"] = function(assert) {
|
|
assert.throws(function() {
|
|
store({ username: "foo", password: "bar" });
|
|
}, "`password` is required");
|
|
};
|
|
|
|
exports["test can't store same login twice"] = function(assert) {
|
|
let options = { username: "user", password: "pass", realm: "realm" };
|
|
store(options);
|
|
assert.throws(function() {
|
|
store(options);
|
|
}, "can't store same pass twice");
|
|
remove(options);
|
|
};
|
|
|
|
exports["test remove throws if no login found"] = function(assert) {
|
|
assert.throws(function() {
|
|
remove({ username: "foo", password: "bar", realm: "baz" });
|
|
}, "can't remove unstored credentials");
|
|
};
|
|
|
|
exports["test addon associated credentials"] = function(assert) {
|
|
let options = { username: "foo", password: "bar", realm: "baz" };
|
|
store(options);
|
|
|
|
assert.ok(search().length, "credential was stored");
|
|
assert.ok(search(options).length, "stored credential found");
|
|
assert.ok(search({ username: options.username }).length, "found by username");
|
|
assert.ok(search({ password: options.password }).length, "found by password");
|
|
assert.ok(search({ realm: options.realm }).length, "found by realm");
|
|
|
|
let credential = search(options)[0];
|
|
assert.equal(credential.url.indexOf("addon:"), 0,
|
|
"`addon:` uri is used for add-on associated credentials");
|
|
assert.equal(credential.username, options.username, "username matches");
|
|
assert.equal(credential.password, options.password, "password matches");
|
|
assert.equal(credential.realm, options.realm, "realm matches");
|
|
assert.equal(credential.formSubmitURL, null,
|
|
"`formSubmitURL` is `null` for add-on associated credentials");
|
|
assert.equal(credential.usernameField, "", "usernameField is empty");
|
|
assert.equal(credential.passwordField, "", "passwordField is empty");
|
|
|
|
remove(search(options)[0]);
|
|
assert.ok(!search(options).length, "remove worked");
|
|
};
|
|
|
|
exports["test web page associated credentials"] = function(assert) {
|
|
let options = {
|
|
url: "http://www.example.com",
|
|
formSubmitURL: "http://login.example.com",
|
|
username: "user",
|
|
password: "pass",
|
|
usernameField: "user-f",
|
|
passwordField: "pass-f"
|
|
};
|
|
store({
|
|
url: "http://www.example.com/login",
|
|
formSubmitURL: "http://login.example.com/foo/authenticate.cgi",
|
|
username: options.username,
|
|
password: options.password,
|
|
usernameField: options.usernameField,
|
|
passwordField: options.passwordField
|
|
});
|
|
|
|
assert.ok(search().length, "credential was stored");
|
|
assert.ok(search(options).length, "stored credential found");
|
|
assert.ok(search({ username: options.username }).length, "found by username");
|
|
assert.ok(search({ password: options.password }).length, "found by password");
|
|
assert.ok(search({ formSubmitURL: options.formSubmitURL }).length,
|
|
"found by formSubmitURL");
|
|
assert.ok(search({ usernameField: options.usernameField }).length,
|
|
"found by usernameField");
|
|
assert.ok(search({ passwordField: options.passwordField }).length,
|
|
"found by passwordField");
|
|
|
|
let credential = search(options)[0];
|
|
assert.equal(credential.url, options.url, "url matches");
|
|
assert.equal(credential.username, options.username, "username matches");
|
|
assert.equal(credential.password, options.password, "password matches");
|
|
assert.equal(credential.realm, null, "realm is ");
|
|
assert.equal(credential.formSubmitURL, options.formSubmitURL,
|
|
"`formSubmitURL` matches");
|
|
assert.equal(credential.usernameField, options.usernameField,
|
|
"usernameField matches");
|
|
assert.equal(credential.passwordField, options.passwordField,
|
|
"passwordField matches");
|
|
|
|
remove(search(options)[0]);
|
|
assert.ok(!search(options).length, "remove worked");
|
|
};
|
|
|
|
exports["test site authentication credentials"] = function(assert) {
|
|
let options = {
|
|
url: "http://test.authentication.com",
|
|
username: "u",
|
|
password: "p",
|
|
realm: "r"
|
|
};
|
|
|
|
store(options);
|
|
assert.ok(search().length, "credential was stored");
|
|
assert.ok(search(options).length, "stored credential found");
|
|
assert.ok(search({ username: options.username }).length, "found by username");
|
|
assert.ok(search({ password: options.password }).length, "found by password");
|
|
assert.ok(search({ realm: options.realm }).length, "found by realm");
|
|
assert.ok(search({ url: options.url }).length, "found by url");
|
|
|
|
let credential = search(options)[0];
|
|
assert.equal(credential.url, options.url, "url matches");
|
|
assert.equal(credential.username, options.username, "username matches");
|
|
assert.equal(credential.password, options.password, "password matches");
|
|
assert.equal(credential.realm, options.realm, "realm matches");
|
|
assert.equal(credential.formSubmitURL, null,
|
|
"`formSubmitURL` is `null` for site authentication credentials");
|
|
assert.equal(credential.usernameField, "", "usernameField is empty");
|
|
assert.equal(credential.passwordField, "", "passwordField is empty");
|
|
|
|
remove(search(options)[0]);
|
|
assert.ok(!search(options).length, "remove worked");
|
|
};
|
|
|
|
require("test").run(exports);
|