toolkit/identity/tests/unit/test_well-known.js

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 /* Any copyright is dedicated to the Public Domain.
     2    http://creativecommons.org/publicdomain/zero/1.0/ */
     4 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
     5 Cu.import("resource://gre/modules/Services.jsm");
     7 XPCOMUtils.defineLazyModuleGetter(this, "IDService",
     8                                   "resource://gre/modules/identity/Identity.jsm",
     9                                   "IdentityService");
    11 const WELL_KNOWN_PATH = "/.well-known/browserid";
    13 let SERVER_PORT = 8080;
    15 // valid IDP
    16 function test_well_known_1() {
    17   do_test_pending();
    19   let server = new HttpServer();
    20   server.registerFile(WELL_KNOWN_PATH, do_get_file("data/idp_1" + WELL_KNOWN_PATH));
    21   server.start(SERVER_PORT);
    22   let hostPort = "localhost:" + SERVER_PORT;
    24   function check_well_known(aErr, aCallbackObj) {
    25     do_check_null(aErr);
    26     do_check_eq(aCallbackObj.domain, hostPort);
    27     let idpParams = aCallbackObj.idpParams;
    28     do_check_eq(idpParams['public-key'].algorithm, "RS");
    29     do_check_eq(idpParams.authentication, "/browserid/sign_in.html");
    30     do_check_eq(idpParams.provisioning, "/browserid/provision.html");
    32     do_test_finished();
    33     server.stop(run_next_test);
    34   }
    36   IDService._fetchWellKnownFile(hostPort, check_well_known, "http");
    37 }
    39 // valid domain, non-exixtent browserid file
    40 function test_well_known_404() {
    41   do_test_pending();
    43   let server = new HttpServer();
    44   // Don't register the well-known file
    45   // Change ports to avoid HTTP caching
    46   SERVER_PORT++;
    47   server.start(SERVER_PORT);
    49   let hostPort = "localhost:" + SERVER_PORT;
    51   function check_well_known_404(aErr, aCallbackObj) {
    52     do_check_eq("Error", aErr);
    53     do_check_eq(undefined, aCallbackObj);
    54     do_test_finished();
    55     server.stop(run_next_test);
    56   }
    58   IDService._fetchWellKnownFile(hostPort, check_well_known_404, "http");
    59 }
    61 // valid domain, invalid browserid file (no "provisioning" member)
    62 function test_well_known_invalid_1() {
    63   do_test_pending();
    65   let server = new HttpServer();
    66   server.registerFile(WELL_KNOWN_PATH, do_get_file("data/idp_invalid_1" + WELL_KNOWN_PATH));
    67   // Change ports to avoid HTTP caching
    68   SERVER_PORT++;
    69   server.start(SERVER_PORT);
    71   let hostPort = "localhost:" + SERVER_PORT;
    73   function check_well_known_invalid_1(aErr, aCallbackObj) {
    74     // check for an error message
    75     do_check_true(aErr && aErr.length > 0);
    76     do_check_eq(undefined, aCallbackObj);
    77     do_test_finished();
    78     server.stop(run_next_test);
    79   }
    81   IDService._fetchWellKnownFile(hostPort, check_well_known_invalid_1, "http");
    82 }
    84 let TESTS = [test_well_known_1, test_well_known_404, test_well_known_invalid_1];
    86 TESTS.forEach(add_test);
    88 function run_test() {
    89   run_next_test();
    90 }

mercurial