~ubuntu-branches/ubuntu/oneiric/weave/oneiric

« back to all changes in this revision

Viewing changes to services/sync/tests/unit/test_service_createAccount.js

  • Committer: Bazaar Package Importer
  • Author(s): Micah Gersten
  • Date: 2010-08-11 00:35:15 UTC
  • mfrom: (3.1.2 sid)
  • Revision ID: james.westby@ubuntu.com-20100811003515-o3jbh826bnd1syjv
Tags: 1.4.3-1ubuntu1
* Add -fshort-wchar to CXXFLAGS to fix FTBFS in Ubuntu
  - update debian/rules 

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Cu.import("resource://services-sync/util.js");
 
2
Cu.import("resource://services-sync/service.js");
 
3
 
 
4
function run_test() {
 
5
  var requestBody;
 
6
  var secretHeader;
 
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");
 
12
      }
 
13
 
 
14
      response.setStatusLine(request.httpVersion, statusCode, status);
 
15
      response.bodyOutputStream.write(body, body.length);
 
16
    };
 
17
  }
 
18
 
 
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")
 
23
  });
 
24
  try {
 
25
    Weave.Service.serverURL = "http://localhost:8080/";
 
26
 
 
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");
 
36
 
 
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"));
 
44
 
 
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");
 
49
 
 
50
    _("Generic server error.");
 
51
    res = Weave.Service.createAccount("jimdoe", "preciousss", "jim@doe",
 
52
                                      "challenge", "response");
 
53
    do_check_eq(res, "generic-server-error");
 
54
 
 
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");
 
60
 
 
61
  } finally {
 
62
    Weave.Svc.Prefs.resetBranch("");
 
63
    server.stop(function() {});
 
64
  }
 
65
}