зеркало из https://github.com/mozilla/gecko-dev.git
91 строка
2.6 KiB
JavaScript
91 строка
2.6 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
|
Cu.import("resource://gre/modules/Services.jsm");
|
|
|
|
XPCOMUtils.defineLazyModuleGetter(this, "IDService",
|
|
"resource://gre/modules/identity/Identity.jsm",
|
|
"IdentityService");
|
|
|
|
const WELL_KNOWN_PATH = "/.well-known/browserid";
|
|
|
|
let SERVER_PORT = 8080;
|
|
|
|
// valid IDP
|
|
function test_well_known_1() {
|
|
do_test_pending();
|
|
|
|
let server = new HttpServer();
|
|
server.registerFile(WELL_KNOWN_PATH, do_get_file("data/idp_1" + WELL_KNOWN_PATH));
|
|
server.start(SERVER_PORT);
|
|
let hostPort = "localhost:" + SERVER_PORT;
|
|
|
|
function check_well_known(aErr, aCallbackObj) {
|
|
do_check_null(aErr);
|
|
do_check_eq(aCallbackObj.domain, hostPort);
|
|
let idpParams = aCallbackObj.idpParams;
|
|
do_check_eq(idpParams['public-key'].algorithm, "RS");
|
|
do_check_eq(idpParams.authentication, "/browserid/sign_in.html");
|
|
do_check_eq(idpParams.provisioning, "/browserid/provision.html");
|
|
|
|
do_test_finished();
|
|
server.stop(run_next_test);
|
|
}
|
|
|
|
IDService._fetchWellKnownFile(hostPort, check_well_known, "http");
|
|
}
|
|
|
|
// valid domain, non-exixtent browserid file
|
|
function test_well_known_404() {
|
|
do_test_pending();
|
|
|
|
let server = new HttpServer();
|
|
// Don't register the well-known file
|
|
// Change ports to avoid HTTP caching
|
|
SERVER_PORT++;
|
|
server.start(SERVER_PORT);
|
|
|
|
let hostPort = "localhost:" + SERVER_PORT;
|
|
|
|
function check_well_known_404(aErr, aCallbackObj) {
|
|
do_check_eq("Error", aErr);
|
|
do_check_eq(undefined, aCallbackObj);
|
|
do_test_finished();
|
|
server.stop(run_next_test);
|
|
}
|
|
|
|
IDService._fetchWellKnownFile(hostPort, check_well_known_404, "http");
|
|
}
|
|
|
|
// valid domain, invalid browserid file (no "provisioning" member)
|
|
function test_well_known_invalid_1() {
|
|
do_test_pending();
|
|
|
|
let server = new HttpServer();
|
|
server.registerFile(WELL_KNOWN_PATH, do_get_file("data/idp_invalid_1" + WELL_KNOWN_PATH));
|
|
// Change ports to avoid HTTP caching
|
|
SERVER_PORT++;
|
|
server.start(SERVER_PORT);
|
|
|
|
let hostPort = "localhost:" + SERVER_PORT;
|
|
|
|
function check_well_known_invalid_1(aErr, aCallbackObj) {
|
|
// check for an error message
|
|
do_check_true(aErr && aErr.length > 0);
|
|
do_check_eq(undefined, aCallbackObj);
|
|
do_test_finished();
|
|
server.stop(run_next_test);
|
|
}
|
|
|
|
IDService._fetchWellKnownFile(hostPort, check_well_known_invalid_1, "http");
|
|
}
|
|
|
|
let TESTS = [test_well_known_1, test_well_known_404, test_well_known_invalid_1];
|
|
|
|
TESTS.forEach(add_test);
|
|
|
|
function run_test() {
|
|
run_next_test();
|
|
}
|