зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1044051 - MobileIdentityClient tests. r=spenrose
This commit is contained in:
Родитель
47cb6a754d
Коммит
fdfb3413cd
|
@ -0,0 +1,252 @@
|
|||
/* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
"use strict";
|
||||
|
||||
Cu.import("resource://services-common/utils.js");
|
||||
Cu.import("resource://testing-common/httpd.js");
|
||||
Cu.import("resource://gre/modules/MobileIdentityClient.jsm");
|
||||
|
||||
/* Setup */
|
||||
|
||||
do_get_profile();
|
||||
|
||||
const PREF_FORCE_HTTPS = "services.mobileid.forcehttps";
|
||||
Services.prefs.setBoolPref(PREF_FORCE_HTTPS, false);
|
||||
|
||||
let client;
|
||||
let server = new HttpServer();
|
||||
|
||||
function httpd_setup(handlers, port = -1) {
|
||||
for (let path in handlers) {
|
||||
server.registerPathHandler(path, handlers[path]);
|
||||
}
|
||||
|
||||
try {
|
||||
server.start(port);
|
||||
} catch (ex) {
|
||||
dump("ERROR starting server on port " + port + ". Already a process listening?");
|
||||
do_throw(ex);
|
||||
}
|
||||
|
||||
// Set the base URI for convenience.
|
||||
let i = server.identity;
|
||||
server.baseURI = i.primaryScheme + "://" + i.primaryHost + ":" + i.primaryPort;
|
||||
|
||||
return server;
|
||||
}
|
||||
|
||||
function writeResp(response, msg) {
|
||||
if (typeof msg === "object") {
|
||||
msg = JSON.stringify(msg);
|
||||
}
|
||||
response.bodyOutputStream.write(msg, msg.length);
|
||||
}
|
||||
|
||||
function getBody(request) {
|
||||
let body = CommonUtils.readBytesFromInputStream(request.bodyInputStream);
|
||||
return JSON.parse(body);
|
||||
}
|
||||
|
||||
function run_test() {
|
||||
httpd_setup({
|
||||
"/discover": function(request, response) {
|
||||
let body = getBody(request);
|
||||
response.setStatusLine(null, 200, "Ok");
|
||||
writeResp(response, {
|
||||
msisdn: body.msisdn,
|
||||
mcc: body.mcc,
|
||||
mnc: body.mnc,
|
||||
roaming: body.roaming
|
||||
});
|
||||
},
|
||||
"/register": function(request, response) {
|
||||
response.setStatusLine(null, 204);
|
||||
},
|
||||
"/sms/mt/verify": function(request, response) {
|
||||
let body = getBody(request);
|
||||
response.setStatusLine(null, 200, "Ok");
|
||||
writeResp(response, {
|
||||
msisdn: body.msisdn,
|
||||
mcc: body.mcc,
|
||||
mnc: body.mnc,
|
||||
shortVerificationCode: body.shortVerificationCode
|
||||
});
|
||||
},
|
||||
"/sms/verify_code": function(request, response) {
|
||||
let body = getBody(request);
|
||||
response.setStatusLine(null, 200, "Ok");
|
||||
writeResp(response, {
|
||||
code: body.code
|
||||
});
|
||||
},
|
||||
"/certificate/sign": function(request, response) {
|
||||
let body = getBody(request);
|
||||
response.setStatusLine(null, 200, "Ok");
|
||||
writeResp(response, {
|
||||
duration: body.duration,
|
||||
publicKey: body.publicKey
|
||||
});
|
||||
},
|
||||
"/unregister": function(request, response) {
|
||||
response.setStatusLine(null, 500);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
client = new MobileIdentityClient(server.baseURI);
|
||||
|
||||
run_next_test();
|
||||
}
|
||||
|
||||
/* Tests */
|
||||
|
||||
add_test(function test_discover() {
|
||||
do_print("= Test /discover =");
|
||||
|
||||
do_test_pending();
|
||||
|
||||
let msisdn = "msisdn";
|
||||
let mcc = "mcc";
|
||||
let mnc = "mnc";
|
||||
let roaming = true;
|
||||
|
||||
client.discover(msisdn, mcc, mnc, roaming).then(
|
||||
(response) => {
|
||||
// The request should succeed and a response should be given.
|
||||
// We simply check that the parameters given with the request are
|
||||
// successfully progressed to the server.
|
||||
do_check_eq(response.msisdn, msisdn);
|
||||
do_check_eq(response.mcc, mcc);
|
||||
do_check_eq(response.mnc, mnc);
|
||||
do_check_eq(response.roaming, roaming);
|
||||
do_test_finished();
|
||||
run_next_test();
|
||||
},
|
||||
(error) => {
|
||||
do_throw("Should not throw error when handling a 200 response");
|
||||
do_test_finished();
|
||||
run_next_test();
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
add_test(function test_sms_mt_verify() {
|
||||
do_print("= Test /sms/mt/verify =");
|
||||
|
||||
do_test_pending();
|
||||
|
||||
let msisdn = "msisdn";
|
||||
let mcc = "mcc";
|
||||
let mnc = "mnc";
|
||||
let shortCode = true;
|
||||
|
||||
client.smsMtVerify("aToken", msisdn, mcc, mnc, shortCode).then(
|
||||
(response) => {
|
||||
// The request should succeed and a response should be given.
|
||||
// We simply check that the parameters given with the request are
|
||||
// successfully progressed to the server.
|
||||
do_check_eq(response.msisdn, msisdn);
|
||||
do_check_eq(response.mcc, mcc);
|
||||
do_check_eq(response.mnc, mnc);
|
||||
do_check_eq(response.shortVerificationCode, shortCode);
|
||||
do_test_finished();
|
||||
run_next_test();
|
||||
},
|
||||
(error) => {
|
||||
do_throw("Should not throw error when handling a 200 response");
|
||||
do_test_finished();
|
||||
run_next_test();
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
add_test(function test_verify_code() {
|
||||
do_print("= Test /sms/verify_code =");
|
||||
|
||||
do_test_pending();
|
||||
|
||||
let code = "code";
|
||||
|
||||
client.verifyCode("aToken", code).then(
|
||||
(response) => {
|
||||
// The request should succeed and a response should be given.
|
||||
// We simply check that the parameters given with the request are
|
||||
// successfully progressed to the server.
|
||||
do_check_eq(response.code, code);
|
||||
do_test_finished();
|
||||
run_next_test();
|
||||
},
|
||||
(error) => {
|
||||
do_throw("Should not throw error when handling a 200 response");
|
||||
do_test_finished();
|
||||
run_next_test();
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
add_test(function test_certificate_sign() {
|
||||
do_print("= Test /certificate/sign =");
|
||||
|
||||
do_test_pending();
|
||||
|
||||
let duration = "duration";
|
||||
let publicKey = "publicKey";
|
||||
|
||||
client.sign("aToken", duration, publicKey).then(
|
||||
(response) => {
|
||||
// The request should succeed and a response should be given.
|
||||
// We simply check that the parameters given with the request are
|
||||
// successfully progressed to the server.
|
||||
do_check_eq(response.duration, duration);
|
||||
do_check_eq(response.publicKey, publicKey);
|
||||
do_test_finished();
|
||||
run_next_test();
|
||||
},
|
||||
(error) => {
|
||||
do_throw("Should not throw error when handling a 200 response");
|
||||
do_test_finished();
|
||||
run_next_test();
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
add_test(function test_204_response() {
|
||||
do_print("= Test /register and 204 No Content response =");
|
||||
|
||||
do_test_pending();
|
||||
|
||||
client.register().then(
|
||||
(response) => {
|
||||
// The request should succeed but no response body should be returned.
|
||||
do_check_eq(response, undefined);
|
||||
do_test_finished();
|
||||
run_next_test();
|
||||
},
|
||||
(error) => {
|
||||
do_throw("Should not throw error when handling a 204 response");
|
||||
do_test_finished();
|
||||
run_next_test();
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
add_test(function test_500_response() {
|
||||
do_print("= Test /unregister and 500 response =");
|
||||
|
||||
do_test_pending();
|
||||
|
||||
client.unregister("aToken").then(
|
||||
(response) => {
|
||||
// The request shouldn't succeed.
|
||||
do_throw("We are supposed to get an error");
|
||||
do_test_finished();
|
||||
run_next_test();
|
||||
},
|
||||
(error) => {
|
||||
do_check_eq(error, "UNKNOWN");
|
||||
do_test_finished();
|
||||
run_next_test();
|
||||
}
|
||||
);
|
||||
});
|
|
@ -3,3 +3,4 @@ head = head.js
|
|||
tail =
|
||||
|
||||
[test_mobileid_manager.js]
|
||||
[test_mobileid_client.js]
|
||||
|
|
Загрузка…
Ссылка в новой задаче