1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/identity/tests/unit/test_well-known.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,90 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); 1.8 +Cu.import("resource://gre/modules/Services.jsm"); 1.9 + 1.10 +XPCOMUtils.defineLazyModuleGetter(this, "IDService", 1.11 + "resource://gre/modules/identity/Identity.jsm", 1.12 + "IdentityService"); 1.13 + 1.14 +const WELL_KNOWN_PATH = "/.well-known/browserid"; 1.15 + 1.16 +let SERVER_PORT = 8080; 1.17 + 1.18 +// valid IDP 1.19 +function test_well_known_1() { 1.20 + do_test_pending(); 1.21 + 1.22 + let server = new HttpServer(); 1.23 + server.registerFile(WELL_KNOWN_PATH, do_get_file("data/idp_1" + WELL_KNOWN_PATH)); 1.24 + server.start(SERVER_PORT); 1.25 + let hostPort = "localhost:" + SERVER_PORT; 1.26 + 1.27 + function check_well_known(aErr, aCallbackObj) { 1.28 + do_check_null(aErr); 1.29 + do_check_eq(aCallbackObj.domain, hostPort); 1.30 + let idpParams = aCallbackObj.idpParams; 1.31 + do_check_eq(idpParams['public-key'].algorithm, "RS"); 1.32 + do_check_eq(idpParams.authentication, "/browserid/sign_in.html"); 1.33 + do_check_eq(idpParams.provisioning, "/browserid/provision.html"); 1.34 + 1.35 + do_test_finished(); 1.36 + server.stop(run_next_test); 1.37 + } 1.38 + 1.39 + IDService._fetchWellKnownFile(hostPort, check_well_known, "http"); 1.40 +} 1.41 + 1.42 +// valid domain, non-exixtent browserid file 1.43 +function test_well_known_404() { 1.44 + do_test_pending(); 1.45 + 1.46 + let server = new HttpServer(); 1.47 + // Don't register the well-known file 1.48 + // Change ports to avoid HTTP caching 1.49 + SERVER_PORT++; 1.50 + server.start(SERVER_PORT); 1.51 + 1.52 + let hostPort = "localhost:" + SERVER_PORT; 1.53 + 1.54 + function check_well_known_404(aErr, aCallbackObj) { 1.55 + do_check_eq("Error", aErr); 1.56 + do_check_eq(undefined, aCallbackObj); 1.57 + do_test_finished(); 1.58 + server.stop(run_next_test); 1.59 + } 1.60 + 1.61 + IDService._fetchWellKnownFile(hostPort, check_well_known_404, "http"); 1.62 +} 1.63 + 1.64 +// valid domain, invalid browserid file (no "provisioning" member) 1.65 +function test_well_known_invalid_1() { 1.66 + do_test_pending(); 1.67 + 1.68 + let server = new HttpServer(); 1.69 + server.registerFile(WELL_KNOWN_PATH, do_get_file("data/idp_invalid_1" + WELL_KNOWN_PATH)); 1.70 + // Change ports to avoid HTTP caching 1.71 + SERVER_PORT++; 1.72 + server.start(SERVER_PORT); 1.73 + 1.74 + let hostPort = "localhost:" + SERVER_PORT; 1.75 + 1.76 + function check_well_known_invalid_1(aErr, aCallbackObj) { 1.77 + // check for an error message 1.78 + do_check_true(aErr && aErr.length > 0); 1.79 + do_check_eq(undefined, aCallbackObj); 1.80 + do_test_finished(); 1.81 + server.stop(run_next_test); 1.82 + } 1.83 + 1.84 + IDService._fetchWellKnownFile(hostPort, check_well_known_invalid_1, "http"); 1.85 +} 1.86 + 1.87 +let TESTS = [test_well_known_1, test_well_known_404, test_well_known_invalid_1]; 1.88 + 1.89 +TESTS.forEach(add_test); 1.90 + 1.91 +function run_test() { 1.92 + run_next_test(); 1.93 +}