1
Cu.import("resource://services-sync/util.js");
2
Cu.import("resource://services-sync/service.js");
7
function send(statusCode, status, body) {
8
return function(request, response) {
9
requestBody = readBytesFromInputStream(request.bodyInputStream);
10
if (request.hasHeader("X-Weave-Secret")) {
11
secretHeader = request.getHeader("X-Weave-Secret");
14
response.setStatusLine(request.httpVersion, statusCode, status);
15
response.bodyOutputStream.write(body, body.length);
19
let server = httpd_setup({
20
"/user/1.0/johndoe": send(200, "OK", "0"),
21
"/user/1.0/janedoe": send(400, "Bad Request", "2"),
22
"/user/1.0/jimdoe": send(500, "Server Error", "Server Error")
25
Weave.Service.serverURL = "http://localhost:8080/";
27
_("Create an account.");
28
let res = Weave.Service.createAccount("johndoe", "mysecretpw", "john@doe",
29
"challenge", "response");
30
do_check_eq(res, null);
31
let payload = JSON.parse(requestBody);
32
do_check_eq(payload.password, "mysecretpw");
33
do_check_eq(payload.email, "john@doe");
34
do_check_eq(payload["captcha-challenge"], "challenge");
35
do_check_eq(payload["captcha-response"], "response");
37
_("A non-ASCII password is UTF-8 encoded.");
38
res = Weave.Service.createAccount("johndoe", "moneyislike$\u20ac\xa5\u5143",
39
"john@doe", "challenge", "response");
40
do_check_eq(res, null);
41
payload = JSON.parse(requestBody);
42
do_check_eq(payload.password,
43
Utils.encodeUTF8("moneyislike$\u20ac\xa5\u5143"));
45
_("Invalid captcha or other user-friendly error.");
46
res = Weave.Service.createAccount("janedoe", "anothersecretpw", "jane@doe",
47
"challenge", "response");
48
do_check_eq(res, "invalid-captcha");
50
_("Generic server error.");
51
res = Weave.Service.createAccount("jimdoe", "preciousss", "jim@doe",
52
"challenge", "response");
53
do_check_eq(res, "generic-server-error");
55
_("Admin secret preference is passed as HTTP header token.");
56
Weave.Svc.Prefs.set("admin-secret", "my-server-secret");
57
res = Weave.Service.createAccount("johndoe", "mysecretpw", "john@doe",
58
"challenge", "response");
59
do_check_eq(secretHeader, "my-server-secret");
62
Weave.Svc.Prefs.resetBranch("");
63
server.stop(function() {});