mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-10-22 02:25:05 +00:00
243 lines
5.9 KiB
JavaScript
243 lines
5.9 KiB
JavaScript
|
/* Any copyright is dedicated to the Public Domain.
|
||
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||
|
|
||
|
"use strict";
|
||
|
|
||
|
Cu.import("resource://gre/modules/identity/IdentityProvider.jsm");
|
||
|
|
||
|
function check_provision_flow_done(provId) {
|
||
|
do_check_null(IdentityProvider._provisionFlows[provId]);
|
||
|
}
|
||
|
|
||
|
function test_begin_provisioning() {
|
||
|
do_test_pending();
|
||
|
|
||
|
setup_provisioning(
|
||
|
TEST_USER,
|
||
|
function(caller) {
|
||
|
// call .beginProvisioning()
|
||
|
IdentityProvider.beginProvisioning(caller);
|
||
|
}, function() {},
|
||
|
{
|
||
|
beginProvisioningCallback: function(email, duration_s) {
|
||
|
do_check_eq(email, TEST_USER);
|
||
|
do_check_true(duration_s > 0);
|
||
|
do_check_true(duration_s <= (24 * 3600));
|
||
|
|
||
|
do_test_finished();
|
||
|
run_next_test();
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function test_raise_provisioning_failure() {
|
||
|
do_test_pending();
|
||
|
let _callerId = null;
|
||
|
|
||
|
setup_provisioning(
|
||
|
TEST_USER,
|
||
|
function(caller) {
|
||
|
// call .beginProvisioning()
|
||
|
_callerId = caller.id;
|
||
|
IdentityProvider.beginProvisioning(caller);
|
||
|
}, function(err) {
|
||
|
// this should be invoked with a populated error
|
||
|
do_check_neq(err, null);
|
||
|
do_check_true(err.indexOf("can't authenticate this email") > -1);
|
||
|
|
||
|
do_test_finished();
|
||
|
run_next_test();
|
||
|
},
|
||
|
{
|
||
|
beginProvisioningCallback: function(email, duration_s) {
|
||
|
// raise the failure as if we can't provision this email
|
||
|
IdentityProvider.raiseProvisioningFailure(_callerId, "can't authenticate this email");
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function test_genkeypair_before_begin_provisioning() {
|
||
|
do_test_pending();
|
||
|
|
||
|
setup_provisioning(
|
||
|
TEST_USER,
|
||
|
function(caller) {
|
||
|
// call genKeyPair without beginProvisioning
|
||
|
IdentityProvider.genKeyPair(caller.id);
|
||
|
},
|
||
|
// expect this to be called with an error
|
||
|
function(err) {
|
||
|
do_check_neq(err, null);
|
||
|
|
||
|
do_test_finished();
|
||
|
run_next_test();
|
||
|
},
|
||
|
{
|
||
|
// this should not be called at all!
|
||
|
genKeyPairCallback: function(pk) {
|
||
|
// a test that will surely fail because we shouldn't be here.
|
||
|
do_check_true(false);
|
||
|
|
||
|
do_test_finished();
|
||
|
run_next_test();
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
}
|
||
|
|
||
|
function test_genkeypair() {
|
||
|
do_test_pending();
|
||
|
let _callerId = null;
|
||
|
|
||
|
setup_provisioning(
|
||
|
TEST_USER,
|
||
|
function(caller) {
|
||
|
_callerId = caller.id;
|
||
|
IdentityProvider.beginProvisioning(caller);
|
||
|
},
|
||
|
function(err) {
|
||
|
// should not be called!
|
||
|
do_check_true(false);
|
||
|
|
||
|
do_test_finished();
|
||
|
run_next_test();
|
||
|
},
|
||
|
{
|
||
|
beginProvisioningCallback: function(email, time_s) {
|
||
|
IdentityProvider.genKeyPair(_callerId);
|
||
|
},
|
||
|
genKeyPairCallback: function(kp) {
|
||
|
do_check_neq(kp, null);
|
||
|
|
||
|
// yay!
|
||
|
do_test_finished();
|
||
|
run_next_test();
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
}
|
||
|
|
||
|
// we've already ensured that genkeypair can't be called
|
||
|
// before beginProvisioning, so this test should be enough
|
||
|
// to ensure full sequential call of the 3 APIs.
|
||
|
function test_register_certificate_before_genkeypair() {
|
||
|
do_test_pending();
|
||
|
let _callerID = null;
|
||
|
|
||
|
setup_provisioning(
|
||
|
TEST_USER,
|
||
|
function(caller) {
|
||
|
// do the right thing for beginProvisioning
|
||
|
_callerID = caller.id;
|
||
|
IdentityProvider.beginProvisioning(caller);
|
||
|
},
|
||
|
// expect this to be called with an error
|
||
|
function(err) {
|
||
|
do_check_neq(err, null);
|
||
|
|
||
|
do_test_finished();
|
||
|
run_next_test();
|
||
|
},
|
||
|
{
|
||
|
beginProvisioningCallback: function(email, duration_s) {
|
||
|
// now we try to register cert but no keygen has been done
|
||
|
IdentityProvider.registerCertificate(_callerID, "fake-cert");
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
}
|
||
|
|
||
|
function test_register_certificate() {
|
||
|
do_test_pending();
|
||
|
let _callerId = null;
|
||
|
|
||
|
setup_provisioning(
|
||
|
TEST_USER,
|
||
|
function(caller) {
|
||
|
_callerId = caller.id;
|
||
|
IdentityProvider.beginProvisioning(caller);
|
||
|
},
|
||
|
function(err) {
|
||
|
// we should be cool!
|
||
|
do_check_null(err);
|
||
|
|
||
|
// check that the cert is there
|
||
|
let identity = get_idstore().fetchIdentity(TEST_USER);
|
||
|
do_check_neq(identity,null);
|
||
|
do_check_eq(identity.cert, "fake-cert-42");
|
||
|
|
||
|
do_execute_soon(function check_done() {
|
||
|
// cleanup will happen after the callback is called
|
||
|
check_provision_flow_done(_callerId);
|
||
|
|
||
|
do_test_finished();
|
||
|
run_next_test();
|
||
|
});
|
||
|
},
|
||
|
{
|
||
|
beginProvisioningCallback: function(email, duration_s) {
|
||
|
IdentityProvider.genKeyPair(_callerId);
|
||
|
},
|
||
|
genKeyPairCallback: function(pk) {
|
||
|
IdentityProvider.registerCertificate(_callerId, "fake-cert-42");
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
}
|
||
|
|
||
|
|
||
|
function test_get_assertion_after_provision() {
|
||
|
do_test_pending();
|
||
|
let _callerId = null;
|
||
|
|
||
|
setup_provisioning(
|
||
|
TEST_USER,
|
||
|
function(caller) {
|
||
|
_callerId = caller.id;
|
||
|
IdentityProvider.beginProvisioning(caller);
|
||
|
},
|
||
|
function(err) {
|
||
|
// we should be cool!
|
||
|
do_check_null(err);
|
||
|
|
||
|
// check that the cert is there
|
||
|
let identity = get_idstore().fetchIdentity(TEST_USER);
|
||
|
do_check_neq(identity,null);
|
||
|
do_check_eq(identity.cert, "fake-cert-42");
|
||
|
|
||
|
do_execute_soon(function check_done() {
|
||
|
// cleanup will happen after the callback is called
|
||
|
check_provision_flow_done(_callerId);
|
||
|
|
||
|
do_test_finished();
|
||
|
run_next_test();
|
||
|
});
|
||
|
},
|
||
|
{
|
||
|
beginProvisioningCallback: function(email, duration_s) {
|
||
|
IdentityProvider.genKeyPair(_callerId);
|
||
|
},
|
||
|
genKeyPairCallback: function(pk) {
|
||
|
IdentityProvider.registerCertificate(_callerId, "fake-cert-42");
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
|
||
|
}
|
||
|
|
||
|
var TESTS = [];
|
||
|
|
||
|
TESTS.push(test_begin_provisioning);
|
||
|
TESTS.push(test_raise_provisioning_failure);
|
||
|
TESTS.push(test_genkeypair_before_begin_provisioning);
|
||
|
TESTS.push(test_genkeypair);
|
||
|
TESTS.push(test_register_certificate_before_genkeypair);
|
||
|
TESTS.push(test_register_certificate);
|
||
|
TESTS.push(test_get_assertion_after_provision);
|
||
|
|
||
|
TESTS.forEach(add_test);
|
||
|
|
||
|
function run_test() {
|
||
|
run_next_test();
|
||
|
}
|