1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/services/sync/tests/unit/test_service_createAccount.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,75 @@ 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://services-sync/util.js"); 1.8 +Cu.import("resource://services-sync/service.js"); 1.9 +Cu.import("resource://testing-common/services/sync/utils.js"); 1.10 + 1.11 +function run_test() { 1.12 + initTestLogging("Trace"); 1.13 + 1.14 + let requestBody; 1.15 + let secretHeader; 1.16 + function send(statusCode, status, body) { 1.17 + return function(request, response) { 1.18 + requestBody = readBytesFromInputStream(request.bodyInputStream); 1.19 + if (request.hasHeader("X-Weave-Secret")) { 1.20 + secretHeader = request.getHeader("X-Weave-Secret"); 1.21 + } 1.22 + 1.23 + response.setStatusLine(request.httpVersion, statusCode, status); 1.24 + response.bodyOutputStream.write(body, body.length); 1.25 + }; 1.26 + } 1.27 + 1.28 + do_test_pending(); 1.29 + let server = httpd_setup({ 1.30 + // john@doe.com 1.31 + "/user/1.0/7wohs32cngzuqt466q3ge7indszva4of": send(200, "OK", "0"), 1.32 + // jane@doe.com 1.33 + "/user/1.0/vuuf3eqgloxpxmzph27f5a6ve7gzlrms": send(400, "Bad Request", "2"), 1.34 + // jim@doe.com 1.35 + "/user/1.0/vz6fhecgw5t3sgx3a4cektoiokyczkqd": send(500, "Server Error", "Server Error") 1.36 + }); 1.37 + try { 1.38 + Service.serverURL = server.baseURI; 1.39 + 1.40 + _("Create an account."); 1.41 + let res = Service.createAccount("john@doe.com", "mysecretpw", 1.42 + "challenge", "response"); 1.43 + do_check_eq(res, null); 1.44 + let payload = JSON.parse(requestBody); 1.45 + do_check_eq(payload.password, "mysecretpw"); 1.46 + do_check_eq(payload.email, "john@doe.com"); 1.47 + do_check_eq(payload["captcha-challenge"], "challenge"); 1.48 + do_check_eq(payload["captcha-response"], "response"); 1.49 + 1.50 + _("A non-ASCII password is UTF-8 encoded."); 1.51 + const moneyPassword = "moneyislike$£¥"; 1.52 + res = Service.createAccount("john@doe.com", moneyPassword, 1.53 + "challenge", "response"); 1.54 + do_check_eq(res, null); 1.55 + payload = JSON.parse(requestBody); 1.56 + do_check_eq(payload.password, Utils.encodeUTF8(moneyPassword)); 1.57 + 1.58 + _("Invalid captcha or other user-friendly error."); 1.59 + res = Service.createAccount("jane@doe.com", "anothersecretpw", 1.60 + "challenge", "response"); 1.61 + do_check_eq(res, "invalid-captcha"); 1.62 + 1.63 + _("Generic server error."); 1.64 + res = Service.createAccount("jim@doe.com", "preciousss", 1.65 + "challenge", "response"); 1.66 + do_check_eq(res, "generic-server-error"); 1.67 + 1.68 + _("Admin secret preference is passed as HTTP header token."); 1.69 + Svc.Prefs.set("admin-secret", "my-server-secret"); 1.70 + res = Service.createAccount("john@doe.com", "mysecretpw", 1.71 + "challenge", "response"); 1.72 + do_check_eq(secretHeader, "my-server-secret"); 1.73 + 1.74 + } finally { 1.75 + Svc.Prefs.resetBranch(""); 1.76 + server.stop(do_test_finished); 1.77 + } 1.78 +}