|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 Cu.import("resource://services-common/rest.js"); |
|
5 Cu.import("resource://services-sync/constants.js"); |
|
6 Cu.import("resource://services-sync/service.js"); |
|
7 Cu.import("resource://services-sync/util.js"); |
|
8 Cu.import("resource://testing-common/services/sync/utils.js"); |
|
9 |
|
10 let collections = {steam: 65.11328, |
|
11 petrol: 82.488281, |
|
12 diesel: 2.25488281}; |
|
13 |
|
14 function run_test() { |
|
15 Log.repository.getLogger("Sync.Service").level = Log.Level.Trace; |
|
16 Log.repository.getLogger("Sync.StorageRequest").level = Log.Level.Trace; |
|
17 initTestLogging(); |
|
18 |
|
19 ensureLegacyIdentityManager(); |
|
20 setBasicCredentials("johndoe", "ilovejane"); |
|
21 |
|
22 run_next_test(); |
|
23 } |
|
24 |
|
25 add_test(function test_success() { |
|
26 let handler = httpd_handler(200, "OK", JSON.stringify(collections)); |
|
27 let server = httpd_setup({"/1.1/johndoe/info/collections": handler}); |
|
28 Service.serverURL = server.baseURI + "/"; |
|
29 Service.clusterURL = server.baseURI + "/"; |
|
30 |
|
31 let request = Service.getStorageInfo("collections", function (error, info) { |
|
32 do_check_eq(error, null); |
|
33 do_check_true(Utils.deepEquals(info, collections)); |
|
34 |
|
35 // Ensure that the request is sent off with the right bits. |
|
36 do_check_true(basic_auth_matches(handler.request, |
|
37 Service.identity.username, |
|
38 Service.identity.basicPassword)); |
|
39 let expectedUA = Services.appinfo.name + "/" + Services.appinfo.version + |
|
40 " FxSync/" + WEAVE_VERSION + "." + |
|
41 Services.appinfo.appBuildID + ".desktop"; |
|
42 do_check_eq(handler.request.getHeader("User-Agent"), expectedUA); |
|
43 |
|
44 server.stop(run_next_test); |
|
45 }); |
|
46 do_check_true(request instanceof RESTRequest); |
|
47 }); |
|
48 |
|
49 add_test(function test_invalid_type() { |
|
50 do_check_throws(function () { |
|
51 Service.getStorageInfo("invalid", function (error, info) { |
|
52 do_throw("Shouldn't get here!"); |
|
53 }); |
|
54 }); |
|
55 run_next_test(); |
|
56 }); |
|
57 |
|
58 add_test(function test_network_error() { |
|
59 Service.getStorageInfo(INFO_COLLECTIONS, function (error, info) { |
|
60 do_check_eq(error.result, Cr.NS_ERROR_CONNECTION_REFUSED); |
|
61 do_check_eq(info, null); |
|
62 run_next_test(); |
|
63 }); |
|
64 }); |
|
65 |
|
66 add_test(function test_http_error() { |
|
67 let handler = httpd_handler(500, "Oh noez", "Something went wrong!"); |
|
68 let server = httpd_setup({"/1.1/johndoe/info/collections": handler}); |
|
69 Service.serverURL = server.baseURI + "/"; |
|
70 Service.clusterURL = server.baseURI + "/"; |
|
71 |
|
72 let request = Service.getStorageInfo(INFO_COLLECTIONS, function (error, info) { |
|
73 do_check_eq(error.status, 500); |
|
74 do_check_eq(info, null); |
|
75 server.stop(run_next_test); |
|
76 }); |
|
77 }); |
|
78 |
|
79 add_test(function test_invalid_json() { |
|
80 let handler = httpd_handler(200, "OK", "Invalid JSON"); |
|
81 let server = httpd_setup({"/1.1/johndoe/info/collections": handler}); |
|
82 Service.serverURL = server.baseURI + "/"; |
|
83 Service.clusterURL = server.baseURI + "/"; |
|
84 |
|
85 let request = Service.getStorageInfo(INFO_COLLECTIONS, function (error, info) { |
|
86 do_check_eq(error.name, "SyntaxError"); |
|
87 do_check_eq(info, null); |
|
88 server.stop(run_next_test); |
|
89 }); |
|
90 }); |