gecko-dev/browser/components/loop/test/xpcshell/test_loopservice_registration.js

71 lines
2.2 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
Cu.import("resource://services-common/utils.js");
/**
* This file is to test general registration. Note that once successful
* registration has taken place, we can no longer test the server side
* parts as the service protects against this, hence, they need testing in
* other test files.
*/
/**
* Test that the websocket can be fully registered, and that a Loop server
* failure is reported.
*/
add_test(function test_register_websocket_success_loop_server_fail() {
mockPushHandler.registrationResult = "404";
MozLoopService.promiseRegisteredWithServers().then(() => {
do_throw("should not succeed when loop server registration fails");
}, (err) => {
// 404 is an expected failure indicated by the lack of route being set
// up on the Loop server mock. This is added in the next test.
Assert.equal(err.message, "404", "Expected no errors in websocket registration");
run_next_test();
});
});
/**
* Tests that we get a success response when both websocket and Loop server
* registration are complete.
*/
add_test(function test_register_success() {
mockPushHandler.registrationPushURL = kEndPointUrl;
mockPushHandler.registrationResult = null;
loopServer.registerPathHandler("/registration", (request, response) => {
let body = CommonUtils.readBytesFromInputStream(request.bodyInputStream);
let data = JSON.parse(body);
if (data.simplePushURLs.calls) {
Assert.equal(data.simplePushURLs.calls, kEndPointUrl,
"Should send correct calls push url");
}
if (data.simplePushURLs.rooms) {
Assert.equal(data.simplePushURLs.rooms, kEndPointUrl,
"Should send correct rooms push url");
}
response.setStatusLine(null, 200, "OK");
response.processAsync();
response.finish();
});
MozLoopService.promiseRegisteredWithServers().then(() => {
run_next_test();
}, err => {
do_throw("shouldn't error on a successful request");
});
});
function run_test() {
setupFakeLoopServer();
do_register_cleanup(function() {
Services.prefs.clearUserPref("loop.hawk-session-token");
});
run_next_test();
}