Bug 884421 - Automatic network port selection for /services tests; r=rnewman

This commit is contained in:
Gregory Szorc 2013-07-16 17:14:21 -07:00
parent 846fda3eaa
commit 629ed5fed5
54 changed files with 705 additions and 742 deletions

View File

@ -22,12 +22,10 @@ Cu.import("resource://testing-common/httpd.js");
*
* The Bagheera server is essentially a glorified document store.
*/
this.BagheeraServer = function BagheeraServer(serverURI="http://localhost") {
this.BagheeraServer = function BagheeraServer() {
this._log = Log4Moz.repository.getLogger("metrics.BagheeraServer");
this.serverURI = serverURI;
this.server = new HttpServer();
this.port = 8080;
this.namespaces = {};
this.allowAllNamespaces = false;
@ -126,15 +124,14 @@ BagheeraServer.prototype = {
this.namespaces[ns] = {};
},
start: function start(port) {
if (!port) {
throw new Error("port argument must be specified.");
}
this.port = port;
start: function start(port=-1) {
this.server.registerPrefixHandler("/", this._handleRequest.bind(this));
this.server.start(port);
let i = this.server.identity;
this.serverURI = i.primaryScheme + "://" + i.primaryHost + ":" +
i.primaryPort + "/";
this.port = i.primaryPort;
},
stop: function stop(cb) {

View File

@ -882,7 +882,6 @@ this.StorageServer = function StorageServer(callback) {
StorageServer.prototype = {
DEFAULT_QUOTA: 1024 * 1024, // # bytes.
port: 8080,
server: null, // HttpServer.
users: null, // Map of username => {collections, password}.
@ -898,8 +897,8 @@ StorageServer.prototype = {
* Start the StorageServer's underlying HTTP server.
*
* @param port
* The numeric port on which to start. A falsy value implies the
* default (8080).
* The numeric port on which to start. A falsy value implies to
* select any available port.
* @param cb
* A callback function (of no arguments) which is invoked after
* startup.
@ -909,11 +908,14 @@ StorageServer.prototype = {
this._log.warn("Warning: server already started on " + this.port);
return;
}
if (port) {
this.port = port;
if (!port) {
port = -1;
}
this.port = port;
try {
this.server.start(this.port);
this.port = this.server.identity.primaryPort;
this.started = true;
if (cb) {
cb();
@ -932,10 +934,10 @@ StorageServer.prototype = {
* Start the server synchronously.
*
* @param port
* The numeric port on which to start. A falsy value implies the
* default (8080).
* The numeric port on which to start. The default is to choose
* any available port.
*/
startSynchronous: function startSynchronous(port) {
startSynchronous: function startSynchronous(port=-1) {
let cb = Async.makeSpinningCallback();
this.start(port, cb);
cb.wait();

View File

@ -3,9 +3,6 @@
const {classes: Cc, interfaces: Ci, results: Cr, utils: Cu, manager: Cm} = Components;
// Where to bind test HTTP servers to.
const TEST_SERVER_URL = "http://localhost:8080/";
let gSyncProfile = do_get_profile();
Cu.import("resource://gre/modules/XPCOMUtils.jsm");

View File

@ -46,18 +46,7 @@ function do_check_throws(aFunc, aResult, aStack) {
*/
let _ = function(some, debug, text, to) print(Array.slice(arguments).join(" "));
/**
* Obtain a port number to run a server on.
*
* In the ideal world, this would be dynamic so multiple servers could be run
* in parallel.
*/
function get_server_port() {
return 8080;
}
function httpd_setup (handlers, port) {
let port = port || 8080;
function httpd_setup (handlers, port=-1) {
let server = new HttpServer();
for (let path in handlers) {
server.registerPathHandler(path, handlers[path]);
@ -73,6 +62,10 @@ function httpd_setup (handlers, port) {
do_throw(ex);
}
// Set the base URI for convenience.
let i = server.identity;
server.baseURI = i.primaryScheme + "://" + i.primaryHost + ":" + i.primaryPort;
return server;
}

View File

@ -9,15 +9,11 @@ Cu.import("resource://testing-common/services-common/bagheeraserver.js");
Cu.import("resource://gre/modules/Promise.jsm");
Cu.import("resource://gre/modules/Task.jsm");
const PORT = 8080;
function getClientAndServer() {
let server = new BagheeraServer();
server.start();
function getClientAndServer(port=PORT) {
let uri = "http://localhost";
let server = new BagheeraServer(uri);
server.start(port);
let client = new BagheeraClient(uri + ":" + port);
let client = new BagheeraClient(server.serverURI);
return [client, server];
}
@ -28,13 +24,13 @@ function run_test() {
}
add_test(function test_constructor() {
let client = new BagheeraClient("http://localhost:8080/");
let client = new BagheeraClient("http://localhost:1234/");
run_next_test();
});
add_test(function test_post_json_transport_failure() {
let client = new BagheeraClient("http://localhost:8080/");
let client = new BagheeraClient("http://localhost:1234/");
client.uploadJSON("foo", "bar", {}).then(function onResult(result) {
do_check_false(result.transportSuccess);
@ -138,4 +134,4 @@ add_test(function test_delete_document() {
server.stop(run_next_test);
});
});
});

View File

@ -5,8 +5,6 @@
Cu.import("resource://testing-common/services-common/bagheeraserver.js");
const PORT = 8080;
function run_test() {
run_next_test();
}
@ -24,22 +22,9 @@ add_test(function test_server_empty() {
run_next_test();
});
add_test(function test_server_start_no_port() {
let server = new BagheeraServer();
try {
server.start();
} catch (ex) {
do_check_true(ex.message.startsWith("port argument must be"));
}
run_next_test();
});
add_test(function test_server_start() {
let server = new BagheeraServer();
server.start(PORT);
server.start();
server.stop(run_next_test);
});

View File

@ -6,8 +6,6 @@ Cu.import("resource://services-common/log4moz.js");
Cu.import("resource://services-common/rest.js");
Cu.import("resource://services-common/utils.js");
const TEST_RESOURCE_URL = TEST_SERVER_URL + "resource";
//DEBUG = true;
function run_test() {
@ -74,10 +72,10 @@ add_test(function test_proxy_auth_redirect() {
"/original": original,
"/pac3": pacHandler
});
PACSystemSettings.PACURI = "http://localhost:8080/pac3";
PACSystemSettings.PACURI = server.baseURI + "/pac3";
installFakePAC();
let res = new RESTRequest("http://localhost:8080/original");
let res = new RESTRequest(server.baseURI + "/original");
res.get(function (error) {
do_check_true(pacFetched);
do_check_true(fetched);
@ -112,8 +110,7 @@ add_test(function test_simple_get() {
let handler = httpd_handler(200, "OK", "Huzzah!");
let server = httpd_setup({"/resource": handler});
let uri = TEST_RESOURCE_URL;
let request = new RESTRequest(uri).get(function (error) {
let request = new RESTRequest(server.baseURI + "/resource").get(function (error) {
do_check_eq(error, null);
do_check_eq(this.status, this.COMPLETED);
@ -134,7 +131,7 @@ add_test(function test_get() {
let handler = httpd_handler(200, "OK", "Huzzah!");
let server = httpd_setup({"/resource": handler});
let request = new RESTRequest(TEST_RESOURCE_URL);
let request = new RESTRequest(server.baseURI + "/resource");
do_check_eq(request.status, request.NOT_SENT);
request.onProgress = request.onComplete = function () {
@ -198,7 +195,7 @@ add_test(function test_get_utf8() {
}});
// Check if charset in Content-Type is propertly interpreted.
let request1 = new RESTRequest(TEST_RESOURCE_URL);
let request1 = new RESTRequest(server.baseURI + "/resource");
request1.get(function(error) {
do_check_null(error);
@ -209,7 +206,7 @@ add_test(function test_get_utf8() {
// Check that we default to UTF-8 if Content-Type doesn't have a charset.
charset = false;
let request2 = new RESTRequest(TEST_RESOURCE_URL);
let request2 = new RESTRequest(server.baseURI + "/resource");
request2.get(function(error) {
do_check_null(error);
@ -245,7 +242,7 @@ add_test(function test_charsets() {
}});
// Check that provided charset overrides hint.
let request1 = new RESTRequest(TEST_RESOURCE_URL);
let request1 = new RESTRequest(server.baseURI + "/resource");
request1.charset = "not-a-charset";
request1.get(function(error) {
do_check_null(error);
@ -258,7 +255,7 @@ add_test(function test_charsets() {
// Check that hint is used if Content-Type doesn't have a charset.
charset = false;
let request2 = new RESTRequest(TEST_RESOURCE_URL);
let request2 = new RESTRequest(server.baseURI + "/resource");
request2.charset = "us-ascii";
request2.get(function(error) {
do_check_null(error);
@ -280,7 +277,7 @@ add_test(function test_put() {
let handler = httpd_handler(200, "OK", "Got it!");
let server = httpd_setup({"/resource": handler});
let request = new RESTRequest(TEST_RESOURCE_URL);
let request = new RESTRequest(server.baseURI + "/resource");
do_check_eq(request.status, request.NOT_SENT);
request.onProgress = request.onComplete = function () {
@ -329,7 +326,7 @@ add_test(function test_post() {
let handler = httpd_handler(200, "OK", "Got it!");
let server = httpd_setup({"/resource": handler});
let request = new RESTRequest(TEST_RESOURCE_URL);
let request = new RESTRequest(server.baseURI + "/resource");
do_check_eq(request.status, request.NOT_SENT);
request.onProgress = request.onComplete = function () {
@ -378,7 +375,7 @@ add_test(function test_delete() {
let handler = httpd_handler(200, "OK", "Got it!");
let server = httpd_setup({"/resource": handler});
let request = new RESTRequest(TEST_RESOURCE_URL);
let request = new RESTRequest(server.baseURI + "/resource");
do_check_eq(request.status, request.NOT_SENT);
request.onProgress = request.onComplete = function () {
@ -424,7 +421,7 @@ add_test(function test_get_404() {
let handler = httpd_handler(404, "Not Found", "Cannae find it!");
let server = httpd_setup({"/resource": handler});
let request = new RESTRequest(TEST_RESOURCE_URL);
let request = new RESTRequest(server.baseURI + "/resource");
request.get(function (error) {
do_check_eq(error, null);
@ -450,7 +447,7 @@ add_test(function test_put_json() {
injson: "format",
number: 42
};
let request = new RESTRequest(TEST_RESOURCE_URL);
let request = new RESTRequest(server.baseURI + "/resource");
request.put(sample_data, function (error) {
do_check_eq(error, null);
@ -480,7 +477,7 @@ add_test(function test_post_json() {
injson: "format",
number: 42
};
let request = new RESTRequest(TEST_RESOURCE_URL);
let request = new RESTRequest(server.baseURI + "/resource");
request.post(sample_data, function (error) {
do_check_eq(error, null);
@ -504,7 +501,7 @@ add_test(function test_put_override_content_type() {
let handler = httpd_handler(200, "OK");
let server = httpd_setup({"/resource": handler});
let request = new RESTRequest(TEST_RESOURCE_URL);
let request = new RESTRequest(server.baseURI + "/resource");
request.setHeader("Content-Type", "application/lolcat");
request.put("O HAI!!1!", function (error) {
do_check_eq(error, null);
@ -529,7 +526,7 @@ add_test(function test_post_override_content_type() {
let handler = httpd_handler(200, "OK");
let server = httpd_setup({"/resource": handler});
let request = new RESTRequest(TEST_RESOURCE_URL);
let request = new RESTRequest(server.baseURI + "/resource");
request.setHeader("Content-Type", "application/lolcat");
request.post("O HAI!!1!", function (error) {
do_check_eq(error, null);
@ -559,7 +556,7 @@ add_test(function test_get_no_headers() {
"connection", "pragma", "cache-control",
"content-length"];
new RESTRequest(TEST_RESOURCE_URL).get(function (error) {
new RESTRequest(server.baseURI + "/resource").get(function (error) {
do_check_eq(error, null);
do_check_eq(this.response.status, 200);
@ -584,8 +581,8 @@ add_test(function test_changing_uri() {
let handler = httpd_handler(200, "OK");
let server = httpd_setup({"/resource": handler});
let request = new RESTRequest("http://localhost:8080/the-wrong-resource");
request.uri = CommonUtils.makeURI(TEST_RESOURCE_URL);
let request = new RESTRequest("http://localhost:1234/the-wrong-resource");
request.uri = CommonUtils.makeURI(server.baseURI + "/resource");
request.get(function (error) {
do_check_eq(error, null);
do_check_eq(this.response.status, 200);
@ -600,7 +597,7 @@ add_test(function test_request_setHeader() {
let handler = httpd_handler(200, "OK");
let server = httpd_setup({"/resource": handler});
let request = new RESTRequest(TEST_RESOURCE_URL);
let request = new RESTRequest(server.baseURI + "/resource");
request.setHeader("X-What-Is-Weave", "awesome");
request.setHeader("X-WHAT-is-Weave", "more awesomer");
@ -629,7 +626,7 @@ add_test(function test_response_headers() {
response.setStatusLine(request.httpVersion, 200, "OK");
}
let server = httpd_setup({"/resource": handler});
let request = new RESTRequest(TEST_RESOURCE_URL);
let request = new RESTRequest(server.baseURI + "/resource");
request.get(function (error) {
do_check_eq(error, null);
@ -649,7 +646,7 @@ add_test(function test_response_headers() {
* (e.g. NS_ERROR_CONNECTION_REFUSED).
*/
add_test(function test_connection_refused() {
let request = new RESTRequest(TEST_RESOURCE_URL);
let request = new RESTRequest("http://localhost:1234/resource");
request.onProgress = function onProgress() {
do_throw("Shouldn't have called request.onProgress()!");
};
@ -671,7 +668,7 @@ add_test(function test_abort() {
}
let server = httpd_setup({"/resource": handler});
let request = new RESTRequest(TEST_RESOURCE_URL);
let request = new RESTRequest(server.baseURI + "/resource");
// Aborting a request that hasn't been sent yet is pointless and will throw.
do_check_throws(function () {
@ -709,9 +706,12 @@ add_test(function test_timeout() {
// why you really only want to make one HTTP request to this server ever.
server_connection = connection;
};
server.start(8080);
server.start();
let identity = server.identity;
let uri = identity.primaryScheme + "://" + identity.primaryHost + ":" +
identity.primaryPort;
let request = new RESTRequest(TEST_RESOURCE_URL);
let request = new RESTRequest(uri + "/resource");
request.timeout = 0.1; // 100 milliseconds
request.get(function (error) {
do_check_eq(error.result, Cr.NS_ERROR_NET_TIMEOUT);
@ -731,7 +731,7 @@ add_test(function test_exception_in_onProgress() {
let handler = httpd_handler(200, "OK", "Foobar");
let server = httpd_setup({"/resource": handler});
let request = new RESTRequest(TEST_RESOURCE_URL);
let request = new RESTRequest(server.baseURI + "/resource");
request.onProgress = function onProgress() {
it.does.not.exist();
};
@ -753,13 +753,14 @@ add_test(function test_new_channel() {
}
let redirectRequested = false;
let redirectURL;
function redirectHandler(metadata, response) {
checkUA(metadata);
redirectRequested = true;
let body = "Redirecting";
response.setStatusLine(metadata.httpVersion, 307, "TEMPORARY REDIRECT");
response.setHeader("Location", "http://localhost:8081/resource");
response.setHeader("Location", redirectURL);
response.bodyOutputStream.write(body, body.length);
}
@ -773,8 +774,9 @@ add_test(function test_new_channel() {
response.bodyOutputStream.write(body, body.length);
}
let server1 = httpd_setup({"/redirect": redirectHandler}, 8080);
let server2 = httpd_setup({"/resource": resourceHandler}, 8081);
let server1 = httpd_setup({"/redirect": redirectHandler});
let server2 = httpd_setup({"/resource": resourceHandler});
redirectURL = server2.baseURI + "/resource";
function advance() {
server1.stop(function () {
@ -782,7 +784,7 @@ add_test(function test_new_channel() {
});
}
let request = new RESTRequest("http://localhost:8080/redirect");
let request = new RESTRequest(server1.baseURI + "/redirect");
request.setHeader("User-Agent", "foo bar");
// Swizzle in our own fakery, because this redirect is neither
@ -818,10 +820,10 @@ add_test(function test_not_sending_cookie() {
let cookieSer = Cc["@mozilla.org/cookieService;1"]
.getService(Ci.nsICookieService);
let uri = CommonUtils.makeURI("http://localhost:8080");
let uri = CommonUtils.makeURI(server.baseURI);
cookieSer.setCookieString(uri, null, "test=test; path=/;", null);
let res = new RESTRequest("http://localhost:8080/test");
let res = new RESTRequest(server.baseURI + "/test");
res.get(function (error) {
do_check_null(error);
do_check_true(this.response.success);

View File

@ -6,16 +6,17 @@ Cu.import("resource://services-common/rest.js");
Cu.import("resource://services-common/utils.js");
Cu.import("resource://testing-common/services-common/storageserver.js");
const PORT = 8080;
const DEFAULT_USER = "123";
const DEFAULT_PASSWORD = "password";
/**
* Helper function to prepare a RESTRequest against the server.
*/
function localRequest(path, user=DEFAULT_USER, password=DEFAULT_PASSWORD) {
function localRequest(server, path, user=DEFAULT_USER, password=DEFAULT_PASSWORD) {
_("localRequest: " + path);
let url = "http://127.0.0.1:" + PORT + path;
let identity = server.server.identity;
let url = identity.primaryScheme + "://" + identity.primaryHost + ":" +
identity.primaryPort + path;
_("url: " + url);
let req = new RESTRequest(url);
@ -120,9 +121,8 @@ add_test(function test_creation() {
});
do_check_true(!!server);
server.start(PORT, function () {
server.start(-1, function () {
_("Started on " + server.port);
do_check_eq(server.port, PORT);
server.stop(run_next_test);
});
});
@ -131,7 +131,7 @@ add_test(function test_synchronous_start() {
_("Ensure starting using startSynchronous works.");
let server = new StorageServer();
server.startSynchronous(PORT);
server.startSynchronous();
server.stop(run_next_test);
});
@ -184,11 +184,11 @@ add_test(function test_basic_http() {
let server = new StorageServer();
server.registerUser("345", "password");
do_check_true(server.userExists("345"));
server.startSynchronous(PORT);
server.startSynchronous();
_("Started on " + server.port);
do_check_eq(server.requestCount, 0);
let req = localRequest("/2.0/storage/crypto/keys");
let req = localRequest(server, "/2.0/storage/crypto/keys");
_("req is " + req);
req.get(function (err) {
do_check_eq(null, err);
@ -200,12 +200,12 @@ add_test(function test_basic_http() {
add_test(function test_info_collections() {
let server = new StorageServer();
server.registerUser("123", "password");
server.startSynchronous(PORT);
server.startSynchronous();
let path = "/2.0/123/info/collections";
_("info/collections on empty server should be empty object.");
let request = localRequest(path, "123", "password");
let request = localRequest(server, path, "123", "password");
let error = doGetRequest(request);
do_check_eq(error, null);
do_check_eq(request.response.status, 200);
@ -213,7 +213,7 @@ add_test(function test_info_collections() {
_("Creating an empty collection should result in collection appearing.");
let coll = server.createCollection("123", "col1");
let request = localRequest(path, "123", "password");
let request = localRequest(server, path, "123", "password");
let error = doGetRequest(request);
do_check_eq(error, null);
do_check_eq(request.response.status, 200);
@ -233,11 +233,12 @@ add_test(function test_bso_get_existing() {
server.createContents("123", {
test: {"bso": {"foo": "bar"}}
});
server.startSynchronous(PORT);
server.startSynchronous();
let coll = server.user("123").collection("test");
let request = localRequest("/2.0/123/storage/test/bso", "123", "password");
let request = localRequest(server, "/2.0/123/storage/test/bso", "123",
"password");
let error = doGetRequest(request);
do_check_eq(error, null);
do_check_eq(request.response.status, 200);
@ -258,14 +259,14 @@ add_test(function test_percent_decoding() {
let server = new StorageServer();
server.registerUser("123", "password");
server.startSynchronous(PORT);
server.startSynchronous();
let coll = server.user("123").createCollection("test");
coll.insert("001", {foo: "bar"});
coll.insert("002", {bar: "foo"});
let request = localRequest("/2.0/123/storage/test?ids=001%2C002", "123",
"password");
let request = localRequest(server, "/2.0/123/storage/test?ids=001%2C002",
"123", "password");
let error = doGetRequest(request);
do_check_null(error);
do_check_eq(request.response.status, 200);
@ -283,9 +284,9 @@ add_test(function test_bso_404() {
server.createContents("123", {
test: {}
});
server.startSynchronous(PORT);
server.startSynchronous();
let request = localRequest("/2.0/123/storage/test/foo");
let request = localRequest(server, "/2.0/123/storage/test/foo");
let error = doGetRequest(request);
do_check_eq(error, null);
@ -303,7 +304,7 @@ add_test(function test_bso_if_modified_since_304() {
server.createContents("123", {
test: {bso: {foo: "bar"}}
});
server.startSynchronous(PORT);
server.startSynchronous();
let coll = server.user("123").collection("test");
do_check_neq(coll, null);
@ -312,7 +313,8 @@ add_test(function test_bso_if_modified_since_304() {
coll.timestamp -= 10000;
coll.bso("bso").modified -= 10000;
let request = localRequest("/2.0/123/storage/test/bso", "123", "password");
let request = localRequest(server, "/2.0/123/storage/test/bso",
"123", "password");
request.setHeader("X-If-Modified-Since", "" + server.serverTime());
let error = doGetRequest(request);
do_check_eq(null, error);
@ -320,7 +322,8 @@ add_test(function test_bso_if_modified_since_304() {
do_check_eq(request.response.status, 304);
do_check_false("content-type" in request.response.headers);
let request = localRequest("/2.0/123/storage/test/bso", "123", "password");
let request = localRequest(server, "/2.0/123/storage/test/bso",
"123", "password");
request.setHeader("X-If-Modified-Since", "" + (server.serverTime() - 20000));
let error = doGetRequest(request);
do_check_eq(null, error);
@ -338,7 +341,7 @@ add_test(function test_bso_if_unmodified_since() {
server.createContents("123", {
test: {bso: {foo: "bar"}}
});
server.startSynchronous(PORT);
server.startSynchronous();
let coll = server.user("123").collection("test");
do_check_neq(coll, null);
@ -346,7 +349,8 @@ add_test(function test_bso_if_unmodified_since() {
let time = coll.timestamp;
_("Ensure we get a 412 for specified times older than server time.");
let request = localRequest("/2.0/123/storage/test/bso", "123", "password");
let request = localRequest(server, "/2.0/123/storage/test/bso",
"123", "password");
request.setHeader("X-If-Unmodified-Since", time - 5000);
request.setHeader("Content-Type", "application/json");
let payload = JSON.stringify({"payload": "foobar"});
@ -355,7 +359,8 @@ add_test(function test_bso_if_unmodified_since() {
do_check_eq(request.response.status, 412);
_("Ensure we get a 204 if update goes through.");
let request = localRequest("/2.0/123/storage/test/bso", "123", "password");
let request = localRequest(server, "/2.0/123/storage/test/bso",
"123", "password");
request.setHeader("Content-Type", "application/json");
request.setHeader("X-If-Unmodified-Since", time + 1);
let error = doPutRequest(request, payload);
@ -366,7 +371,8 @@ add_test(function test_bso_if_unmodified_since() {
// Not sure why a client would send X-If-Unmodified-Since if a BSO doesn't
// exist. But, why not test it?
_("Ensure we get a 201 if creation goes through.");
let request = localRequest("/2.0/123/storage/test/none", "123", "password");
let request = localRequest(server, "/2.0/123/storage/test/none",
"123", "password");
request.setHeader("Content-Type", "application/json");
request.setHeader("X-If-Unmodified-Since", time);
let error = doPutRequest(request, payload);
@ -382,14 +388,15 @@ add_test(function test_bso_delete_not_exist() {
let server = new StorageServer();
server.registerUser("123", "password");
server.user("123").createCollection("empty");
server.startSynchronous(PORT);
server.startSynchronous();
server.callback.onItemDeleted = function onItemDeleted(username, collection,
id) {
do_throw("onItemDeleted should not have been called.");
};
let request = localRequest("/2.0/123/storage/empty/nada", "123", "password");
let request = localRequest(server, "/2.0/123/storage/empty/nada",
"123", "password");
let error = doDeleteRequest(request);
do_check_eq(error, null);
do_check_eq(request.response.status, 404);
@ -403,7 +410,7 @@ add_test(function test_bso_delete_exists() {
let server = new StorageServer();
server.registerUser("123", "password");
server.startSynchronous(PORT);
server.startSynchronous();
let coll = server.user("123").createCollection("test");
let bso = coll.insert("myid", {foo: "bar"});
@ -416,7 +423,8 @@ add_test(function test_bso_delete_exists() {
do_check_eq(id, "myid");
};
let request = localRequest("/2.0/123/storage/test/myid", "123", "password");
let request = localRequest(server, "/2.0/123/storage/test/myid",
"123", "password");
let error = doDeleteRequest(request);
do_check_eq(error, null);
do_check_eq(request.response.status, 204);
@ -424,7 +432,8 @@ add_test(function test_bso_delete_exists() {
do_check_true(coll.timestamp > timestamp);
_("On next request the BSO should not exist.");
let request = localRequest("/2.0/123/storage/test/myid", "123", "password");
let request = localRequest(server, "/2.0/123/storage/test/myid",
"123", "password");
let error = doGetRequest(request);
do_check_eq(error, null);
do_check_eq(request.response.status, 404);
@ -436,7 +445,7 @@ add_test(function test_bso_delete_unmodified() {
_("Ensure X-If-Unmodified-Since works when deleting BSOs.");
let server = new StorageServer();
server.startSynchronous(PORT);
server.startSynchronous();
server.registerUser("123", "password");
let coll = server.user("123").createCollection("test");
let bso = coll.insert("myid", {foo: "bar"});
@ -445,7 +454,7 @@ add_test(function test_bso_delete_unmodified() {
_("Issuing a DELETE with an older time should fail.");
let path = "/2.0/123/storage/test/myid";
let request = localRequest(path, "123", "password");
let request = localRequest(server, path, "123", "password");
request.setHeader("X-If-Unmodified-Since", modified - 1000);
let error = doDeleteRequest(request);
do_check_eq(error, null);
@ -454,7 +463,7 @@ add_test(function test_bso_delete_unmodified() {
do_check_neq(coll.bso("myid"), null);
_("Issuing a DELETE with a newer time should work.");
let request = localRequest(path, "123", "password");
let request = localRequest(server, path, "123", "password");
request.setHeader("X-If-Unmodified-Since", modified + 1000);
let error = doDeleteRequest(request);
do_check_eq(error, null);
@ -469,19 +478,21 @@ add_test(function test_collection_get_unmodified_since() {
let server = new StorageServer();
server.registerUser("123", "password");
server.startSynchronous(PORT);
server.startSynchronous();
let collection = server.user("123").createCollection("testcoll");
collection.insert("bso0", {foo: "bar"});
let serverModified = collection.timestamp;
let request1 = localRequest("/2.0/123/storage/testcoll", "123", "password");
let request1 = localRequest(server, "/2.0/123/storage/testcoll",
"123", "password");
request1.setHeader("X-If-Unmodified-Since", serverModified);
let error = doGetRequest(request1);
do_check_null(error);
do_check_eq(request1.response.status, 200);
let request2 = localRequest("/2.0/123/storage/testcoll", "123", "password");
let request2 = localRequest(server, "/2.0/123/storage/testcoll",
"123", "password");
request2.setHeader("X-If-Unmodified-Since", serverModified - 1);
let error = doGetRequest(request2);
do_check_null(error);
@ -495,21 +506,21 @@ add_test(function test_bso_get_unmodified_since() {
let server = new StorageServer();
server.registerUser("123", "password");
server.startSynchronous(PORT);
server.startSynchronous();
let collection = server.user("123").createCollection("testcoll");
let bso = collection.insert("bso0", {foo: "bar"});
let serverModified = bso.modified;
let request1 = localRequest("/2.0/123/storage/testcoll/bso0", "123",
"password");
let request1 = localRequest(server, "/2.0/123/storage/testcoll/bso0",
"123", "password");
request1.setHeader("X-If-Unmodified-Since", serverModified);
let error = doGetRequest(request1);
do_check_null(error);
do_check_eq(request1.response.status, 200);
let request2 = localRequest("/2.0/123/storage/testcoll/bso0", "123",
"password");
let request2 = localRequest(server, "/2.0/123/storage/testcoll/bso0",
"123", "password");
request2.setHeader("X-If-Unmodified-Since", serverModified - 1);
let error = doGetRequest(request2);
do_check_null(error);
@ -523,9 +534,9 @@ add_test(function test_missing_collection_404() {
let server = new StorageServer();
server.registerUser("123", "password");
server.startSynchronous(PORT);
server.startSynchronous();
let request = localRequest("/2.0/123/storage/none", "123", "password");
let request = localRequest(server, "/2.0/123/storage/none", "123", "password");
let error = doGetRequest(request);
do_check_eq(error, null);
do_check_eq(request.response.status, 404);
@ -539,9 +550,9 @@ add_test(function test_get_storage_405() {
let server = new StorageServer();
server.registerUser("123", "password");
server.startSynchronous(PORT);
server.startSynchronous();
let request = localRequest("/2.0/123/storage", "123", "password");
let request = localRequest(server, "/2.0/123/storage", "123", "password");
let error = doGetRequest(request);
do_check_eq(error, null);
do_check_eq(request.response.status, 405);
@ -560,9 +571,9 @@ add_test(function test_delete_storage() {
baz: {c: {bob: "law"}, blah: {law: "blog"}}
});
server.startSynchronous(PORT);
server.startSynchronous();
let request = localRequest("/2.0/123/storage", "123", "password");
let request = localRequest(server, "/2.0/123/storage", "123", "password");
let error = doDeleteRequest(request);
do_check_eq(error, null);
do_check_eq(request.response.status, 204);
@ -579,12 +590,12 @@ add_test(function test_x_num_records() {
crypto: {foos: {foo: "bar"},
bars: {foo: "baz"}}
});
server.startSynchronous(PORT);
let bso = localRequest("/2.0/123/storage/crypto/foos");
server.startSynchronous();
let bso = localRequest(server, "/2.0/123/storage/crypto/foos");
bso.get(function (err) {
// BSO fetches don't have one.
do_check_false("x-num-records" in this.response.headers);
let col = localRequest("/2.0/123/storage/crypto");
let col = localRequest(server, "/2.0/123/storage/crypto");
col.get(function (err) {
// Collection fetches do.
do_check_eq(this.response.headers["x-num-records"], "2");
@ -601,10 +612,10 @@ add_test(function test_put_delete_put() {
server.createContents("123", {
test: {bso: {foo: "bar"}}
});
server.startSynchronous(PORT);
server.startSynchronous();
_("Ensure we can PUT an existing record.");
let request1 = localRequest("/2.0/123/storage/test/bso", "123", "password");
let request1 = localRequest(server, "/2.0/123/storage/test/bso", "123", "password");
request1.setHeader("Content-Type", "application/json");
let payload1 = JSON.stringify({"payload": "foobar"});
let error1 = doPutRequest(request1, payload1);
@ -612,14 +623,14 @@ add_test(function test_put_delete_put() {
do_check_eq(request1.response.status, 204);
_("Ensure we can DELETE it.");
let request2 = localRequest("/2.0/123/storage/test/bso", "123", "password");
let request2 = localRequest(server, "/2.0/123/storage/test/bso", "123", "password");
let error2 = doDeleteRequest(request2);
do_check_eq(error2, null);
do_check_eq(request2.response.status, 204);
do_check_false("content-type" in request2.response.headers);
_("Ensure we can PUT a previously deleted record.");
let request3 = localRequest("/2.0/123/storage/test/bso", "123", "password");
let request3 = localRequest(server, "/2.0/123/storage/test/bso", "123", "password");
request3.setHeader("Content-Type", "application/json");
let payload3 = JSON.stringify({"payload": "foobar"});
let error3 = doPutRequest(request3, payload3);
@ -627,7 +638,7 @@ add_test(function test_put_delete_put() {
do_check_eq(request3.response.status, 201);
_("Ensure we can GET the re-uploaded record.");
let request4 = localRequest("/2.0/123/storage/test/bso", "123", "password");
let request4 = localRequest(server, "/2.0/123/storage/test/bso", "123", "password");
let error4 = doGetRequest(request4);
do_check_eq(error4, null);
do_check_eq(request4.response.status, 200);
@ -641,7 +652,7 @@ add_test(function test_collection_get_newer() {
let server = new StorageServer();
server.registerUser("123", "password");
server.startSynchronous(PORT);
server.startSynchronous();
let coll = server.user("123").createCollection("test");
let bso1 = coll.insert("001", {foo: "bar"});
@ -651,7 +662,7 @@ add_test(function test_collection_get_newer() {
bso2.modified = bso1.modified + 1000;
function newerRequest(newer) {
return localRequest("/2.0/123/storage/test?newer=" + newer,
return localRequest(server, "/2.0/123/storage/test?newer=" + newer,
"123", "password");
}
@ -677,4 +688,4 @@ add_test(function test_collection_get_newer() {
do_check_attribute_count(items3, 0);
server.stop(run_next_test);
});
});

View File

@ -4,8 +4,6 @@
Cu.import("resource://services-common/storageservice.js");
Cu.import("resource://testing-common/services-common/storageserver.js");
const BASE_URI = "http://localhost:8080/2.0";
function run_test() {
initTestLogging("Trace");
@ -27,8 +25,11 @@ function getEmptyServer(user=getRandomUser(), password="password") {
});
}
function getClient(user=getRandomUser(), password="password") {
let client = new StorageServiceClient(BASE_URI + "/" + user);
function getClient(server, user=getRandomUser(), password="password") {
let identity = server.server.identity;
let url = identity.primaryScheme + "://" + identity.primaryHost + ":" +
identity.primaryPort + "/2.0/" + user;
let client = new StorageServiceClient(url);
client.addListener({
onDispatch: function onDispatch(request) {
let up = user + ":" + password;
@ -41,7 +42,7 @@ function getClient(user=getRandomUser(), password="password") {
function getServerAndClient(user=getRandomUser(), password="password") {
let server = getEmptyServer(user, password);
let client = getClient(user, password);
let client = getClient(server, user, password);
return [server, client, user, password];
}
@ -50,7 +51,7 @@ add_test(function test_auth_failure_listener() {
_("Ensure the onAuthFailure listener is invoked.");
let server = getEmptyServer();
let client = getClient("324", "INVALID");
let client = getClient(server, "324", "INVALID");
client.addListener({
onAuthFailure: function onAuthFailure(client, request) {
_("onAuthFailure");
@ -66,7 +67,7 @@ add_test(function test_duplicate_listeners() {
_("Ensure that duplicate listeners aren't installed multiple times.");
let server = getEmptyServer();
let client = getClient("1234567", "BAD_PASSWORD");
let client = getClient(server, "1234567", "BAD_PASSWORD");
let invokeCount = 0;
let listener = {
@ -586,8 +587,9 @@ add_test(function test_set_bso_conditional() {
add_test(function test_set_bso_argument_errors() {
_("Ensure BSO set detects invalid arguments.");
let server = getEmptyServer();
let bso = new BasicStorageObject();
let client = getClient();
let client = getClient(server);
let threw = false;
try {
@ -625,7 +627,7 @@ add_test(function test_set_bso_argument_errors() {
threw = false;
}
run_next_test();
server.stop(run_next_test);
});
add_test(function test_set_bsos_simple() {
@ -659,7 +661,8 @@ add_test(function test_set_bsos_simple() {
add_test(function test_set_bsos_invalid_bso() {
_("Ensure that adding an invalid BSO throws.");
let client = getClient();
let server = getEmptyServer();
let client = getClient(server);
let request = client.setBSOs("testcoll");
let threw = false;
@ -684,7 +687,7 @@ add_test(function test_set_bsos_invalid_bso() {
threw = false;
}
run_next_test();
server.stop(run_next_test);
});
add_test(function test_set_bsos_newline() {

View File

@ -21,14 +21,12 @@ add_test(function test_authenticated_request() {
let id = "eyJleHBpcmVzIjogMTM2NTAxMDg5OC4x";
let key = "qTZf4ZFpAMpMoeSsX3zVRjiqmNs=";
let method = "GET";
let uri = CommonUtils.makeURI(TEST_SERVER_URL + "foo");
let nonce = btoa(CryptoUtils.generateRandomBytes(16));
let ts = Math.floor(Date.now() / 1000);
let extra = {ts: ts, nonce: nonce};
let sig = CryptoUtils.computeHTTPMACSHA1(id, key, method, uri, extra);
let auth = sig.getHeader();
let auth;
let server = httpd_setup({"/foo": function(request, response) {
do_check_true(request.hasHeader("Authorization"));
@ -38,6 +36,9 @@ add_test(function test_authenticated_request() {
response.bodyOutputStream.write(message, message.length);
}
});
let uri = CommonUtils.makeURI(server.baseURI + "/foo");
let sig = CryptoUtils.computeHTTPMACSHA1(id, key, method, uri, extra);
auth = sig.getHeader();
let req = new TokenAuthenticatedRESTRequest(uri, {id: id, key: key}, extra);
let cb = Async.makeSpinningCallback();
@ -48,4 +49,4 @@ add_test(function test_authenticated_request() {
do_check_eq(message, req.response.body);
server.stop(run_next_test);
});
});

View File

@ -36,7 +36,7 @@ add_test(function test_working_bid_exchange() {
let client = new TokenServerClient();
let cb = Async.makeSpinningCallback();
let url = TEST_SERVER_URL + "1.0/foo/1.0";
let url = server.baseURI + "/1.0/foo/1.0";
client.getTokenFromBrowserIDAssertion(url, "assertion", cb);
let result = cb.wait();
do_check_eq("object", typeof(result));
@ -93,7 +93,7 @@ add_test(function test_conditions_required_response_handling() {
});
let client = new TokenServerClient();
let url = TEST_SERVER_URL + "1.0/foo/1.0";
let url = server.baseURI + "/1.0/foo/1.0";
function onResponse(error, token) {
do_check_true(error instanceof TokenServerClientServerError);
@ -125,7 +125,7 @@ add_test(function test_invalid_403_no_content_type() {
});
let client = new TokenServerClient();
let url = TEST_SERVER_URL + "1.0/foo/1.0";
let url = server.baseURI + "/1.0/foo/1.0";
function onResponse(error, token) {
do_check_true(error instanceof TokenServerClientServerError);
@ -156,7 +156,7 @@ add_test(function test_invalid_403_bad_json() {
});
let client = new TokenServerClient();
let url = TEST_SERVER_URL + "1.0/foo/1.0";
let url = server.baseURI + "/1.0/foo/1.0";
function onResponse(error, token) {
do_check_true(error instanceof TokenServerClientServerError);
@ -184,7 +184,7 @@ add_test(function test_403_no_urls() {
});
let client = new TokenServerClient();
let url = TEST_SERVER_URL + "1.0/foo/1.0";
let url = server.baseURI + "/1.0/foo/1.0";
client.getTokenFromBrowserIDAssertion(url, "assertion",
function onResponse(error, result) {
@ -219,7 +219,7 @@ add_test(function test_send_conditions_accepted() {
});
let client = new TokenServerClient();
let url = TEST_SERVER_URL + "1.0/foo/1.0";
let url = server.baseURI + "/1.0/foo/1.0";
function onResponse(error, token) {
do_check_null(error);
@ -238,7 +238,7 @@ add_test(function test_error_404_empty() {
let server = httpd_setup();
let client = new TokenServerClient();
let url = TEST_SERVER_URL + "foo";
let url = server.baseURI + "/foo";
client.getTokenFromBrowserIDAssertion(url, "assertion", function(error, r) {
do_check_true(error instanceof TokenServerClientServerError);
do_check_eq(error.cause, "malformed-response");
@ -276,7 +276,7 @@ add_test(function test_error_404_proper_response() {
}
let client = new TokenServerClient();
let url = TEST_SERVER_URL + "1.0/foo/1.0";
let url = server.baseURI + "/1.0/foo/1.0";
client.getTokenFromBrowserIDAssertion(url, "assertion", onResponse);
});
@ -294,7 +294,7 @@ add_test(function test_bad_json() {
});
let client = new TokenServerClient();
let url = TEST_SERVER_URL + "1.0/foo/1.0";
let url = server.baseURI + "/1.0/foo/1.0";
client.getTokenFromBrowserIDAssertion(url, "assertion", function(error, r) {
do_check_neq(null, error);
do_check_eq("TokenServerClientServerError", error.name);
@ -320,7 +320,7 @@ add_test(function test_400_response() {
});
let client = new TokenServerClient();
let url = TEST_SERVER_URL + "1.0/foo/1.0";
let url = server.baseURI + "/1.0/foo/1.0";
client.getTokenFromBrowserIDAssertion(url, "assertion", function(error, r) {
do_check_neq(null, error);
do_check_eq("TokenServerClientServerError", error.name);
@ -344,7 +344,7 @@ add_test(function test_unhandled_media_type() {
}
});
let url = TEST_SERVER_URL + "1.0/foo/1.0";
let url = server.baseURI + "/1.0/foo/1.0";
let client = new TokenServerClient();
client.getTokenFromBrowserIDAssertion(url, "assertion", function(error, r) {
do_check_neq(null, error);
@ -374,7 +374,7 @@ add_test(function test_rich_media_types() {
}
});
let url = TEST_SERVER_URL + "foo";
let url = server.baseURI + "/foo";
let client = new TokenServerClient();
client.getTokenFromBrowserIDAssertion(url, "assertion", function(error, r) {
do_check_eq(null, error);
@ -401,7 +401,7 @@ add_test(function test_exception_during_callback() {
}
});
let url = TEST_SERVER_URL + "foo";
let url = server.baseURI + "/foo";
let client = new TokenServerClient();
let cb = Async.makeSpinningCallback();
let callbackCount = 0;

View File

@ -22,9 +22,7 @@ Cu.import("resource://testing-common/services/metrics/mocks.jsm");
Cu.import("resource://testing-common/services/healthreport/utils.jsm");
const SERVER_HOSTNAME = "localhost";
const SERVER_PORT = 8080;
const SERVER_URI = "http://" + SERVER_HOSTNAME + ":" + SERVER_PORT;
const DUMMY_URI = "http://localhost/";
const MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1000;
const HealthReporterState = bsp.HealthReporterState;
@ -40,7 +38,7 @@ function defineNow(policy, now) {
});
}
function getJustReporter(name, uri=SERVER_URI, inspected=false) {
function getJustReporter(name, uri=DUMMY_URI, inspected=false) {
let branch = "healthreport.testing." + name + ".";
let prefs = new Preferences(branch + "healthreport.");
@ -84,13 +82,12 @@ function getReporter(name, uri, inspected) {
function getReporterAndServer(name, namespace="test") {
return Task.spawn(function get() {
let reporter = yield getReporter(name, SERVER_URI);
reporter.serverNamespace = namespace;
let server = new BagheeraServer(SERVER_URI);
let server = new BagheeraServer();
server.createNamespace(namespace);
server.start();
server.start(SERVER_PORT);
let reporter = yield getReporter(name, server.serverURI);
reporter.serverNamespace = namespace;
throw new Task.Result([reporter, server]);
});
@ -167,7 +164,7 @@ add_task(function test_shutdown_normal() {
});
add_task(function test_shutdown_storage_in_progress() {
let reporter = yield getJustReporter("shutdown_storage_in_progress", SERVER_URI, true);
let reporter = yield getJustReporter("shutdown_storage_in_progress", DUMMY_URI, true);
reporter.onStorageCreated = function () {
print("Faking shutdown during storage initialization.");
@ -185,7 +182,7 @@ add_task(function test_shutdown_storage_in_progress() {
// results in shutdown and storage closure.
add_task(function test_shutdown_provider_manager_in_progress() {
let reporter = yield getJustReporter("shutdown_provider_manager_in_progress",
SERVER_URI, true);
DUMMY_URI, true);
reporter.onProviderManagerInitialized = function () {
print("Faking shutdown during provider manager initialization.");
@ -203,7 +200,7 @@ add_task(function test_shutdown_provider_manager_in_progress() {
// Simulates an error during provider manager initialization and verifies we shut down.
add_task(function test_shutdown_when_provider_manager_errors() {
let reporter = yield getJustReporter("shutdown_when_provider_manager_errors",
SERVER_URI, true);
DUMMY_URI, true);
reporter.onInitializeProviderManagerFinished = function () {
print("Throwing fake error.");
@ -586,7 +583,7 @@ add_task(function test_idle_daily() {
add_task(function test_data_submission_transport_failure() {
let reporter = yield getReporter("data_submission_transport_failure");
try {
reporter.serverURI = "http://localhost:8080/";
reporter.serverURI = DUMMY_URI;
reporter.serverNamespace = "test00";
let deferred = Promise.defer();
@ -873,10 +870,10 @@ add_task(function test_failure_if_not_initialized() {
});
add_task(function test_upload_on_init_failure() {
let reporter = yield getJustReporter("upload_on_init_failure", SERVER_URI, true);
let server = new BagheeraServer(SERVER_URI);
let server = new BagheeraServer();
server.start();
let reporter = yield getJustReporter("upload_on_init_failure", server.serverURI, true);
server.createNamespace(reporter.serverNamespace);
server.start(SERVER_PORT);
reporter.onInitializeProviderManagerFinished = function () {
throw new Error("Fake error during provider manager initialization.");

View File

@ -5,8 +5,6 @@
"use strict";
this.EXPORTED_SYMBOLS = [
"TEST_CLUSTER_URL",
"TEST_SERVER_URL",
"btoa", // It comes from a module import.
"encryptPayload",
"setBasicCredentials",
@ -21,9 +19,6 @@ Cu.import("resource://services-crypto/utils.js");
Cu.import("resource://testing-common/services-common/logging.js");
Cu.import("resource://testing-common/services/sync/fakeservices.js");
this.TEST_SERVER_URL = "http://localhost:8080/";
this.TEST_CLUSTER_URL = TEST_SERVER_URL;
/**
* First wait >100ms (nsITimers can take up to that much time to fire, so
* we can account for the timer in delayedAutoconnect) and then two event
@ -53,8 +48,7 @@ this.setBasicCredentials =
auth.syncKey = syncKey;
}
this.SyncTestingInfrastructure =
function SyncTestingInfrastructure(username, password, syncKey) {
this.SyncTestingInfrastructure = function (server, username, password, syncKey) {
let ns = {};
Cu.import("resource://services-sync/service.js", ns);
@ -63,8 +57,12 @@ this.SyncTestingInfrastructure =
auth.basicPassword = password || "password";
auth.syncKey = syncKey || "abcdeabcdeabcdeabcdeabcdea";
ns.Service.serverURL = TEST_SERVER_URL;
ns.Service.clusterURL = TEST_CLUSTER_URL;
let i = server.identity;
let uri = i.primaryScheme + "://" + i.primaryHost + ":" +
i.primaryPort + "/";
ns.Service.serverURL = uri;
ns.Service.clusterURL = uri;
this.logStats = initTestLogging();
this.fakeFilesystem = new FakeFilesystemService({});

View File

@ -535,7 +535,6 @@ function SyncServer(callback) {
handler._handleDefault = this.handleDefault.bind(this, handler);
}
SyncServer.prototype = {
port: 8080,
server: null, // HttpServer.
users: null, // Map of username => {collections, password}.
@ -544,7 +543,7 @@ SyncServer.prototype = {
*
* @param port
* The numeric port on which to start. A falsy value implies the
* default (8080).
* default, a randomly chosen port.
* @param cb
* A callback function (of no arguments) which is invoked after
* startup.
@ -554,23 +553,25 @@ SyncServer.prototype = {
this._log.warn("Warning: server already started on " + this.port);
return;
}
if (port) {
this.port = port;
}
try {
this.server.start(this.port);
this.server.start(port);
let i = this.server.identity;
this.port = i.primaryPort;
this.baseURI = i.primaryScheme + "://" + i.primaryHost + ":" +
i.primaryPort + "/";
this.started = true;
if (cb) {
cb();
}
} catch (ex) {
_("==========================================");
_("Got exception starting Sync HTTP server on port " + this.port);
_("Got exception starting Sync HTTP server.");
_("Error: " + Utils.exceptionStr(ex));
_("Is there a process already listening on port " + this.port + "?");
_("Is there a process already listening on port " + port + "?");
_("==========================================");
do_throw(ex);
}
},
/**

View File

@ -158,7 +158,9 @@ add_test(function test_disabled_install_semantics() {
const PASSPHRASE = "abcdeabcdeabcdeabcdeabcdea";
const ADDON_ID = "addon1@tests.mozilla.org";
new SyncTestingInfrastructure(USER, PASSWORD, PASSPHRASE);
let server = new SyncServer();
server.start();
new SyncTestingInfrastructure(server.server, USER, PASSWORD, PASSPHRASE);
generateNewKeys(Service.collectionKeys);
@ -169,10 +171,8 @@ add_test(function test_disabled_install_semantics() {
addons: {}
};
let server = new SyncServer();
server.registerUser(USER, "password");
server.createContents(USER, contents);
server.start();
let amoServer = new HttpServer();
amoServer.registerFile("/search/guid:addon1%40tests.mozilla.org",
@ -247,8 +247,6 @@ function run_test() {
Log4Moz.repository.getLogger("Sync.AddonsRepository").level =
Log4Moz.Level.Trace;
new SyncTestingInfrastructure();
reconciler.startListening();
// Don't flush to disk in the middle of an event listener!

View File

@ -13,10 +13,11 @@ Cu.import("resource://testing-common/services/sync/utils.js");
Cu.import("resource://gre/modules/Promise.jsm");
Service.engineManager.register(BookmarksEngine);
var syncTesting = new SyncTestingInfrastructure();
add_test(function bad_record_allIDs() {
let syncTesting = new SyncTestingInfrastructure();
let server = new SyncServer();
server.start();
let syncTesting = new SyncTestingInfrastructure(server.server);
_("Ensure that bad Places queries don't cause an error in getAllIDs.");
let engine = new BookmarksEngine(Service);
@ -43,11 +44,13 @@ add_test(function bad_record_allIDs() {
_("Clean up.");
PlacesUtils.bookmarks.removeItem(badRecordID);
run_next_test();
server.stop(run_next_test);
});
add_test(function test_ID_caching() {
let syncTesting = new SyncTestingInfrastructure();
let server = new SyncServer();
server.start();
let syncTesting = new SyncTestingInfrastructure(server.server);
_("Ensure that Places IDs are not cached.");
let engine = new BookmarksEngine(Service);
@ -83,7 +86,7 @@ add_test(function test_ID_caching() {
do_check_eq(newMobileID, store.idForGUID("mobile", false));
do_check_eq(store.GUIDForId(mobileID), "abcdefghijkl");
run_next_test();
server.stop(run_next_test);
});
function serverForFoo(engine) {
@ -96,11 +99,11 @@ function serverForFoo(engine) {
add_test(function test_processIncoming_error_orderChildren() {
_("Ensure that _orderChildren() is called even when _processIncoming() throws an error.");
new SyncTestingInfrastructure();
let engine = new BookmarksEngine(Service);
let store = engine._store;
let server = serverForFoo(engine);
new SyncTestingInfrastructure(server.server);
let collection = server.user("foo").collection("bookmarks");
@ -166,11 +169,10 @@ add_test(function test_processIncoming_error_orderChildren() {
add_task(function test_restorePromptsReupload() {
_("Ensure that restoring from a backup will reupload all records.");
new SyncTestingInfrastructure();
let engine = new BookmarksEngine(Service);
let store = engine._store;
let server = serverForFoo(engine);
new SyncTestingInfrastructure(server.server);
let collection = server.user("foo").collection("bookmarks");
@ -333,11 +335,10 @@ add_test(function test_mismatched_types() {
"parentid": "toolbar"
};
new SyncTestingInfrastructure();
let engine = new BookmarksEngine(Service);
let store = engine._store;
let server = serverForFoo(engine);
new SyncTestingInfrastructure(server.server);
_("GUID: " + store.GUIDForId(6, true));
@ -376,14 +377,13 @@ add_test(function test_mismatched_types() {
add_test(function test_bookmark_guidMap_fail() {
_("Ensure that failures building the GUID map cause early death.");
new SyncTestingInfrastructure();
let engine = new BookmarksEngine(Service);
let store = engine._store;
let store = engine._store;
let server = serverForFoo(engine);
let coll = server.user("foo").collection("bookmarks");
new SyncTestingInfrastructure(server.server);
// Add one item to the server.
let itemID = PlacesUtils.bookmarks.createFolder(
@ -475,10 +475,9 @@ add_test(function test_bookmark_tag_but_no_uri() {
add_test(function test_misreconciled_root() {
_("Ensure that we don't reconcile an arbitrary record with a root.");
new SyncTestingInfrastructure();
let engine = new BookmarksEngine(Service);
let store = engine._store;
let server = serverForFoo(engine);
// Log real hard for this test.
store._log.trace = store._log.debug;
@ -534,7 +533,7 @@ add_test(function test_misreconciled_root() {
do_check_eq(parentGUIDBefore, parentGUIDAfter);
do_check_eq(parentIDBefore, parentIDAfter);
run_next_test();
server.stop(run_next_test);
});
function run_test() {

View File

@ -22,8 +22,6 @@ let store = engine._store;
// Clean up after other tests. Only necessary in XULRunner.
store.wipe();
var syncTesting = new SyncTestingInfrastructure();
function newSmartBookmark(parent, uri, position, title, queryID) {
let id = PlacesUtils.bookmarks.insertBookmark(parent, uri, position, title);
PlacesUtils.annotations.setItemAnnotation(id, SMART_BOOKMARKS_ANNO,
@ -60,7 +58,8 @@ function serverForFoo(engine) {
// Verify that Places smart bookmarks have their annotation uploaded and
// handled locally.
add_test(function test_annotation_uploaded() {
new SyncTestingInfrastructure();
let server = serverForFoo(engine);
new SyncTestingInfrastructure(server.server);
let startCount = smartBookmarkCount();
@ -108,7 +107,6 @@ add_test(function test_annotation_uploaded() {
do_check_eq(smartBookmarkCount(), startCount + 1);
_("Sync record to the server.");
let server = serverForFoo(engine);
let collection = server.user("foo").collection("bookmarks");
try {
@ -175,7 +173,8 @@ add_test(function test_annotation_uploaded() {
});
add_test(function test_smart_bookmarks_duped() {
new SyncTestingInfrastructure();
let server = serverForFoo(engine);
new SyncTestingInfrastructure(server.server);
let parent = PlacesUtils.toolbarFolderId;
let uri =
@ -189,7 +188,6 @@ add_test(function test_smart_bookmarks_duped() {
let record = store.createRecord(mostVisitedGUID);
_("Prepare sync.");
let server = serverForFoo(engine);
let collection = server.user("foo").collection("bookmarks");
try {

View File

@ -58,8 +58,7 @@ add_test(function test_bad_hmac() {
try {
let passphrase = "abcdeabcdeabcdeabcdeabcdea";
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = server.baseURI;
Service.login("foo", "ilovejane", passphrase);
generateNewKeys(Service.collectionKeys);
@ -169,9 +168,6 @@ add_test(function test_properties() {
add_test(function test_sync() {
_("Ensure that Clients engine uploads a new client record once a week.");
new SyncTestingInfrastructure();
generateNewKeys(Service.collectionKeys);
let contents = {
meta: {global: {engines: {clients: {version: engine.version,
syncID: engine.syncID}}}},
@ -181,6 +177,9 @@ add_test(function test_sync() {
let server = serverForUsers({"foo": "password"}, contents);
let user = server.user("foo");
new SyncTestingInfrastructure(server.server);
generateNewKeys(Service.collectionKeys);
function clientWBO() {
return user.collection("clients").wbo(engine.localID);
}
@ -407,8 +406,6 @@ add_test(function test_process_incoming_commands() {
add_test(function test_command_sync() {
_("Ensure that commands are synced across clients.");
new SyncTestingInfrastructure();
engine._store.wipe();
generateNewKeys(Service.collectionKeys);
@ -419,6 +416,8 @@ add_test(function test_command_sync() {
crypto: {}
};
let server = serverForUsers({"foo": "password"}, contents);
new SyncTestingInfrastructure(server.server);
let user = server.user("foo");
let remoteId = Utils.makeGUID();

View File

@ -25,8 +25,6 @@ add_test(function test_missing_crypto_collection() {
}
setBasicCredentials("johndoe", "ilovejane", "a-aaaaa-aaaaa-aaaaa-aaaaa-aaaaa");
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
let handlers = {
"/1.1/johndoe/info/collections": maybe_empty(johnHelper.handler),
@ -40,6 +38,7 @@ add_test(function test_missing_crypto_collection() {
johnU(coll, new ServerCollection({}, true).handler());
}
let server = httpd_setup(handlers);
Service.serverURL = server.baseURI;
try {
let fresh = 0;

View File

@ -56,8 +56,8 @@ add_task(function test_locally_changed_keys() {
};
setBasicCredentials("johndoe", "password", passphrase);
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = server.baseURI;
Service.clusterURL = server.baseURI;
Service.engineManager.register(HistoryEngine);

View File

@ -10,17 +10,8 @@ Cu.import("resource://testing-common/services/sync/utils.js");
add_test(function test_processIncoming_abort() {
_("An abort exception, raised in applyIncoming, will abort _processIncoming.");
new SyncTestingInfrastructure();
generateNewKeys(Service.collectionKeys);
let engine = new RotaryEngine(Service);
_("Create some server data.");
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
let collection = new ServerCollection();
let id = Utils.makeGUID();
let payload = encryptPayload({id: id, denomination: "Record No. " + id});
@ -30,6 +21,14 @@ add_test(function test_processIncoming_abort() {
"/1.1/foo/storage/rotary": collection.handler()
});
new SyncTestingInfrastructure(server);
generateNewKeys(Service.collectionKeys);
_("Create some server data.");
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
_("Fake applyIncoming to abort.");
engine._store.applyIncoming = function (record) {
let ex = {code: Engine.prototype.eEngineAbortApplyIncoming,

View File

@ -11,7 +11,7 @@ Cu.import("resource://services-sync/status.js");
Cu.import("resource://services-sync/util.js");
Cu.import("resource://testing-common/services/sync/utils.js");
const TEST_MAINTENANCE_URL = "http://localhost:8080/maintenance/";
const FAKE_SERVER_URL = "http://dummy:9000/";
const logsdir = FileUtils.getDir("ProfD", ["weave", "logs"], true);
const LOG_PREFIX_SUCCESS = "success-";
const LOG_PREFIX_ERROR = "error-";
@ -125,10 +125,10 @@ function sync_httpd_setup() {
});
}
function setUp() {
function setUp(server) {
setBasicCredentials("johndoe", "ilovejane", "abcdeabcdeabcdeabcdeabcdea");
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = server.baseURI + "/";
Service.clusterURL = server.baseURI + "/";
return generateAndUploadKeys();
}
@ -148,7 +148,7 @@ function clean() {
add_test(function test_401_logout() {
let server = sync_httpd_setup();
setUp();
setUp(server);
// By calling sync, we ensure we're logged in.
Service.sync();
@ -188,7 +188,7 @@ add_test(function test_401_logout() {
add_test(function test_credentials_changed_logout() {
let server = sync_httpd_setup();
setUp();
setUp(server);
// By calling sync, we ensure we're logged in.
Service.sync();
@ -228,8 +228,8 @@ add_test(function test_shouldReportError() {
// Give ourselves a clusterURL so that the temporary 401 no-error situation
// doesn't come into play.
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = FAKE_SERVER_URL;
Service.clusterURL = FAKE_SERVER_URL;
// Test dontIgnoreErrors, non-network, non-prolonged, login error reported
Status.resetSync();
@ -407,7 +407,7 @@ add_test(function test_shouldReportError() {
add_test(function test_shouldReportError_master_password() {
_("Test error ignored due to locked master password");
let server = sync_httpd_setup();
setUp();
setUp(server);
// Monkey patch Service.verifyLogin to imitate
// master password being locked.
@ -431,7 +431,7 @@ add_test(function test_login_syncAndReportErrors_non_network_error() {
// Test non-network errors are reported
// when calling syncAndReportErrors
let server = sync_httpd_setup();
setUp();
setUp(server);
Service.identity.basicPassword = null;
Svc.Obs.add("weave:ui:login:error", function onSyncError() {
@ -450,7 +450,7 @@ add_test(function test_sync_syncAndReportErrors_non_network_error() {
// Test non-network errors are reported
// when calling syncAndReportErrors
let server = sync_httpd_setup();
setUp();
setUp(server);
// By calling sync, we ensure we're logged in.
Service.sync();
@ -475,7 +475,7 @@ add_test(function test_login_syncAndReportErrors_prolonged_non_network_error() {
// Test prolonged, non-network errors are
// reported when calling syncAndReportErrors.
let server = sync_httpd_setup();
setUp();
setUp(server);
Service.identity.basicPassword = null;
Svc.Obs.add("weave:ui:login:error", function onSyncError() {
@ -494,7 +494,7 @@ add_test(function test_sync_syncAndReportErrors_prolonged_non_network_error() {
// Test prolonged, non-network errors are
// reported when calling syncAndReportErrors.
let server = sync_httpd_setup();
setUp();
setUp(server);
// By calling sync, we ensure we're logged in.
Service.sync();
@ -518,8 +518,8 @@ add_test(function test_sync_syncAndReportErrors_prolonged_non_network_error() {
add_test(function test_login_syncAndReportErrors_network_error() {
// Test network errors are reported when calling syncAndReportErrors.
setBasicCredentials("broken.wipe", "ilovejane", "abcdeabcdeabcdeabcdeabcdea");
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = FAKE_SERVER_URL;
Service.clusterURL = FAKE_SERVER_URL;
Svc.Obs.add("weave:ui:login:error", function onSyncError() {
Svc.Obs.remove("weave:ui:login:error", onSyncError);
@ -555,8 +555,8 @@ add_test(function test_login_syncAndReportErrors_prolonged_network_error() {
// Test prolonged, network errors are reported
// when calling syncAndReportErrors.
setBasicCredentials("johndoe", "ilovejane", "abcdeabcdeabcdeabcdeabcdea");
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = FAKE_SERVER_URL;
Service.clusterURL = FAKE_SERVER_URL;
Svc.Obs.add("weave:ui:login:error", function onSyncError() {
Svc.Obs.remove("weave:ui:login:error", onSyncError);
@ -591,7 +591,7 @@ add_test(function test_sync_syncAndReportErrors_prolonged_network_error() {
add_test(function test_login_prolonged_non_network_error() {
// Test prolonged, non-network errors are reported
let server = sync_httpd_setup();
setUp();
setUp(server);
Service.identity.basicPassword = null;
Svc.Obs.add("weave:ui:login:error", function onSyncError() {
@ -609,7 +609,7 @@ add_test(function test_login_prolonged_non_network_error() {
add_test(function test_sync_prolonged_non_network_error() {
// Test prolonged, non-network errors are reported
let server = sync_httpd_setup();
setUp();
setUp(server);
// By calling sync, we ensure we're logged in.
Service.sync();
@ -633,8 +633,8 @@ add_test(function test_sync_prolonged_non_network_error() {
add_test(function test_login_prolonged_network_error() {
// Test prolonged, network errors are reported
setBasicCredentials("johndoe", "ilovejane", "abcdeabcdeabcdeabcdeabcdea");
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = FAKE_SERVER_URL;
Service.clusterURL = FAKE_SERVER_URL;
Svc.Obs.add("weave:ui:login:error", function onSyncError() {
Svc.Obs.remove("weave:ui:login:error", onSyncError);
@ -668,7 +668,7 @@ add_test(function test_sync_prolonged_network_error() {
add_test(function test_login_non_network_error() {
// Test non-network errors are reported
let server = sync_httpd_setup();
setUp();
setUp(server);
Service.identity.basicPassword = null;
Svc.Obs.add("weave:ui:login:error", function onSyncError() {
@ -686,7 +686,7 @@ add_test(function test_login_non_network_error() {
add_test(function test_sync_non_network_error() {
// Test non-network errors are reported
let server = sync_httpd_setup();
setUp();
setUp(server);
// By calling sync, we ensure we're logged in.
Service.sync();
@ -709,8 +709,8 @@ add_test(function test_sync_non_network_error() {
add_test(function test_login_network_error() {
setBasicCredentials("johndoe", "ilovejane", "abcdeabcdeabcdeabcdeabcdea");
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = FAKE_SERVER_URL;
Service.clusterURL = FAKE_SERVER_URL;
// Test network errors are not reported.
Svc.Obs.add("weave:ui:clear-error", function onClearError() {
@ -747,7 +747,7 @@ add_test(function test_sync_network_error() {
add_test(function test_sync_server_maintenance_error() {
// Test server maintenance errors are not reported.
let server = sync_httpd_setup();
setUp();
setUp(server);
const BACKOFF = 42;
let engine = engineManager.get("catapult");
@ -780,12 +780,12 @@ add_test(function test_sync_server_maintenance_error() {
add_test(function test_info_collections_login_server_maintenance_error() {
// Test info/collections server maintenance errors are not reported.
let server = sync_httpd_setup();
setUp();
setUp(server);
Service.username = "broken.info";
setBasicCredentials("broken.info", "irrelevant", "irrelevant");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
let backoffInterval;
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
@ -821,11 +821,11 @@ add_test(function test_info_collections_login_server_maintenance_error() {
add_test(function test_meta_global_login_server_maintenance_error() {
// Test meta/global server maintenance errors are not reported.
let server = sync_httpd_setup();
setUp();
setUp(server);
setBasicCredentials("broken.meta", "irrelevant", "irrelevant");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
let backoffInterval;
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
@ -861,11 +861,11 @@ add_test(function test_meta_global_login_server_maintenance_error() {
add_test(function test_crypto_keys_login_server_maintenance_error() {
// Test crypto/keys server maintenance errors are not reported.
let server = sync_httpd_setup();
setUp();
setUp(server);
setBasicCredentials("broken.keys", "irrelevant", "irrelevant");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
// Force re-download of keys
Service.collectionKeys.clear();
@ -904,7 +904,7 @@ add_test(function test_crypto_keys_login_server_maintenance_error() {
add_test(function test_sync_prolonged_server_maintenance_error() {
// Test prolonged server maintenance errors are reported.
let server = sync_httpd_setup();
setUp();
setUp(server);
const BACKOFF = 42;
let engine = engineManager.get("catapult");
@ -930,11 +930,11 @@ add_test(function test_sync_prolonged_server_maintenance_error() {
add_test(function test_info_collections_login_prolonged_server_maintenance_error(){
// Test info/collections prolonged server maintenance errors are reported.
let server = sync_httpd_setup();
setUp();
setUp(server);
setBasicCredentials("broken.info", "irrelevant", "irrelevant");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
let backoffInterval;
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
@ -963,11 +963,11 @@ add_test(function test_info_collections_login_prolonged_server_maintenance_error
add_test(function test_meta_global_login_prolonged_server_maintenance_error(){
// Test meta/global prolonged server maintenance errors are reported.
let server = sync_httpd_setup();
setUp();
setUp(server);
setBasicCredentials("broken.meta", "irrelevant", "irrelevant");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
let backoffInterval;
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
@ -996,11 +996,11 @@ add_test(function test_meta_global_login_prolonged_server_maintenance_error(){
add_test(function test_download_crypto_keys_login_prolonged_server_maintenance_error(){
// Test crypto/keys prolonged server maintenance errors are reported.
let server = sync_httpd_setup();
setUp();
setUp(server);
setBasicCredentials("broken.keys", "irrelevant", "irrelevant");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
// Force re-download of keys
Service.collectionKeys.clear();
@ -1034,8 +1034,8 @@ add_test(function test_upload_crypto_keys_login_prolonged_server_maintenance_err
// Start off with an empty account, do not upload a key.
setBasicCredentials("broken.keys", "ilovejane", "abcdeabcdeabcdeabcdeabcdea");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
let backoffInterval;
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
@ -1068,8 +1068,8 @@ add_test(function test_wipeServer_login_prolonged_server_maintenance_error(){
// Start off with an empty account, do not upload a key.
setBasicCredentials("broken.wipe", "ilovejane", "abcdeabcdeabcdeabcdeabcdea");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
let backoffInterval;
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
@ -1102,8 +1102,8 @@ add_test(function test_wipeRemote_prolonged_server_maintenance_error(){
server.registerPathHandler("/1.1/broken.wipe/storage/catapult", service_unavailable);
setBasicCredentials("broken.wipe", "ilovejane", "abcdeabcdeabcdeabcdeabcdea");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
generateAndUploadKeys();
let engine = engineManager.get("catapult");
@ -1140,7 +1140,7 @@ add_test(function test_sync_syncAndReportErrors_server_maintenance_error() {
// Test server maintenance errors are reported
// when calling syncAndReportErrors.
let server = sync_httpd_setup();
setUp();
setUp(server);
const BACKOFF = 42;
let engine = engineManager.get("catapult");
@ -1167,11 +1167,11 @@ add_test(function test_info_collections_login_syncAndReportErrors_server_mainten
// Test info/collections server maintenance errors are reported
// when calling syncAndReportErrors.
let server = sync_httpd_setup();
setUp();
setUp(server);
setBasicCredentials("broken.info", "irrelevant", "irrelevant");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
let backoffInterval;
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
@ -1201,11 +1201,11 @@ add_test(function test_meta_global_login_syncAndReportErrors_server_maintenance_
// Test meta/global server maintenance errors are reported
// when calling syncAndReportErrors.
let server = sync_httpd_setup();
setUp();
setUp(server);
setBasicCredentials("broken.meta", "irrelevant", "irrelevant");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
let backoffInterval;
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
@ -1235,11 +1235,11 @@ add_test(function test_download_crypto_keys_login_syncAndReportErrors_server_mai
// Test crypto/keys server maintenance errors are reported
// when calling syncAndReportErrors.
let server = sync_httpd_setup();
setUp();
setUp(server);
setBasicCredentials("broken.keys", "irrelevant", "irrelevant");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
// Force re-download of keys
Service.collectionKeys.clear();
@ -1274,8 +1274,8 @@ add_test(function test_upload_crypto_keys_login_syncAndReportErrors_server_maint
// Start off with an empty account, do not upload a key.
setBasicCredentials("broken.keys", "ilovejane", "abcdeabcdeabcdeabcdeabcdea");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
let backoffInterval;
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
@ -1308,8 +1308,8 @@ add_test(function test_wipeServer_login_syncAndReportErrors_server_maintenance_e
// Start off with an empty account, do not upload a key.
setBasicCredentials("broken.wipe", "ilovejane", "abcdeabcdeabcdeabcdeabcdea");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
let backoffInterval;
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
@ -1341,8 +1341,8 @@ add_test(function test_wipeRemote_syncAndReportErrors_server_maintenance_error()
let server = sync_httpd_setup();
setBasicCredentials("broken.wipe", "ilovejane", "abcdeabcdeabcdeabcdeabcdea");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
generateAndUploadKeys();
let engine = engineManager.get("catapult");
@ -1379,7 +1379,7 @@ add_test(function test_sync_syncAndReportErrors_prolonged_server_maintenance_err
// Test prolonged server maintenance errors are
// reported when calling syncAndReportErrors.
let server = sync_httpd_setup();
setUp();
setUp(server);
const BACKOFF = 42;
let engine = engineManager.get("catapult");
@ -1406,11 +1406,11 @@ add_test(function test_info_collections_login_syncAndReportErrors_prolonged_serv
// Test info/collections server maintenance errors are reported
// when calling syncAndReportErrors.
let server = sync_httpd_setup();
setUp();
setUp(server);
setBasicCredentials("broken.info", "irrelevant", "irrelevant");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
let backoffInterval;
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
@ -1440,11 +1440,11 @@ add_test(function test_meta_global_login_syncAndReportErrors_prolonged_server_ma
// Test meta/global server maintenance errors are reported
// when calling syncAndReportErrors.
let server = sync_httpd_setup();
setUp();
setUp(server);
setBasicCredentials("broken.meta", "irrelevant", "irrelevant");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
let backoffInterval;
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
@ -1474,11 +1474,11 @@ add_test(function test_download_crypto_keys_login_syncAndReportErrors_prolonged_
// Test crypto/keys server maintenance errors are reported
// when calling syncAndReportErrors.
let server = sync_httpd_setup();
setUp();
setUp(server);
setBasicCredentials("broken.keys", "irrelevant", "irrelevant");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
// Force re-download of keys
Service.collectionKeys.clear();
@ -1513,8 +1513,8 @@ add_test(function test_upload_crypto_keys_login_syncAndReportErrors_prolonged_se
// Start off with an empty account, do not upload a key.
setBasicCredentials("broken.keys", "ilovejane", "abcdeabcdeabcdeabcdeabcdea");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
let backoffInterval;
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
@ -1547,8 +1547,8 @@ add_test(function test_wipeServer_login_syncAndReportErrors_prolonged_server_mai
// Start off with an empty account, do not upload a key.
setBasicCredentials("broken.wipe", "ilovejane", "abcdeabcdeabcdeabcdeabcdea");
Service.serverURL = TEST_MAINTENANCE_URL;
Service.clusterURL = TEST_MAINTENANCE_URL;
Service.serverURL = server.baseURI + "/maintenance/";
Service.clusterURL = server.baseURI + "/maintenance/";
let backoffInterval;
Svc.Obs.add("weave:service:backoff:interval", function observe(subject, data) {
@ -1615,7 +1615,7 @@ add_test(function test_sync_engine_generic_fail() {
});
});
do_check_true(setUp());
do_check_true(setUp(server));
Service.sync();
});
@ -1708,6 +1708,6 @@ add_test(function test_engine_applyFailed() {
});
do_check_eq(Status.engines["catapult"], undefined);
do_check_true(setUp());
do_check_true(setUp(server));
Service.sync();
});

View File

@ -53,26 +53,26 @@ function sync_httpd_setup() {
return httpd_setup(handlers);
}
function setUp() {
function setUp(server) {
setBasicCredentials("johndoe", "ilovejane", "aabcdeabcdeabcdeabcdeabcde");
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = server.baseURI + "/";
Service.clusterURL = server.baseURI + "/";
new FakeCryptoService();
}
function generateAndUploadKeys() {
function generateAndUploadKeys(server) {
generateNewKeys(Service.collectionKeys);
let serverKeys = Service.collectionKeys.asWBO("crypto", "keys");
serverKeys.encrypt(Service.identity.syncKeyBundle);
let res = Service.resource("http://localhost:8080/1.1/johndoe/storage/crypto/keys");
let res = Service.resource(server.baseURI + "/1.1/johndoe/storage/crypto/keys");
return serverKeys.upload(res).success;
}
add_test(function test_backoff500() {
_("Test: HTTP 500 sets backoff status.");
setUp();
let server = sync_httpd_setup();
setUp(server);
let engine = engineManager.get("catapult");
engine.enabled = true;
@ -82,7 +82,7 @@ add_test(function test_backoff500() {
do_check_false(Status.enforceBackoff);
// Forcibly create and upload keys here -- otherwise we don't get to the 500!
do_check_true(generateAndUploadKeys());
do_check_true(generateAndUploadKeys(server));
Service.login();
Service.sync();
@ -98,8 +98,8 @@ add_test(function test_backoff500() {
add_test(function test_backoff503() {
_("Test: HTTP 503 with Retry-After header leads to backoff notification and sets backoff status.");
setUp();
let server = sync_httpd_setup();
setUp(server);
const BACKOFF = 42;
let engine = engineManager.get("catapult");
@ -115,7 +115,7 @@ add_test(function test_backoff503() {
try {
do_check_false(Status.enforceBackoff);
do_check_true(generateAndUploadKeys());
do_check_true(generateAndUploadKeys(server));
Service.login();
Service.sync();
@ -134,8 +134,8 @@ add_test(function test_backoff503() {
add_test(function test_overQuota() {
_("Test: HTTP 400 with body error code 14 means over quota.");
setUp();
let server = sync_httpd_setup();
setUp(server);
let engine = engineManager.get("catapult");
engine.enabled = true;
@ -145,7 +145,7 @@ add_test(function test_overQuota() {
try {
do_check_eq(Status.sync, SYNC_SUCCEEDED);
do_check_true(generateAndUploadKeys());
do_check_true(generateAndUploadKeys(server));
Service.login();
Service.sync();
@ -161,50 +161,56 @@ add_test(function test_overQuota() {
add_test(function test_service_networkError() {
_("Test: Connection refused error from Service.sync() leads to the right status code.");
setUp();
// Provoke connection refused.
Service.clusterURL = "http://localhost:12345/";
let server = sync_httpd_setup();
setUp(server);
server.stop(() => {
// Provoke connection refused.
Service.clusterURL = "http://localhost:12345/";
try {
do_check_eq(Status.sync, SYNC_SUCCEEDED);
try {
do_check_eq(Status.sync, SYNC_SUCCEEDED);
Service._loggedIn = true;
Service.sync();
Service._loggedIn = true;
Service.sync();
do_check_eq(Status.sync, LOGIN_FAILED_NETWORK_ERROR);
do_check_eq(Status.service, SYNC_FAILED);
} finally {
Status.resetSync();
Service.startOver();
}
run_next_test();
do_check_eq(Status.sync, LOGIN_FAILED_NETWORK_ERROR);
do_check_eq(Status.service, SYNC_FAILED);
} finally {
Status.resetSync();
Service.startOver();
}
run_next_test();
});
});
add_test(function test_service_offline() {
_("Test: Wanting to sync in offline mode leads to the right status code but does not increment the ignorable error count.");
setUp();
Services.io.offline = true;
let server = sync_httpd_setup();
setUp(server);
server.stop(() => {
Services.io.offline = true;
try {
do_check_eq(Status.sync, SYNC_SUCCEEDED);
try {
do_check_eq(Status.sync, SYNC_SUCCEEDED);
Service._loggedIn = true;
Service.sync();
Service._loggedIn = true;
Service.sync();
do_check_eq(Status.sync, LOGIN_FAILED_NETWORK_ERROR);
do_check_eq(Status.service, SYNC_FAILED);
} finally {
Status.resetSync();
Service.startOver();
}
Services.io.offline = false;
run_next_test();
do_check_eq(Status.sync, LOGIN_FAILED_NETWORK_ERROR);
do_check_eq(Status.service, SYNC_FAILED);
} finally {
Status.resetSync();
Service.startOver();
}
Services.io.offline = false;
run_next_test();
});
});
add_test(function test_engine_networkError() {
_("Test: Network related exceptions from engine.sync() lead to the right status code.");
setUp();
let server = sync_httpd_setup();
setUp(server);
let engine = engineManager.get("catapult");
engine.enabled = true;
@ -214,7 +220,7 @@ add_test(function test_engine_networkError() {
try {
do_check_eq(Status.sync, SYNC_SUCCEEDED);
do_check_true(generateAndUploadKeys());
do_check_true(generateAndUploadKeys(server));
Service.login();
Service.sync();
@ -229,8 +235,8 @@ add_test(function test_engine_networkError() {
});
add_test(function test_resource_timeout() {
setUp();
let server = sync_httpd_setup();
setUp(server);
let engine = engineManager.get("catapult");
engine.enabled = true;
@ -241,7 +247,7 @@ add_test(function test_resource_timeout() {
try {
do_check_eq(Status.sync, SYNC_SUCCEEDED);
do_check_true(generateAndUploadKeys());
do_check_true(generateAndUploadKeys(server));
Service.login();
Service.sync();

View File

@ -17,8 +17,6 @@ add_test(function test_processIncoming_mobile_history_batched() {
let FAKE_DOWNLOAD_LIMIT = 100;
new SyncTestingInfrastructure();
Svc.Prefs.set("client.type", "mobile");
PlacesUtils.history.removeAllPages();
Service.engineManager.register(HistoryEngine);
@ -32,6 +30,12 @@ add_test(function test_processIncoming_mobile_history_batched() {
return this._get(options);
};
let server = sync_httpd_setup({
"/1.1/foo/storage/history": collection.handler()
});
new SyncTestingInfrastructure(server);
// Let's create some 234 server side history records. They're all at least
// 10 minutes old.
let visitType = Ci.nsINavHistoryService.TRANSITION_LINK;
@ -51,10 +55,6 @@ add_test(function test_processIncoming_mobile_history_batched() {
collection.insertWBO(wbo);
}
let server = sync_httpd_setup({
"/1.1/foo/storage/history": collection.handler()
});
let engine = Service.engineManager.get("history");
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));

View File

@ -22,8 +22,6 @@ function shared_setup() {
// Do not instantiate SyncTestingInfrastructure; we need real crypto.
setBasicCredentials("foo", "foo", "aabcdeabcdeabcdeabcdeabcde");
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
// Make sure RotaryEngine is the only one we sync.
Service.engineManager._engines = {};
@ -80,6 +78,7 @@ add_test(function hmac_error_during_404() {
};
let server = sync_httpd_setup(handlers);
Service.serverURL = server.baseURI;
try {
_("Syncing.");
@ -155,6 +154,7 @@ add_test(function hmac_error_during_node_reassignment() {
};
let server = sync_httpd_setup(handlers);
Service.serverURL = server.baseURI;
_("Syncing.");
// First hit of clients will 401. This will happen after meta/global and
// keys -- i.e., in the middle of the sync, but before RotaryEngine.

View File

@ -65,9 +65,9 @@ add_test(function test_url_parsing() {
});
Cu.import("resource://services-common/rest.js");
function localRequest(path) {
function localRequest(server, path) {
_("localRequest: " + path);
let url = "http://127.0.0.1:8080" + path;
let url = server.baseURI.substr(0, server.baseURI.length - 1) + path;
_("url: " + url);
return new RESTRequest(url);
}
@ -76,11 +76,10 @@ add_test(function test_basic_http() {
let server = new SyncServer();
server.registerUser("john", "password");
do_check_true(server.userExists("john"));
server.start(8080, function () {
server.start(null, function () {
_("Started on " + server.port);
do_check_eq(server.port, 8080);
Utils.nextTick(function () {
let req = localRequest("/1.1/john/storage/crypto/keys");
let req = localRequest(server, "/1.1/john/storage/crypto/keys");
_("req is " + req);
req.get(function (err) {
do_check_eq(null, err);
@ -103,10 +102,9 @@ add_test(function test_info_collections() {
}
server.registerUser("john", "password");
server.start(8080, function () {
do_check_eq(server.port, 8080);
server.start(null, function () {
Utils.nextTick(function () {
let req = localRequest("/1.1/john/info/collections");
let req = localRequest(server, "/1.1/john/info/collections");
req.get(function (err) {
// Initial info/collections fetch is empty.
do_check_eq(null, err);
@ -121,7 +119,7 @@ add_test(function test_info_collections() {
let putResponseBody = this.response.body;
_("PUT response body: " + JSON.stringify(putResponseBody));
req = localRequest("/1.1/john/info/collections");
req = localRequest(server, "/1.1/john/info/collections");
req.get(function (err) {
do_check_eq(null, err);
responseHasCorrectHeaders(this.response);
@ -137,7 +135,7 @@ add_test(function test_info_collections() {
});
}
let payload = JSON.stringify({foo: "bar"});
localRequest("/1.1/john/storage/crypto/keys").put(payload, cb);
localRequest(server, "/1.1/john/storage/crypto/keys").put(payload, cb);
});
});
});
@ -163,7 +161,7 @@ add_test(function test_storage_request() {
do_check_true(coll.timestamp >= creation);
function retrieveWBONotExists(next) {
let req = localRequest(keysURL);
let req = localRequest(server, keysURL);
req.get(function (err) {
_("Body is " + this.response.body);
_("Modified is " + this.response.newModified);
@ -174,7 +172,7 @@ add_test(function test_storage_request() {
});
}
function retrieveWBOExists(next) {
let req = localRequest(foosURL);
let req = localRequest(server, foosURL);
req.get(function (err) {
_("Body is " + this.response.body);
_("Modified is " + this.response.newModified);
@ -186,7 +184,7 @@ add_test(function test_storage_request() {
});
}
function deleteWBONotExists(next) {
let req = localRequest(keysURL);
let req = localRequest(server, keysURL);
server.callback.onItemDeleted = function (username, collection, wboID) {
do_throw("onItemDeleted should not have been called.");
};
@ -200,7 +198,7 @@ add_test(function test_storage_request() {
});
}
function deleteWBOExists(next) {
let req = localRequest(foosURL);
let req = localRequest(server, foosURL);
server.callback.onItemDeleted = function (username, collection, wboID) {
_("onItemDeleted called for " + collection + "/" + wboID);
delete server.callback.onItemDeleted;
@ -220,7 +218,7 @@ add_test(function test_storage_request() {
_("Testing DELETE on /storage.");
let now = server.timestamp();
_("Timestamp: " + now);
let req = localRequest(storageURL);
let req = localRequest(server, storageURL);
req.delete(function (err) {
_("Body is " + this.response.body);
_("Modified is " + this.response.newModified);
@ -232,7 +230,7 @@ add_test(function test_storage_request() {
}
function getStorageFails(next) {
_("Testing that GET on /storage fails.");
let req = localRequest(storageURL);
let req = localRequest(server, storageURL);
req.get(function (err) {
do_check_eq(this.response.status, 405);
do_check_eq(this.response.headers["allow"], "DELETE");
@ -241,14 +239,14 @@ add_test(function test_storage_request() {
}
function getMissingCollectionWBO(next) {
_("Testing that fetching a WBO from an on-existent collection 404s.");
let req = localRequest(storageURL + "/foobar/baz");
let req = localRequest(server, storageURL + "/foobar/baz");
req.get(function (err) {
do_check_eq(this.response.status, 404);
Utils.nextTick(next);
});
}
server.start(8080,
server.start(null,
Async.chain(
retrieveWBONotExists,
retrieveWBOExists,
@ -270,12 +268,12 @@ add_test(function test_x_weave_records() {
crypto: {foos: {foo: "bar"},
bars: {foo: "baz"}}
});
server.start(8080, function () {
let wbo = localRequest("/1.1/john/storage/crypto/foos");
server.start(null, function () {
let wbo = localRequest(server, "/1.1/john/storage/crypto/foos");
wbo.get(function (err) {
// WBO fetches don't have one.
do_check_false("x-weave-records" in this.response.headers);
let col = localRequest("/1.1/john/storage/crypto");
let col = localRequest(server, "/1.1/john/storage/crypto");
col.get(function (err) {
// Collection fetches do.
do_check_eq(this.response.headers["x-weave-records"], "2");

View File

@ -35,10 +35,10 @@ function sync_httpd_setup() {
});
}
function setUp() {
function setUp(server) {
setBasicCredentials("johndoe", "ilovejane", "abcdeabcdeabcdeabcdeabcdea");
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = server.baseURI + "/";
Service.clusterURL = server.baseURI + "/";
generateNewKeys(Service.collectionKeys);
let serverKeys = Service.collectionKeys.asWBO("crypto", "keys");
@ -65,7 +65,7 @@ add_test(function test_successful_sync_adjustSyncInterval() {
Svc.Obs.add("weave:service:sync:finish", onSyncFinish);
let server = sync_httpd_setup();
setUp();
setUp(server);
// Confirm defaults
do_check_false(scheduler.idle);
@ -169,7 +169,7 @@ add_test(function test_unsuccessful_sync_adjustSyncInterval() {
Svc.Prefs.set("firstSync", "notReady");
let server = sync_httpd_setup();
setUp();
setUp(server);
// Confirm defaults
do_check_false(scheduler.idle);
@ -261,7 +261,7 @@ add_test(function test_unsuccessful_sync_adjustSyncInterval() {
add_test(function test_back_triggers_sync() {
let server = sync_httpd_setup();
setUp();
setUp(server);
// Single device: no sync triggered.
scheduler.idle = true;
@ -291,7 +291,7 @@ add_test(function test_back_triggers_sync() {
add_test(function test_adjust_interval_on_sync_error() {
let server = sync_httpd_setup();
setUp();
setUp(server);
let syncFailures = 0;
function onSyncError() {
@ -327,7 +327,7 @@ add_test(function test_bug671378_scenario() {
// setting nextSync to a non-zero value and preventing the timer from
// being adjusted in the next call to scheduleNextSync().
let server = sync_httpd_setup();
setUp();
setUp(server);
let syncSuccesses = 0;
function onSyncFinish() {

View File

@ -169,7 +169,9 @@ const DATA = {"msg": "eggstreamly sekrit"};
const POLLINTERVAL = 50;
function run_test() {
Svc.Prefs.set("jpake.serverURL", TEST_SERVER_URL);
server = httpd_setup({"/new_channel": server_new_channel,
"/report": server_report});
Svc.Prefs.set("jpake.serverURL", server.baseURI + "/");
Svc.Prefs.set("jpake.pollInterval", POLLINTERVAL);
Svc.Prefs.set("jpake.maxTries", 2);
Svc.Prefs.set("jpake.firstMsgMaxTries", 5);
@ -186,9 +188,6 @@ function run_test() {
// sure the J-PAKE requests don't include those data.
setBasicCredentials("johndoe", "ilovejane");
server = httpd_setup({"/new_channel": server_new_channel,
"/report": server_report});
initTestLogging("Trace");
Log4Moz.repository.getLogger("Sync.JPAKEClient").level = Log4Moz.Level.Trace;
Log4Moz.repository.getLogger("Common.RESTRequest").level =

View File

@ -59,8 +59,8 @@ function handleReassign(handler, req, resp) {
/**
* A node assignment handler.
*/
const newNodeBody = "http://localhost:8080/";
function installNodeHandler(server, next) {
let newNodeBody = server.baseURI;
function handleNodeRequest(req, resp) {
_("Client made a request for a node reassignment.");
resp.setStatusLine(req.httpVersion, 200, "OK");
@ -75,13 +75,13 @@ function installNodeHandler(server, next) {
function prepareServer() {
setBasicCredentials("johndoe", "ilovejane", "abcdeabcdeabcdeabcdeabcdea");
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
do_check_eq(Service.userAPIURI, "http://localhost:8080/user/1.0/");
let server = new SyncServer();
server.registerUser("johndoe");
server.start();
Service.serverURL = server.baseURI;
Service.clusterURL = server.baseURI;
do_check_eq(Service.userAPIURI, server.baseURI + "user/1.0/");
return server;
}

View File

@ -51,7 +51,7 @@ function test_fetch() {
try {
_("Fetching a WBO record");
let rec = new WBORecord("coll", "record");
rec.fetch(Service.resource("http://localhost:8080/record"));
rec.fetch(Service.resource(server.baseURI + "/record"));
do_check_eq(rec.id, "asdf-1234-asdf-1234"); // NOT "record"!
do_check_eq(rec.modified, 2454725.98283);
@ -59,7 +59,7 @@ function test_fetch() {
do_check_eq(rec.payload.cheese, "roquefort");
_("Fetching a WBO record using the record manager");
let rec2 = Service.recordManager.get("http://localhost:8080/record2");
let rec2 = Service.recordManager.get(server.baseURI + "/record2");
do_check_eq(rec2.id, "record2");
do_check_eq(rec2.modified, 2454725.98284);
do_check_eq(typeof(rec2.payload), "object");

View File

@ -176,9 +176,9 @@ function run_test() {
// This apparently has to come first in order for our PAC URL to be hit.
// Don't put any other HTTP requests earlier in the file!
_("Testing handling of proxy auth redirection.");
PACSystemSettings.PACURI = "http://localhost:8080/pac1";
PACSystemSettings.PACURI = server.baseURI + "/pac1";
installFakePAC();
let proxiedRes = new Resource("http://localhost:8080/open");
let proxiedRes = new Resource(server.baseURI + "/open");
let content = proxiedRes.get();
do_check_true(pacFetched);
do_check_true(fetched);
@ -187,10 +187,10 @@ function run_test() {
uninstallFakePAC();
_("Resource object members");
let res = new Resource("http://localhost:8080/open");
let res = new Resource(server.baseURI + "/open");
do_check_true(res.uri instanceof Ci.nsIURI);
do_check_eq(res.uri.spec, "http://localhost:8080/open");
do_check_eq(res.spec, "http://localhost:8080/open");
do_check_eq(res.uri.spec, server.baseURI + "/open");
do_check_eq(res.spec, server.baseURI + "/open");
do_check_eq(typeof res.headers, "object");
do_check_eq(typeof res.authenticator, "object");
// Initially res.data is null since we haven't performed a GET or
@ -230,19 +230,19 @@ function run_test() {
logger.debug = dbg;
_("Test that the BasicAuthenticator doesn't screw up header case.");
let res1 = new Resource("http://localhost:8080/foo");
let res1 = new Resource(server.baseURI + "/foo");
res1.setHeader("Authorization", "Basic foobar");
do_check_eq(res1.headers["authorization"], "Basic foobar");
_("GET a password protected resource (test that it'll fail w/o pass, no throw)");
let res2 = new Resource("http://localhost:8080/protected");
let res2 = new Resource(server.baseURI + "/protected");
content = res2.get();
do_check_eq(content, "This path exists and is protected - failed");
do_check_eq(content.status, 401);
do_check_false(content.success);
_("GET a password protected resource");
let res3 = new Resource("http://localhost:8080/protected");
let res3 = new Resource(server.baseURI + "/protected");
let identity = new IdentityManager();
let auth = identity.getBasicResourceAuthenticator("guest", "guest");
res3.authenticator = auth;
@ -253,7 +253,7 @@ function run_test() {
do_check_true(content.success);
_("GET a non-existent resource (test that it'll fail, but not throw)");
let res4 = new Resource("http://localhost:8080/404");
let res4 = new Resource(server.baseURI + "/404");
content = res4.get();
do_check_eq(content, "File not found");
do_check_eq(content.status, 404);
@ -265,7 +265,7 @@ function run_test() {
do_check_eq(content.headers["content-length"], 14);
_("PUT to a resource (string)");
let res5 = new Resource("http://localhost:8080/upload");
let res5 = new Resource(server.baseURI + "/upload");
content = res5.put(JSON.stringify(sample_data));
do_check_eq(content, "Valid data upload via PUT");
do_check_eq(content.status, 200);
@ -318,13 +318,13 @@ function run_test() {
do_check_eq(res5.data, content);
_("DELETE a resource");
let res6 = new Resource("http://localhost:8080/delete");
let res6 = new Resource(server.baseURI + "/delete");
content = res6.delete();
do_check_eq(content, "This resource has been deleted")
do_check_eq(content.status, 200);
_("JSON conversion of response body");
let res7 = new Resource("http://localhost:8080/json");
let res7 = new Resource(server.baseURI + "/json");
content = res7.get();
do_check_eq(content, JSON.stringify(sample_data));
do_check_eq(content.status, 200);
@ -334,12 +334,12 @@ function run_test() {
// Before having received any response containing the
// X-Weave-Timestamp header, AsyncResource.serverTime is null.
do_check_eq(AsyncResource.serverTime, null);
let res8 = new Resource("http://localhost:8080/timestamp");
let res8 = new Resource(server.baseURI + "/timestamp");
content = res8.get();
do_check_eq(AsyncResource.serverTime, TIMESTAMP);
_("GET: no special request headers");
let res9 = new Resource("http://localhost:8080/headers");
let res9 = new Resource(server.baseURI + "/headers");
content = res9.get();
do_check_eq(content, '{}');
@ -387,7 +387,7 @@ function run_test() {
}
Observers.add("weave:service:backoff:interval", onBackoff);
let res10 = new Resource("http://localhost:8080/backoff");
let res10 = new Resource(server.baseURI + "/backoff");
content = res10.get();
do_check_eq(backoffInterval, 600);
@ -399,12 +399,12 @@ function run_test() {
}
Observers.add("weave:service:quota:remaining", onQuota);
res10 = new Resource("http://localhost:8080/quota-error");
res10 = new Resource(server.baseURI + "/quota-error");
content = res10.get();
do_check_eq(content.status, 400);
do_check_eq(quotaValue, undefined); // HTTP 400, so no observer notification.
res10 = new Resource("http://localhost:8080/quota-notice");
res10 = new Resource(server.baseURI + "/quota-notice");
content = res10.get();
do_check_eq(content.status, 200);
do_check_eq(quotaValue, 1048576);
@ -423,7 +423,7 @@ function run_test() {
do_check_eq(typeof error.stack, "string");
_("Checking handling of errors in onProgress.");
let res18 = new Resource("http://localhost:8080/json");
let res18 = new Resource(server.baseURI + "/json");
let onProgress = function(rec) {
// Provoke an XPC exception without a Javascript wrapper.
Services.io.newURI("::::::::", null, null);
@ -444,10 +444,10 @@ function run_test() {
do_check_eq(error, "Error: NS_ERROR_MALFORMED_URI");
do_check_eq(warnings.pop(),
"Got exception calling onProgress handler during fetch of " +
"http://localhost:8080/json");
server.baseURI + "/json");
// And this is what happens if JS throws an exception.
res18 = new Resource("http://localhost:8080/json");
res18 = new Resource(server.baseURI + "/json");
onProgress = function(rec) {
throw "BOO!";
};
@ -467,11 +467,11 @@ function run_test() {
do_check_eq(error, "Error: NS_ERROR_XPC_JS_THREW_STRING");
do_check_eq(warnings.pop(),
"Got exception calling onProgress handler during fetch of " +
"http://localhost:8080/json");
server.baseURI + "/json");
_("Ensure channel timeouts are thrown appropriately.");
let res19 = new Resource("http://localhost:8080/json");
let res19 = new Resource(server.baseURI + "/json");
res19.ABORT_TIMEOUT = 0;
error = undefined;
try {

View File

@ -7,9 +7,6 @@ Cu.import("resource://services-sync/identity.js");
Cu.import("resource://services-sync/resource.js");
Cu.import("resource://services-sync/util.js");
const RES_UPLOAD_URL = "http://localhost:8080/upload";
const RES_HEADERS_URL = "http://localhost:8080/headers";
let logger;
let fetched = false;
@ -173,9 +170,9 @@ add_test(function test_proxy_auth_redirect() {
"/pac2": server_pac
});
PACSystemSettings.PACURI = "http://localhost:8080/pac2";
PACSystemSettings.PACURI = server.baseURI + "/pac2";
installFakePAC();
let res = new AsyncResource("http://localhost:8080/open");
let res = new AsyncResource(server.baseURI + "/open");
res.get(function (error, result) {
do_check_true(!error);
do_check_true(pacFetched);
@ -199,18 +196,19 @@ add_test(function test_new_channel() {
response.bodyOutputStream.write(body, body.length);
}
let locationURL;
function redirectHandler(metadata, response) {
let body = "Redirecting";
response.setStatusLine(metadata.httpVersion, 307, "TEMPORARY REDIRECT");
response.setHeader("Location", "http://localhost:8080/resource");
response.setHeader("Location", locationURL);
response.bodyOutputStream.write(body, body.length);
}
let server = httpd_setup({"/resource": resourceHandler,
"/redirect": redirectHandler},
8080);
"/redirect": redirectHandler});
locationURL = server.baseURI + "/resource";
let request = new AsyncResource("http://localhost:8080/redirect");
let request = new AsyncResource(server.baseURI + "/redirect");
request.get(function onRequest(error, content) {
do_check_null(error);
do_check_true(resourceRequested);
@ -246,10 +244,11 @@ add_test(function setup() {
add_test(function test_members() {
_("Resource object members");
let res = new AsyncResource("http://localhost:8080/open");
let uri = server.baseURI + "/open";
let res = new AsyncResource(uri);
do_check_true(res.uri instanceof Ci.nsIURI);
do_check_eq(res.uri.spec, "http://localhost:8080/open");
do_check_eq(res.spec, "http://localhost:8080/open");
do_check_eq(res.uri.spec, uri);
do_check_eq(res.spec, uri);
do_check_eq(typeof res.headers, "object");
do_check_eq(typeof res.authenticator, "object");
// Initially res.data is null since we haven't performed a GET or
@ -261,7 +260,7 @@ add_test(function test_members() {
add_test(function test_get() {
_("GET a non-password-protected resource");
let res = new AsyncResource("http://localhost:8080/open");
let res = new AsyncResource(server.baseURI + "/open");
res.get(function (error, content) {
do_check_eq(error, null);
do_check_eq(content, "This path exists");
@ -299,7 +298,7 @@ add_test(function test_get() {
add_test(function test_basicauth() {
_("Test that the BasicAuthenticator doesn't screw up header case.");
let res1 = new AsyncResource("http://localhost:8080/foo");
let res1 = new AsyncResource(server.baseURI + "/foo");
res1.setHeader("Authorization", "Basic foobar");
do_check_eq(res1._headers["authorization"], "Basic foobar");
do_check_eq(res1.headers["authorization"], "Basic foobar");
@ -309,7 +308,7 @@ add_test(function test_basicauth() {
add_test(function test_get_protected_fail() {
_("GET a password protected resource (test that it'll fail w/o pass, no throw)");
let res2 = new AsyncResource("http://localhost:8080/protected");
let res2 = new AsyncResource(server.baseURI + "/protected");
res2.get(function (error, content) {
do_check_eq(error, null);
do_check_eq(content, "This path exists and is protected - failed");
@ -323,7 +322,7 @@ add_test(function test_get_protected_success() {
_("GET a password protected resource");
let identity = new IdentityManager();
let auth = identity.getBasicResourceAuthenticator("guest", "guest");
let res3 = new AsyncResource("http://localhost:8080/protected");
let res3 = new AsyncResource(server.baseURI + "/protected");
res3.authenticator = auth;
do_check_eq(res3.authenticator, auth);
res3.get(function (error, content) {
@ -337,7 +336,7 @@ add_test(function test_get_protected_success() {
add_test(function test_get_404() {
_("GET a non-existent resource (test that it'll fail, but not throw)");
let res4 = new AsyncResource("http://localhost:8080/404");
let res4 = new AsyncResource(server.baseURI + "/404");
res4.get(function (error, content) {
do_check_eq(error, null);
do_check_eq(content, "File not found");
@ -355,7 +354,7 @@ add_test(function test_get_404() {
add_test(function test_put_string() {
_("PUT to a resource (string)");
let res_upload = new AsyncResource(RES_UPLOAD_URL);
let res_upload = new AsyncResource(server.baseURI + "/upload");
res_upload.put(JSON.stringify(sample_data), function(error, content) {
do_check_eq(error, null);
do_check_eq(content, "Valid data upload via PUT");
@ -367,7 +366,7 @@ add_test(function test_put_string() {
add_test(function test_put_object() {
_("PUT to a resource (object)");
let res_upload = new AsyncResource(RES_UPLOAD_URL);
let res_upload = new AsyncResource(server.baseURI + "/upload");
res_upload.put(sample_data, function (error, content) {
do_check_eq(error, null);
do_check_eq(content, "Valid data upload via PUT");
@ -379,7 +378,7 @@ add_test(function test_put_object() {
add_test(function test_put_data_string() {
_("PUT without data arg (uses resource.data) (string)");
let res_upload = new AsyncResource(RES_UPLOAD_URL);
let res_upload = new AsyncResource(server.baseURI + "/upload");
res_upload.data = JSON.stringify(sample_data);
res_upload.put(function (error, content) {
do_check_eq(error, null);
@ -392,7 +391,7 @@ add_test(function test_put_data_string() {
add_test(function test_put_data_object() {
_("PUT without data arg (uses resource.data) (object)");
let res_upload = new AsyncResource(RES_UPLOAD_URL);
let res_upload = new AsyncResource(server.baseURI + "/upload");
res_upload.data = sample_data;
res_upload.put(function (error, content) {
do_check_eq(error, null);
@ -405,7 +404,7 @@ add_test(function test_put_data_object() {
add_test(function test_post_string() {
_("POST to a resource (string)");
let res_upload = new AsyncResource(RES_UPLOAD_URL);
let res_upload = new AsyncResource(server.baseURI + "/upload");
res_upload.post(JSON.stringify(sample_data), function (error, content) {
do_check_eq(error, null);
do_check_eq(content, "Valid data upload via POST");
@ -417,7 +416,7 @@ add_test(function test_post_string() {
add_test(function test_post_object() {
_("POST to a resource (object)");
let res_upload = new AsyncResource(RES_UPLOAD_URL);
let res_upload = new AsyncResource(server.baseURI + "/upload");
res_upload.post(sample_data, function (error, content) {
do_check_eq(error, null);
do_check_eq(content, "Valid data upload via POST");
@ -429,7 +428,7 @@ add_test(function test_post_object() {
add_test(function test_post_data_string() {
_("POST without data arg (uses resource.data) (string)");
let res_upload = new AsyncResource(RES_UPLOAD_URL);
let res_upload = new AsyncResource(server.baseURI + "/upload");
res_upload.data = JSON.stringify(sample_data);
res_upload.post(function (error, content) {
do_check_eq(error, null);
@ -442,7 +441,7 @@ add_test(function test_post_data_string() {
add_test(function test_post_data_object() {
_("POST without data arg (uses resource.data) (object)");
let res_upload = new AsyncResource(RES_UPLOAD_URL);
let res_upload = new AsyncResource(server.baseURI + "/upload");
res_upload.data = sample_data;
res_upload.post(function (error, content) {
do_check_eq(error, null);
@ -455,7 +454,7 @@ add_test(function test_post_data_object() {
add_test(function test_delete() {
_("DELETE a resource");
let res6 = new AsyncResource("http://localhost:8080/delete");
let res6 = new AsyncResource(server.baseURI + "/delete");
res6.delete(function (error, content) {
do_check_eq(error, null);
do_check_eq(content, "This resource has been deleted");
@ -466,7 +465,7 @@ add_test(function test_delete() {
add_test(function test_json_body() {
_("JSON conversion of response body");
let res7 = new AsyncResource("http://localhost:8080/json");
let res7 = new AsyncResource(server.baseURI + "/json");
res7.get(function (error, content) {
do_check_eq(error, null);
do_check_eq(content, JSON.stringify(sample_data));
@ -481,7 +480,7 @@ add_test(function test_weave_timestamp() {
// Before having received any response containing the
// X-Weave-Timestamp header, AsyncResource.serverTime is null.
do_check_eq(AsyncResource.serverTime, null);
let res8 = new AsyncResource("http://localhost:8080/timestamp");
let res8 = new AsyncResource(server.baseURI + "/timestamp");
res8.get(function (error, content) {
do_check_eq(error, null);
do_check_eq(AsyncResource.serverTime, TIMESTAMP);
@ -491,7 +490,7 @@ add_test(function test_weave_timestamp() {
add_test(function test_get_no_headers() {
_("GET: no special request headers");
let res_headers = new AsyncResource(RES_HEADERS_URL);
let res_headers = new AsyncResource(server.baseURI + "/headers");
res_headers.get(function (error, content) {
do_check_eq(error, null);
do_check_eq(content, '{}');
@ -501,7 +500,7 @@ add_test(function test_get_no_headers() {
add_test(function test_put_default_content_type() {
_("PUT: Content-Type defaults to text/plain");
let res_headers = new AsyncResource(RES_HEADERS_URL);
let res_headers = new AsyncResource(server.baseURI + "/headers");
res_headers.put('data', function (error, content) {
do_check_eq(error, null);
do_check_eq(content, JSON.stringify({"content-type": "text/plain"}));
@ -511,7 +510,7 @@ add_test(function test_put_default_content_type() {
add_test(function test_post_default_content_type() {
_("POST: Content-Type defaults to text/plain");
let res_headers = new AsyncResource(RES_HEADERS_URL);
let res_headers = new AsyncResource(server.baseURI + "/headers");
res_headers.post('data', function (error, content) {
do_check_eq(error, null);
do_check_eq(content, JSON.stringify({"content-type": "text/plain"}));
@ -521,7 +520,7 @@ add_test(function test_post_default_content_type() {
add_test(function test_setHeader() {
_("setHeader(): setting simple header");
let res_headers = new AsyncResource(RES_HEADERS_URL);
let res_headers = new AsyncResource(server.baseURI + "/headers");
res_headers.setHeader('X-What-Is-Weave', 'awesome');
do_check_eq(res_headers.headers['x-what-is-weave'], 'awesome');
res_headers.get(function (error, content) {
@ -533,7 +532,7 @@ add_test(function test_setHeader() {
add_test(function test_setHeader_overwrite() {
_("setHeader(): setting multiple headers, overwriting existing header");
let res_headers = new AsyncResource(RES_HEADERS_URL);
let res_headers = new AsyncResource(server.baseURI + "/headers");
res_headers.setHeader('X-WHAT-is-Weave', 'more awesomer');
res_headers.setHeader('X-Another-Header', 'hello world');
do_check_eq(res_headers.headers['x-what-is-weave'], 'more awesomer');
@ -549,7 +548,7 @@ add_test(function test_setHeader_overwrite() {
add_test(function test_headers_object() {
_("Setting headers object");
let res_headers = new AsyncResource(RES_HEADERS_URL);
let res_headers = new AsyncResource(server.baseURI + "/headers");
res_headers.headers = {};
res_headers.get(function (error, content) {
do_check_eq(error, null);
@ -560,7 +559,7 @@ add_test(function test_headers_object() {
add_test(function test_put_override_content_type() {
_("PUT: override default Content-Type");
let res_headers = new AsyncResource(RES_HEADERS_URL);
let res_headers = new AsyncResource(server.baseURI + "/headers");
res_headers.setHeader('Content-Type', 'application/foobar');
do_check_eq(res_headers.headers['content-type'], 'application/foobar');
res_headers.put('data', function (error, content) {
@ -572,7 +571,7 @@ add_test(function test_put_override_content_type() {
add_test(function test_post_override_content_type() {
_("POST: override default Content-Type");
let res_headers = new AsyncResource(RES_HEADERS_URL);
let res_headers = new AsyncResource(server.baseURI + "/headers");
res_headers.setHeader('Content-Type', 'application/foobar');
res_headers.post('data', function (error, content) {
do_check_eq(error, null);
@ -589,7 +588,7 @@ add_test(function test_weave_backoff() {
}
Observers.add("weave:service:backoff:interval", onBackoff);
let res10 = new AsyncResource("http://localhost:8080/backoff");
let res10 = new AsyncResource(server.baseURI + "/backoff");
res10.get(function (error, content) {
do_check_eq(error, null);
do_check_eq(backoffInterval, 600);
@ -599,7 +598,7 @@ add_test(function test_weave_backoff() {
add_test(function test_quota_error() {
_("X-Weave-Quota-Remaining header notifies observer on successful requests.");
let res10 = new AsyncResource("http://localhost:8080/quota-error");
let res10 = new AsyncResource(server.baseURI + "/quota-error");
res10.get(function (error, content) {
do_check_eq(error, null);
do_check_eq(content.status, 400);
@ -609,7 +608,7 @@ add_test(function test_quota_error() {
});
add_test(function test_quota_notice() {
let res10 = new AsyncResource("http://localhost:8080/quota-notice");
let res10 = new AsyncResource(server.baseURI + "/quota-notice");
res10.get(function (error, content) {
do_check_eq(error, null);
do_check_eq(content.status, 200);
@ -631,7 +630,7 @@ add_test(function test_preserve_exceptions() {
add_test(function test_xpc_exception_handling() {
_("Exception handling inside fetches.");
let res14 = new AsyncResource("http://localhost:8080/json");
let res14 = new AsyncResource(server.baseURI + "/json");
res14._onProgress = function(rec) {
// Provoke an XPC exception without a Javascript wrapper.
Services.io.newURI("::::::::", null, null);
@ -645,7 +644,7 @@ add_test(function test_xpc_exception_handling() {
do_check_eq(content, null);
do_check_eq(warnings.pop(),
"Got exception calling onProgress handler during fetch of " +
"http://localhost:8080/json");
server.baseURI + "/json");
run_next_test();
});
@ -653,7 +652,7 @@ add_test(function test_xpc_exception_handling() {
add_test(function test_js_exception_handling() {
_("JS exception handling inside fetches.");
let res15 = new AsyncResource("http://localhost:8080/json");
let res15 = new AsyncResource(server.baseURI + "/json");
res15._onProgress = function(rec) {
throw "BOO!";
};
@ -666,7 +665,7 @@ add_test(function test_js_exception_handling() {
do_check_eq(content, null);
do_check_eq(warnings.pop(),
"Got exception calling onProgress handler during fetch of " +
"http://localhost:8080/json");
server.baseURI + "/json");
run_next_test();
});
@ -674,7 +673,7 @@ add_test(function test_js_exception_handling() {
add_test(function test_timeout() {
_("Ensure channel timeouts are thrown appropriately.");
let res19 = new AsyncResource("http://localhost:8080/json");
let res19 = new AsyncResource(server.baseURI + "/json");
res19.ABORT_TIMEOUT = 0;
res19.get(function (error, content) {
do_check_eq(error.result, Cr.NS_ERROR_NET_TIMEOUT);
@ -710,10 +709,10 @@ add_test(function test_not_sending_cookie() {
}
let cookieSer = Cc["@mozilla.org/cookieService;1"]
.getService(Ci.nsICookieService);
let uri = CommonUtils.makeURI("http://localhost:8080");
let uri = CommonUtils.makeURI(server.baseURI);
cookieSer.setCookieString(uri, null, "test=test; path=/;", null);
let res = new AsyncResource("http://localhost:8080/test");
let res = new AsyncResource(server.baseURI + "/test");
res.get(function (error) {
do_check_null(error);
do_check_true(this.response.success);

View File

@ -7,8 +7,6 @@ Cu.import("resource://services-sync/service.js");
Cu.import("resource://services-sync/util.js");
Cu.import("resource://testing-common/services/sync/utils.js");
const TEST_GET_URL = "http://localhost:8080/1.1/johndoe/storage/meta/global";
// Tracking info/collections.
let collectionsHelper = track_collections_helper();
let collections = collectionsHelper.collections;
@ -26,6 +24,7 @@ function uaHandler(f) {
}
function run_test() {
Log4Moz.repository.rootLogger.addAppender(new Log4Moz.DumpAppender());
meta_global = new ServerWBO('global');
server = httpd_setup({
"/1.1/johndoe/info/collections": uaHandler(collectionsHelper.handler),
@ -33,8 +32,9 @@ function run_test() {
});
setBasicCredentials("johndoe", "ilovejane");
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = server.baseURI + "/";
Service.clusterURL = server.baseURI + "/";
_("Server URL: " + server.baseURI);
expectedUA = Services.appinfo.name + "/" + Services.appinfo.version +
" FxSync/" + WEAVE_VERSION + "." +
@ -54,7 +54,7 @@ add_test(function test_fetchInfo() {
add_test(function test_desktop_post() {
_("Testing direct Resource POST.");
let r = new AsyncResource(TEST_GET_URL);
let r = new AsyncResource(server.baseURI + "/1.1/johndoe/storage/meta/global");
r.post("foo=bar", function (error, content) {
_("User-Agent: " + ua);
do_check_eq(ua, expectedUA + ".desktop");
@ -66,7 +66,7 @@ add_test(function test_desktop_post() {
add_test(function test_desktop_get() {
_("Testing async.");
Svc.Prefs.set("client.type", "desktop");
let r = new AsyncResource(TEST_GET_URL);
let r = new AsyncResource(server.baseURI + "/1.1/johndoe/storage/meta/global");
r.get(function(error, content) {
_("User-Agent: " + ua);
do_check_eq(ua, expectedUA + ".desktop");
@ -78,7 +78,7 @@ add_test(function test_desktop_get() {
add_test(function test_mobile_get() {
_("Testing mobile.");
Svc.Prefs.set("client.type", "mobile");
let r = new AsyncResource(TEST_GET_URL);
let r = new AsyncResource(server.baseURI + "/1.1/johndoe/storage/meta/global");
r.get(function (error, content) {
_("User-Agent: " + ua);
do_check_eq(ua, expectedUA + ".mobile");

View File

@ -43,8 +43,8 @@ function sync_httpd_setup() {
return httpd_setup(handlers);
}
function setUp() {
new SyncTestingInfrastructure("johndoe", "ilovejane", "sekrit");
function setUp(server) {
new SyncTestingInfrastructure(server, "johndoe", "ilovejane", "sekrit");
}
function run_test() {
@ -80,7 +80,7 @@ add_test(function test_tracker_score_updated() {
add_test(function test_sync_triggered() {
let server = sync_httpd_setup();
setUp();
setUp(server);
Service.login();
@ -103,7 +103,7 @@ add_test(function test_clients_engine_sync_triggered() {
// global score tracker gives it that treatment. See bug 676042 for more.
let server = sync_httpd_setup();
setUp();
setUp(server);
Service.login();
const TOPIC = "weave:service:sync:finish";
@ -121,7 +121,7 @@ add_test(function test_clients_engine_sync_triggered() {
add_test(function test_incorrect_credentials_sync_not_triggered() {
_("Ensure that score changes don't trigger a sync if Status.login != LOGIN_SUCCEEDED.");
let server = sync_httpd_setup();
setUp();
setUp(server);
// Ensure we don't actually try to sync.
function onSyncStart() {

View File

@ -29,8 +29,7 @@ add_test(function test_change_password() {
}
try {
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.baseURI = "http://localhost:9999/";
setBasicCredentials("johndoe", "ilovejane");
_("changePassword() returns false for a network error, the password won't change.");
@ -44,6 +43,7 @@ add_test(function test_change_password() {
"/user/1.0/janedoe/password": send(401, "Unauthorized", "Forbidden!")
});
Service.serverURL = server.baseURI;
res = Service.changePassword("ILoveJane83");
do_check_true(res);
do_check_eq(Service.identity.basicPassword, "ILoveJane83");

View File

@ -16,7 +16,7 @@ function run_test() {
"/user/1.0/vuuf3eqgloxpxmzph27f5a6ve7gzlrms": httpd_handler(200, "OK", "1")
});
try {
Service.serverURL = TEST_SERVER_URL;
Service.serverURL = server.baseURI;
_("A 404 will be recorded as 'generic-server-error'");
do_check_eq(Service.checkAccount("jimdoe"), "generic-server-error");

View File

@ -19,11 +19,10 @@ add_test(function test_findCluster() {
_("Test Service._findCluster()");
let server;
try {
Service.serverURL = TEST_SERVER_URL;
Service.identity.account = "johndoe";
_("_findCluster() throws on network errors (e.g. connection refused).");
do_check_throws(function() {
Service.serverURL = "http://dummy:9000/";
Service.identify.account = "johndoe";
Service._clusterManager._findCluster();
});
@ -35,6 +34,9 @@ add_test(function test_findCluster() {
"/user/1.0/joedoe/node/weave": httpd_handler(500, "Server Error", "Server Error")
});
Service.serverURL = server.baseURI;
Service.identity.account = "johndoe";
_("_findCluster() returns the user's cluster node");
let cluster = Service._clusterManager._findCluster();
do_check_eq(cluster, "http://weave.user.node/");
@ -76,7 +78,7 @@ add_test(function test_setCluster() {
"/user/1.0/jimdoe/node/weave": httpd_handler(200, "OK", "null")
});
try {
Service.serverURL = TEST_SERVER_URL;
Service.serverURL = server.baseURI;
Service.identity.account = "johndoe";
_("Check initial state.");

View File

@ -32,7 +32,7 @@ function run_test() {
"/user/1.0/vz6fhecgw5t3sgx3a4cektoiokyczkqd": send(500, "Server Error", "Server Error")
});
try {
Service.serverURL = TEST_SERVER_URL;
Service.serverURL = server.baseURI;
_("Create an account.");
let res = Service.createAccount("john@doe.com", "mysecretpw",

View File

@ -66,8 +66,7 @@ add_test(function v4_upgrade() {
Service.status.resetSync();
_("Logging in.");
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = server.baseURI;
Service.login("johndoe", "ilovejane", passphrase);
do_check_true(Service.isLoggedIn);
@ -102,8 +101,7 @@ add_test(function v4_upgrade() {
_("Syncing afresh...");
Service.logout();
Service.collectionKeys.clear();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = server.baseURI;
meta_global.payload = JSON.stringify({"syncID": "foooooooooooooobbbbbbbbbbbb",
"storageVersion": STORAGE_VERSION});
collections.meta = Date.now() / 1000;
@ -239,8 +237,8 @@ add_test(function v5_upgrade() {
Service.status.resetSync();
setBasicCredentials("johndoe", "ilovejane", passphrase);
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = server.baseURI + "/";
Service.clusterURL = server.baseURI + "/";
// Test an upgrade where the contents of the server would cause us to error
// -- keys decrypted with a different sync key, for example.

View File

@ -12,20 +12,20 @@ let collections = {steam: 65.11328,
diesel: 2.25488281};
function run_test() {
setBasicCredentials("johndoe", "ilovejane");
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Log4Moz.repository.getLogger("Sync.Service").level = Log4Moz.Level.Trace;
Log4Moz.repository.getLogger("Sync.StorageRequest").level = Log4Moz.Level.Trace;
initTestLogging();
setBasicCredentials("johndoe", "ilovejane");
run_next_test();
}
add_test(function test_success() {
let handler = httpd_handler(200, "OK", JSON.stringify(collections));
let server = httpd_setup({"/1.1/johndoe/info/collections": handler});
Service.serverURL = server.baseURI + "/";
Service.clusterURL = server.baseURI + "/";
let request = Service.getStorageInfo("collections", function (error, info) {
do_check_eq(error, null);
@ -65,6 +65,8 @@ add_test(function test_network_error() {
add_test(function test_http_error() {
let handler = httpd_handler(500, "Oh noez", "Something went wrong!");
let server = httpd_setup({"/1.1/johndoe/info/collections": handler});
Service.serverURL = server.baseURI + "/";
Service.clusterURL = server.baseURI + "/";
let request = Service.getStorageInfo(INFO_COLLECTIONS, function (error, info) {
do_check_eq(error.status, 500);
@ -76,6 +78,8 @@ add_test(function test_http_error() {
add_test(function test_invalid_json() {
let handler = httpd_handler(200, "OK", "Invalid JSON");
let server = httpd_setup({"/1.1/johndoe/info/collections": handler});
Service.serverURL = server.baseURI + "/";
Service.clusterURL = server.baseURI + "/";
let request = Service.getStorageInfo(INFO_COLLECTIONS, function (error, info) {
do_check_eq(error.name, "SyntaxError");

View File

@ -43,9 +43,6 @@ add_test(function test_offline() {
});
function setup() {
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
let janeHelper = track_collections_helper();
let janeU = janeHelper.with_updated_collection;
let janeColls = janeHelper.collections;
@ -53,7 +50,7 @@ function setup() {
let johnU = johnHelper.with_updated_collection;
let johnColls = johnHelper.collections;
return httpd_setup({
let server = httpd_setup({
"/1.1/johndoe/info/collections": login_handling(johnHelper.handler),
"/1.1/janedoe/info/collections": login_handling(janeHelper.handler),
@ -65,6 +62,9 @@ function setup() {
"/1.1/janedoe/storage/crypto/keys": janeU("crypto", new ServerWBO("keys").handler()),
"/1.1/janedoe/storage/meta/global": janeU("meta", new ServerWBO("global").handler())
});
Service.serverURL = server.baseURI;
return server;
}
add_test(function test_login_logout() {

View File

@ -67,7 +67,7 @@ function run_test() {
});
setBasicCredentials("johndoe", JAPANESE, "irrelevant");
Service.serverURL = TEST_SERVER_URL;
Service.serverURL = server.baseURI;
try {
_("Try to log in with the password.");

View File

@ -73,8 +73,8 @@ add_test(function test_removeClientData() {
Service.startOver();
do_check_false(engine.removed);
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = "https://localhost/";
Service.clusterURL = Service.serverURL;
do_check_false(engine.removed);
Service.startOver();

View File

@ -13,8 +13,6 @@ function run_test() {
_("When imported, Service.onStartup is called");
initTestLogging("Trace");
new SyncTestingInfrastructure();
// Test fixtures
Service.identity.username = "johndoe";

View File

@ -38,7 +38,7 @@ function run_test() {
try {
_("Set up test fixtures.");
new SyncTestingInfrastructure("johndoe", "ilovejane", "foo");
new SyncTestingInfrastructure(server, "johndoe", "ilovejane", "foo");
Service.scheduler.globalScore = GLOBAL_SCORE;
// Avoid daily ping
Svc.Prefs.set("lastPing", Math.floor(Date.now() / 1000));

View File

@ -65,8 +65,7 @@ function run_test() {
try {
_("Log in.");
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = server.baseURI;
_("Checking Status.sync with no credentials.");
Service.verifyAndFetchSymmetricKeys();
@ -81,8 +80,7 @@ function run_test() {
let syncKey = Service.identity.syncKey;
Service.startOver();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = server.baseURI;
Service.login("johndoe", "ilovejane", syncKey);
do_check_true(Service.isLoggedIn);

View File

@ -66,8 +66,8 @@ function sync_httpd_setup(handlers) {
return httpd_setup(handlers);
}
function setUp() {
new SyncTestingInfrastructure("johndoe", "ilovejane",
function setUp(server) {
new SyncTestingInfrastructure(server, "johndoe", "ilovejane",
"abcdeabcdeabcdeabcdeabcdea");
// Ensure that the server has valid keys so that logging in will work and not
// result in a server wipe, rendering many of these tests useless.
@ -95,7 +95,7 @@ add_test(function test_newAccount() {
"/1.1/johndoe/storage/meta/global": new ServerWBO("global", {}).handler(),
"/1.1/johndoe/storage/steam": new ServerWBO("steam", {}).handler()
});
setUp();
setUp(server);
try {
_("Engine is enabled from the beginning.");
@ -125,7 +125,7 @@ add_test(function test_enabledLocally() {
"/1.1/johndoe/storage/meta/global": metaWBO.handler(),
"/1.1/johndoe/storage/steam": new ServerWBO("steam", {}).handler()
});
setUp();
setUp(server);
try {
_("Enable engine locally.");
@ -161,7 +161,7 @@ add_test(function test_disabledLocally() {
"/1.1/johndoe/storage/meta/global": metaWBO.handler(),
"/1.1/johndoe/storage/steam": steamCollection.handler()
});
setUp();
setUp(server);
try {
_("Disable engine locally.");
@ -210,7 +210,7 @@ add_test(function test_disabledLocally_wipe503() {
"/1.1/johndoe/storage/meta/global": metaWBO.handler(),
"/1.1/johndoe/storage/steam": service_unavailable
});
setUp();
setUp(server);
_("Disable engine locally.");
Service._ignorePrefObserver = true;
@ -248,7 +248,7 @@ add_test(function test_enabledRemotely() {
"/1.1/johndoe/storage/steam":
upd("steam", new ServerWBO("steam", {}).handler())
});
setUp();
setUp(server);
// We need to be very careful how we do this, so that we don't trigger a
// fresh start!
@ -289,7 +289,7 @@ add_test(function test_disabledRemotelyTwoClients() {
"/1.1/johndoe/storage/steam":
upd("steam", new ServerWBO("steam", {}).handler())
});
setUp();
setUp(server);
try {
_("Enable engine locally.");
@ -330,7 +330,7 @@ add_test(function test_disabledRemotely() {
"/1.1/johndoe/storage/meta/global": metaWBO.handler(),
"/1.1/johndoe/storage/steam": new ServerWBO("steam", {}).handler()
});
setUp();
setUp(server);
try {
_("Enable engine locally.");
@ -363,7 +363,7 @@ add_test(function test_dependentEnginesEnabledLocally() {
"/1.1/johndoe/storage/steam": new ServerWBO("steam", {}).handler(),
"/1.1/johndoe/storage/stirling": new ServerWBO("stirling", {}).handler()
});
setUp();
setUp(server);
try {
_("Enable engine locally. Doing it on one is enough.");
@ -407,7 +407,7 @@ add_test(function test_dependentEnginesDisabledLocally() {
"/1.1/johndoe/storage/steam": steamCollection.handler(),
"/1.1/johndoe/storage/stirling": stirlingCollection.handler()
});
setUp();
setUp(server);
try {
_("Disable engines locally. Doing it on one is enough.");

View File

@ -37,17 +37,25 @@ function run_test() {
let johnColls = johnHelper.collections;
do_test_pending();
let server = httpd_setup({
let server;
function weaveHandler (request, response) {
response.setStatusLine(request.httpVersion, 200, "OK");
let body = server.baseURI + "/api/";
response.bodyOutputStream.write(body, body.length);
}
server = httpd_setup({
"/api/1.1/johndoe/info/collections": login_handling(johnHelper.handler),
"/api/1.1/janedoe/info/collections": service_unavailable,
"/api/1.1/johndoe/storage/crypto/keys": johnU("crypto", new ServerWBO("keys").handler()),
"/api/1.1/johndoe/storage/meta/global": johnU("meta", new ServerWBO("global").handler()),
"/user/1.0/johndoe/node/weave": httpd_handler(200, "OK", "http://localhost:8080/api/")
"/user/1.0/johndoe/node/weave": weaveHandler,
});
try {
Service.serverURL = TEST_SERVER_URL;
Service.serverURL = server.baseURI;
_("Force the initial state.");
Service.status.service = STATUS_OK;
@ -67,7 +75,7 @@ function run_test() {
do_check_eq(Service.status.login, LOGIN_FAILED_NO_PASSPHRASE);
_("verifyLogin() has found out the user's cluster URL, though.");
do_check_eq(Service.clusterURL, "http://localhost:8080/api/");
do_check_eq(Service.clusterURL, server.baseURI + "/api/");
_("Success if passphrase is set.");
Service.status.resetSync();

View File

@ -82,7 +82,7 @@ add_test(function test_credentials_preserved() {
_("Ensure that credentials are preserved if client is wiped.");
// Required for wipeClient().
Service.clusterURL = TEST_CLUSTER_URL;
Service.clusterURL = "http://dummy:9000/";
Service.identity.account = "testaccount";
Service.identity.basicPassword = "testpassword";
let key = Utils.generatePassphrase();

View File

@ -28,11 +28,11 @@ FakeCollection.prototype = {
}
};
function setUpTestFixtures() {
function setUpTestFixtures(server) {
let cryptoService = new FakeCryptoService();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = server.baseURI;
Service.clusterURL = server.baseURI;
setBasicCredentials("johndoe", null, "aabcdeabcdeabcdeabcdeabcde");
}
@ -56,7 +56,7 @@ add_test(function test_wipeServer_list_success() {
});
try {
setUpTestFixtures();
setUpTestFixtures(server);
new SyncTestingInfrastructure("johndoe", "irrelevant", "irrelevant");
_("Confirm initial environment.");
@ -90,7 +90,7 @@ add_test(function test_wipeServer_list_503() {
});
try {
setUpTestFixtures();
setUpTestFixtures(server);
new SyncTestingInfrastructure("johndoe", "irrelevant", "irrelevant");
_("Confirm initial environment.");
@ -136,10 +136,10 @@ add_test(function test_wipeServer_all_success() {
let server = httpd_setup({
"/1.1/johndoe/storage": storageHandler
});
setUpTestFixtures();
setUpTestFixtures(server);
_("Try deletion.");
new SyncTestingInfrastructure("johndoe", "irrelevant", "irrelevant");
new SyncTestingInfrastructure(server, "johndoe", "irrelevant", "irrelevant");
let returnedTimestamp = Service.wipeServer();
do_check_true(deleted);
do_check_eq(returnedTimestamp, serverTimestamp);
@ -168,10 +168,10 @@ add_test(function test_wipeServer_all_404() {
let server = httpd_setup({
"/1.1/johndoe/storage": storageHandler
});
setUpTestFixtures();
setUpTestFixtures(server);
_("Try deletion.");
new SyncTestingInfrastructure("johndoe", "irrelevant", "irrelevant");
new SyncTestingInfrastructure(server, "johndoe", "irrelevant", "irrelevant");
let returnedTimestamp = Service.wipeServer();
do_check_true(deleted);
do_check_eq(returnedTimestamp, serverTimestamp);
@ -195,12 +195,12 @@ add_test(function test_wipeServer_all_503() {
let server = httpd_setup({
"/1.1/johndoe/storage": storageHandler
});
setUpTestFixtures();
setUpTestFixtures(server);
_("Try deletion.");
let error;
try {
new SyncTestingInfrastructure("johndoe", "irrelevant", "irrelevant");
new SyncTestingInfrastructure(server, "johndoe", "irrelevant", "irrelevant");
Service.wipeServer();
do_throw("Should have thrown!");
} catch (ex) {
@ -214,7 +214,11 @@ add_test(function test_wipeServer_all_503() {
add_test(function test_wipeServer_all_connectionRefused() {
_("Service.wipeServer() throws if it encounters a network problem.");
setUpTestFixtures();
let server = httpd_setup({});
setUpTestFixtures(server);
Service.serverURL = "http://localhost:4352/";
Service.clusterURL = "http://localhost:4352/";
_("Try deletion.");
try {
@ -224,6 +228,6 @@ add_test(function test_wipeServer_all_connectionRefused() {
do_check_eq(ex.result, Cr.NS_ERROR_CONNECTION_REFUSED);
}
run_next_test();
Svc.Prefs.resetBranch("");
server.stop(run_next_test);
});

View File

@ -10,9 +10,11 @@ function makeSteamEngine() {
return new SyncEngine('Steam', Service);
}
let server;
function test_url_attributes() {
_("SyncEngine url attributes");
let syncTesting = new SyncTestingInfrastructure();
let syncTesting = new SyncTestingInfrastructure(server);
Service.clusterURL = "https://cluster/";
let engine = makeSteamEngine();
try {
@ -26,7 +28,7 @@ function test_url_attributes() {
function test_syncID() {
_("SyncEngine.syncID corresponds to preference");
let syncTesting = new SyncTestingInfrastructure();
let syncTesting = new SyncTestingInfrastructure(server);
let engine = makeSteamEngine();
try {
// Ensure pristine environment
@ -46,7 +48,7 @@ function test_syncID() {
function test_lastSync() {
_("SyncEngine.lastSync and SyncEngine.lastSyncLocal correspond to preferences");
let syncTesting = new SyncTestingInfrastructure();
let syncTesting = new SyncTestingInfrastructure(server);
let engine = makeSteamEngine();
try {
// Ensure pristine environment
@ -76,7 +78,7 @@ function test_lastSync() {
function test_toFetch() {
_("SyncEngine.toFetch corresponds to file on disk");
let syncTesting = new SyncTestingInfrastructure();
let syncTesting = new SyncTestingInfrastructure(server);
const filename = "weave/toFetch/steam.json";
let engine = makeSteamEngine();
try {
@ -106,7 +108,7 @@ function test_toFetch() {
function test_previousFailed() {
_("SyncEngine.previousFailed corresponds to file on disk");
let syncTesting = new SyncTestingInfrastructure();
let syncTesting = new SyncTestingInfrastructure(server);
const filename = "weave/failed/steam.json";
let engine = makeSteamEngine();
try {
@ -136,7 +138,7 @@ function test_previousFailed() {
function test_resetClient() {
_("SyncEngine.resetClient resets lastSync and toFetch");
let syncTesting = new SyncTestingInfrastructure();
let syncTesting = new SyncTestingInfrastructure(server);
let engine = makeSteamEngine();
try {
// Ensure pristine environment
@ -161,9 +163,6 @@ function test_resetClient() {
function test_wipeServer() {
_("SyncEngine.wipeServer deletes server data and resets the client.");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
let engine = makeSteamEngine();
const PAYLOAD = 42;
@ -171,6 +170,7 @@ function test_wipeServer() {
let server = httpd_setup({
"/1.1/foo/storage/steam": steamCollection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
do_test_pending();
try {
@ -191,6 +191,7 @@ function test_wipeServer() {
}
function run_test() {
server = httpd_setup({});
test_url_attributes();
test_syncID();
test_lastSync();
@ -198,4 +199,6 @@ function run_test() {
test_previousFailed();
test_resetClient();
test_wipeServer();
server.stop(run_next_test);
}

View File

@ -22,8 +22,8 @@ function cleanAndGo(server) {
server.stop(run_next_test);
}
function configureService(username, password) {
Service.clusterURL = TEST_CLUSTER_URL;
function configureService(server, username, password) {
Service.clusterURL = server.baseURI;
Service.identity.account = username || "foo";
Service.identity.basicPassword = password || "password";
@ -40,15 +40,15 @@ function createServerAndConfigureClient() {
};
const USER = "foo";
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = USER;
let server = new SyncServer();
server.registerUser(USER, "password");
server.createContents(USER, contents);
server.start();
Service.serverURL = server.baseURI;
Service.clusterURL = server.baseURI;
Service.identity.username = USER;
return [engine, server, USER];
}
@ -75,11 +75,6 @@ function run_test() {
add_test(function test_syncStartup_emptyOrOutdatedGlobalsResetsSync() {
_("SyncEngine._syncStartup resets sync and wipes server data if there's no or an outdated global record");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
// Some server side data that's going to be wiped
let collection = new ServerCollection();
collection.insert('flying',
@ -93,6 +88,9 @@ add_test(function test_syncStartup_emptyOrOutdatedGlobalsResetsSync() {
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
Service.identity.username = "foo";
let engine = makeRotaryEngine();
engine._store.items = {rekolok: "Rekonstruktionslokomotive"};
try {
@ -129,15 +127,14 @@ add_test(function test_syncStartup_emptyOrOutdatedGlobalsResetsSync() {
add_test(function test_syncStartup_serverHasNewerVersion() {
_("SyncEngine._syncStartup ");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
let global = new ServerWBO('global', {engines: {rotary: {version: 23456}}});
let server = httpd_setup({
"/1.1/foo/storage/meta/global": global.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
Service.identity.username = "foo";
let engine = makeRotaryEngine();
try {
@ -160,11 +157,9 @@ add_test(function test_syncStartup_serverHasNewerVersion() {
add_test(function test_syncStartup_syncIDMismatchResetsClient() {
_("SyncEngine._syncStartup resets sync if syncIDs don't match");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
let server = sync_httpd_setup({});
let syncTesting = new SyncTestingInfrastructure(server);
Service.identity.username = "foo";
// global record with a different syncID than our engine has
let engine = makeRotaryEngine();
@ -198,16 +193,14 @@ add_test(function test_syncStartup_syncIDMismatchResetsClient() {
add_test(function test_processIncoming_emptyServer() {
_("SyncEngine._processIncoming working with an empty server backend");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
let collection = new ServerCollection();
let server = sync_httpd_setup({
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
Service.identity.username = "foo";
let engine = makeRotaryEngine();
try {
@ -224,13 +217,6 @@ add_test(function test_processIncoming_emptyServer() {
add_test(function test_processIncoming_createFromServer() {
_("SyncEngine._processIncoming creates new records from server data");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
generateNewKeys(Service.collectionKeys);
// Some server records that will be downloaded
let collection = new ServerCollection();
collection.insert('flying',
@ -251,6 +237,11 @@ add_test(function test_processIncoming_createFromServer() {
"/1.1/foo/storage/rotary/scotsman": collection.wbo("scotsman").handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
Service.identity.username = "foo";
generateNewKeys(Service.collectionKeys);
let engine = makeRotaryEngine();
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
@ -287,10 +278,6 @@ add_test(function test_processIncoming_createFromServer() {
add_test(function test_processIncoming_reconcile() {
_("SyncEngine._processIncoming updates local records");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
let collection = new ServerCollection();
// This server record is newer than the corresponding client one,
@ -335,6 +322,9 @@ add_test(function test_processIncoming_reconcile() {
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
Service.identity.username = "foo";
let engine = makeRotaryEngine();
engine._store.items = {newerserver: "New data, but not as new as server!",
olderidentical: "Older but identical",
@ -608,11 +598,8 @@ add_test(function test_processIncoming_reconcile_changed_dupe_new() {
add_test(function test_processIncoming_mobile_batchSize() {
_("SyncEngine._processIncoming doesn't fetch everything at once on mobile clients");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
Svc.Prefs.set("client.type", "mobile");
Service.identity.username = "foo";
// A collection that logs each GET
let collection = new ServerCollection();
@ -637,6 +624,8 @@ add_test(function test_processIncoming_mobile_batchSize() {
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
let engine = makeRotaryEngine();
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
@ -679,9 +668,6 @@ add_test(function test_processIncoming_mobile_batchSize() {
add_test(function test_processIncoming_store_toFetch() {
_("If processIncoming fails in the middle of a batch on mobile, state is saved in toFetch and lastSync.");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
Svc.Prefs.set("client.type", "mobile");
@ -709,14 +695,16 @@ add_test(function test_processIncoming_store_toFetch() {
let engine = makeRotaryEngine();
engine.enabled = true;
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
let server = sync_httpd_setup({
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
try {
// Confirm initial environment
@ -748,9 +736,6 @@ add_test(function test_processIncoming_store_toFetch() {
add_test(function test_processIncoming_resume_toFetch() {
_("toFetch and previousFailed items left over from previous syncs are fetched on the next sync, along with new items.");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
const LASTSYNC = Date.now() / 1000;
@ -784,14 +769,16 @@ add_test(function test_processIncoming_resume_toFetch() {
engine.toFetch = ["flying", "scotsman"];
engine.previousFailed = ["failed0", "failed1", "failed2"];
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
let server = sync_httpd_setup({
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
try {
// Confirm initial environment
@ -818,9 +805,6 @@ add_test(function test_processIncoming_resume_toFetch() {
add_test(function test_processIncoming_applyIncomingBatchSize_smaller() {
_("Ensure that a number of incoming items less than applyIncomingBatchSize is still applied.");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
// Engine that doesn't like the first and last record it's given.
@ -843,14 +827,16 @@ add_test(function test_processIncoming_applyIncomingBatchSize_smaller() {
collection.insert(id, payload);
}
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
let server = sync_httpd_setup({
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
try {
// Confirm initial environment
@ -874,8 +860,6 @@ add_test(function test_processIncoming_applyIncomingBatchSize_smaller() {
add_test(function test_processIncoming_applyIncomingBatchSize_multiple() {
_("Ensure that incoming items are applied according to applyIncomingBatchSize.");
let syncTesting = new SyncTestingInfrastructure();
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
const APPLY_BATCH_SIZE = 10;
@ -899,14 +883,16 @@ add_test(function test_processIncoming_applyIncomingBatchSize_multiple() {
collection.insert(id, payload);
}
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
let server = sync_httpd_setup({
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
try {
// Confirm initial environment
@ -927,9 +913,6 @@ add_test(function test_processIncoming_applyIncomingBatchSize_multiple() {
add_test(function test_processIncoming_notify_count() {
_("Ensure that failed records are reported only once.");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
const APPLY_BATCH_SIZE = 5;
@ -952,14 +935,16 @@ add_test(function test_processIncoming_notify_count() {
collection.insert(id, payload);
}
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
let server = sync_httpd_setup({
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
try {
// Confirm initial environment.
do_check_eq(engine.lastSync, 0);
@ -1017,9 +1002,6 @@ add_test(function test_processIncoming_notify_count() {
add_test(function test_processIncoming_previousFailed() {
_("Ensure that failed records are retried.");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
Svc.Prefs.set("client.type", "mobile");
@ -1043,14 +1025,16 @@ add_test(function test_processIncoming_previousFailed() {
collection.insert(id, payload);
}
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
let server = sync_httpd_setup({
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
try {
// Confirm initial environment.
do_check_eq(engine.lastSync, 0);
@ -1104,9 +1088,6 @@ add_test(function test_processIncoming_previousFailed() {
add_test(function test_processIncoming_failed_records() {
_("Ensure that failed records from _reconcile and applyIncomingBatch are refetched.");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
// Let's create three and a bit batches worth of server side records.
@ -1149,11 +1130,6 @@ add_test(function test_processIncoming_failed_records() {
return this._applyIncoming.apply(this, arguments);
};
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
// Keep track of requests made of a collection.
let count = 0;
let uris = [];
@ -1169,6 +1145,13 @@ add_test(function test_processIncoming_failed_records() {
"/1.1/foo/storage/rotary": recording_handler(collection)
});
let syncTesting = new SyncTestingInfrastructure(server);
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
try {
// Confirm initial environment
@ -1240,9 +1223,6 @@ add_test(function test_processIncoming_failed_records() {
add_test(function test_processIncoming_decrypt_failed() {
_("Ensure that records failing to decrypt are either replaced or refetched.");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
// Some good and some bogus records. One doesn't contain valid JSON,
@ -1274,14 +1254,16 @@ add_test(function test_processIncoming_decrypt_failed() {
engine._store.items = {nojson: "Valid JSON",
nodecrypt: "Valid ciphertext"};
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
let server = sync_httpd_setup({
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
try {
// Confirm initial state
@ -1319,9 +1301,6 @@ add_test(function test_processIncoming_decrypt_failed() {
add_test(function test_uploadOutgoing_toEmptyServer() {
_("SyncEngine._uploadOutgoing uploads new records to server");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
let collection = new ServerCollection();
collection._wbos.flying = new ServerWBO('flying');
@ -1332,6 +1311,8 @@ add_test(function test_uploadOutgoing_toEmptyServer() {
"/1.1/foo/storage/rotary/flying": collection.wbo("flying").handler(),
"/1.1/foo/storage/rotary/scotsman": collection.wbo("scotsman").handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
generateNewKeys(Service.collectionKeys);
let engine = makeRotaryEngine();
@ -1379,9 +1360,6 @@ add_test(function test_uploadOutgoing_toEmptyServer() {
add_test(function test_uploadOutgoing_failed() {
_("SyncEngine._uploadOutgoing doesn't clear the tracker of objects that failed to upload.");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
let collection = new ServerCollection();
// We only define the "flying" WBO on the server, not the "scotsman"
@ -1392,6 +1370,8 @@ add_test(function test_uploadOutgoing_failed() {
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
let engine = makeRotaryEngine();
engine.lastSync = 123; // needs to be non-zero so that tracker is queried
engine._store.items = {flying: "LNER Class A3 4472",
@ -1443,9 +1423,6 @@ add_test(function test_uploadOutgoing_failed() {
add_test(function test_uploadOutgoing_MAX_UPLOAD_RECORDS() {
_("SyncEngine._uploadOutgoing uploads in batches of MAX_UPLOAD_RECORDS");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
let collection = new ServerCollection();
@ -1476,6 +1453,8 @@ add_test(function test_uploadOutgoing_MAX_UPLOAD_RECORDS() {
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
try {
// Confirm initial environment.
@ -1501,7 +1480,9 @@ add_test(function test_uploadOutgoing_MAX_UPLOAD_RECORDS() {
add_test(function test_syncFinish_noDelete() {
_("SyncEngine._syncFinish resets tracker's score");
let syncTesting = new SyncTestingInfrastructure();
let server = httpd_setup({});
let syncTesting = new SyncTestingInfrastructure(server);
let engine = makeRotaryEngine();
engine._delete = {}; // Nothing to delete
engine._tracker.score = 100;
@ -1509,16 +1490,13 @@ add_test(function test_syncFinish_noDelete() {
// _syncFinish() will reset the engine's score.
engine._syncFinish();
do_check_eq(engine.score, 0);
run_next_test();
server.stop(run_next_test);
});
add_test(function test_syncFinish_deleteByIds() {
_("SyncEngine._syncFinish deletes server records slated for deletion (list of record IDs).");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
let collection = new ServerCollection();
collection._wbos.flying = new ServerWBO(
@ -1534,6 +1512,7 @@ add_test(function test_syncFinish_deleteByIds() {
let server = httpd_setup({
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
let engine = makeRotaryEngine();
try {
@ -1558,9 +1537,6 @@ add_test(function test_syncFinish_deleteByIds() {
add_test(function test_syncFinish_deleteLotsInBatches() {
_("SyncEngine._syncFinish deletes server records in batches of 100 (list of record IDs).");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
let collection = new ServerCollection();
@ -1587,6 +1563,8 @@ add_test(function test_syncFinish_deleteLotsInBatches() {
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
let engine = makeRotaryEngine();
try {
@ -1630,15 +1608,13 @@ add_test(function test_syncFinish_deleteLotsInBatches() {
add_test(function test_sync_partialUpload() {
_("SyncEngine.sync() keeps changedIDs that couldn't be uploaded.");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
let collection = new ServerCollection();
let server = sync_httpd_setup({
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
generateNewKeys(Service.collectionKeys);
let engine = makeRotaryEngine();
@ -1705,9 +1681,6 @@ add_test(function test_sync_partialUpload() {
add_test(function test_canDecrypt_noCryptoKeys() {
_("SyncEngine.canDecrypt returns false if the engine fails to decrypt items on the server, e.g. due to a missing crypto key collection.");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
// Wipe collection keys so we can test the desired scenario.
@ -1722,6 +1695,7 @@ add_test(function test_canDecrypt_noCryptoKeys() {
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
let engine = makeRotaryEngine();
try {
@ -1734,9 +1708,6 @@ add_test(function test_canDecrypt_noCryptoKeys() {
add_test(function test_canDecrypt_true() {
_("SyncEngine.canDecrypt returns true if the engine can decrypt the items on the server.");
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
generateNewKeys(Service.collectionKeys);
@ -1750,6 +1721,7 @@ add_test(function test_canDecrypt_true() {
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
let engine = makeRotaryEngine();
try {
@ -1762,9 +1734,6 @@ add_test(function test_canDecrypt_true() {
});
add_test(function test_syncapplied_observer() {
let syncTesting = new SyncTestingInfrastructure();
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.identity.username = "foo";
const NUMBER_OF_RECORDS = 10;
@ -1779,13 +1748,16 @@ add_test(function test_syncapplied_observer() {
collection.insert(id, payload);
}
let server = httpd_setup({
"/1.1/foo/storage/rotary": collection.handler()
});
let syncTesting = new SyncTestingInfrastructure(server);
let meta_global = Service.recordManager.set(engine.metaURL,
new WBORecord(engine.metaURL));
meta_global.payload.engines = {rotary: {version: engine.version,
syncID: engine.syncID}};
let server = httpd_setup({
"/1.1/foo/storage/rotary": collection.handler()
});
let numApplyCalls = 0;
let engine_name;

View File

@ -52,9 +52,9 @@ function sync_httpd_setup() {
});
}
function setUp() {
function setUp(server) {
setBasicCredentials("johndoe", "ilovejane", "abcdeabcdeabcdeabcdeabcdea");
Service.clusterURL = TEST_CLUSTER_URL;
Service.clusterURL = server.baseURI + "/";
generateNewKeys(Service.collectionKeys);
let serverKeys = Service.collectionKeys.asWBO("crypto", "keys");
@ -196,7 +196,7 @@ add_test(function test_masterpassword_locked_retry_interval() {
};
let server = sync_httpd_setup();
setUp();
setUp(server);
Service.sync();
@ -239,7 +239,7 @@ add_test(function test_scheduleNextSync_nowOrPast() {
});
let server = sync_httpd_setup();
setUp();
setUp(server);
// We're late for a sync...
scheduler.scheduleNextSync(-1);
@ -346,7 +346,7 @@ add_test(function test_scheduleNextSync_future_backoff() {
add_test(function test_handleSyncError() {
let server = sync_httpd_setup();
setUp();
setUp(server);
// Force sync to fail.
Svc.Prefs.set("firstSync", "notReady");
@ -404,7 +404,7 @@ add_test(function test_handleSyncError() {
add_test(function test_client_sync_finish_updateClientMode() {
let server = sync_httpd_setup();
setUp();
setUp(server);
// Confirm defaults.
do_check_eq(scheduler.syncThreshold, SINGLE_USER_THRESHOLD);
@ -445,7 +445,7 @@ add_test(function test_autoconnect_nextSync_past() {
});
let server = sync_httpd_setup();
setUp();
setUp(server);
scheduler.delayedAutoConnect(0);
});
@ -477,7 +477,7 @@ add_test(function test_autoconnect_nextSync_future() {
add_test(function test_autoconnect_mp_locked() {
let server = sync_httpd_setup();
setUp();
setUp(server);
// Pretend user did not unlock master password.
let origLocked = Utils.mpLocked;
@ -512,7 +512,7 @@ add_test(function test_autoconnect_mp_locked() {
add_test(function test_no_autoconnect_during_wizard() {
let server = sync_httpd_setup();
setUp();
setUp(server);
// Simulate the Sync setup wizard.
Svc.Prefs.set("firstSync", "notReady");
@ -561,7 +561,7 @@ add_test(function test_autoconnectDelay_pref() {
Svc.Prefs.set("autoconnectDelay", 1);
let server = sync_httpd_setup();
setUp();
setUp(server);
Svc.Obs.notify("weave:service:ready");
@ -670,9 +670,9 @@ add_test(function test_no_sync_node() {
// Test when Status.sync == NO_SYNC_NODE_FOUND
// it is not overwritten on sync:finish
let server = sync_httpd_setup();
setUp();
setUp(server);
Service.serverURL = TEST_SERVER_URL;
Service.serverURL = server.baseURI + "/";
Service.sync();
do_check_eq(Status.sync, NO_SYNC_NODE_FOUND);
@ -692,7 +692,7 @@ add_test(function test_sync_failed_partial_500s() {
do_check_eq(Status.sync, SYNC_SUCCEEDED);
do_check_true(setUp());
do_check_true(setUp(server));
Service.sync();
@ -722,7 +722,7 @@ add_test(function test_sync_failed_partial_400s() {
do_check_eq(Status.sync, SYNC_SUCCEEDED);
do_check_true(setUp());
do_check_true(setUp(server));
Service.sync();
@ -740,7 +740,7 @@ add_test(function test_sync_failed_partial_400s() {
add_test(function test_sync_X_Weave_Backoff() {
let server = sync_httpd_setup();
setUp();
setUp(server);
// Use an odd value on purpose so that it doesn't happen to coincide with one
// of the sync intervals.
@ -795,7 +795,7 @@ add_test(function test_sync_X_Weave_Backoff() {
add_test(function test_sync_503_Retry_After() {
let server = sync_httpd_setup();
setUp();
setUp(server);
// Use an odd value on purpose so that it doesn't happen to coincide with one
// of the sync intervals.
@ -855,8 +855,8 @@ add_test(function test_sync_503_Retry_After() {
add_test(function test_loginError_recoverable_reschedules() {
_("Verify that a recoverable login error schedules a new sync.");
setBasicCredentials("johndoe", "ilovejane", "abcdeabcdeabcdeabcdeabcdea");
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.serverURL = "http://localhost:1234/";
Service.clusterURL = Service.serverURL;
Service.persistLogin();
Status.resetSync(); // reset Status.login
@ -897,15 +897,16 @@ add_test(function test_loginError_recoverable_reschedules() {
add_test(function test_loginError_fatal_clearsTriggers() {
_("Verify that a fatal login error clears sync triggers.");
setBasicCredentials("johndoe", "ilovejane", "abcdeabcdeabcdeabcdeabcdea");
Service.serverURL = TEST_SERVER_URL;
Service.clusterURL = TEST_CLUSTER_URL;
Service.persistLogin();
Status.resetSync(); // reset Status.login
let server = httpd_setup({
"/1.1/johndoe/info/collections": httpd_handler(401, "Unauthorized")
});
Service.serverURL = server.baseURI + "/";
Service.clusterURL = Service.serverURL;
Service.persistLogin();
Status.resetSync(); // reset Status.login
Svc.Obs.add("weave:service:login:error", function onLoginError() {
Svc.Obs.remove("weave:service:login:error", onLoginError);
Utils.nextTick(function aLittleBitAfterLoginError() {

View File

@ -8,8 +8,6 @@ Cu.import("resource://services-sync/service.js");
Cu.import("resource://services-sync/util.js");
Cu.import("resource://testing-common/services/sync/utils.js");
const STORAGE_REQUEST_RESOURCE_URL = TEST_SERVER_URL + "resource";
function run_test() {
Log4Moz.repository.getLogger("Sync.RESTRequest").level = Log4Moz.Level.Trace;
initTestLogging();
@ -25,7 +23,7 @@ add_test(function test_user_agent_desktop() {
" FxSync/" + WEAVE_VERSION + "." +
Services.appinfo.appBuildID + ".desktop";
let request = new SyncStorageRequest(STORAGE_REQUEST_RESOURCE_URL);
let request = new SyncStorageRequest(server.baseURI + "/resource");
request.onComplete = function onComplete(error) {
do_check_eq(error, null);
do_check_eq(this.response.status, 200);
@ -44,7 +42,7 @@ add_test(function test_user_agent_mobile() {
" FxSync/" + WEAVE_VERSION + "." +
Services.appinfo.appBuildID + ".mobile";
let request = new SyncStorageRequest(STORAGE_REQUEST_RESOURCE_URL);
let request = new SyncStorageRequest(server.baseURI + "/resource");
request.get(function (error) {
do_check_eq(error, null);
do_check_eq(this.response.status, 200);
@ -60,7 +58,7 @@ add_test(function test_auth() {
setBasicCredentials("johndoe", "ilovejane", "XXXXXXXXX");
let request = Service.getStorageRequest(STORAGE_REQUEST_RESOURCE_URL);
let request = Service.getStorageRequest(server.baseURI + "/resource");
request.get(function (error) {
do_check_eq(error, null);
do_check_eq(this.response.status, 200);
@ -84,7 +82,7 @@ add_test(function test_weave_timestamp() {
let server = httpd_setup({"/resource": handler});
do_check_eq(SyncStorageRequest.serverTime, undefined);
let request = new SyncStorageRequest(STORAGE_REQUEST_RESOURCE_URL);
let request = new SyncStorageRequest(server.baseURI + "/resource");
request.get(function (error) {
do_check_eq(error, null);
do_check_eq(this.response.status, 200);
@ -110,7 +108,7 @@ add_test(function test_weave_backoff() {
backoffInterval = subject;
});
let request = new SyncStorageRequest(STORAGE_REQUEST_RESOURCE_URL);
let request = new SyncStorageRequest(server.baseURI + "/resource");
request.get(function (error) {
do_check_eq(error, null);
do_check_eq(this.response.status, 200);
@ -135,7 +133,7 @@ add_test(function test_weave_quota_notice() {
quotaValue = subject;
});
let request = new SyncStorageRequest(STORAGE_REQUEST_RESOURCE_URL);
let request = new SyncStorageRequest(server.baseURI + "/resource");
request.get(function (error) {
do_check_eq(error, null);
do_check_eq(this.response.status, 200);
@ -160,7 +158,7 @@ add_test(function test_weave_quota_error() {
}
Svc.Obs.add("weave:service:quota:remaining", onQuota);
let request = new SyncStorageRequest(STORAGE_REQUEST_RESOURCE_URL);
let request = new SyncStorageRequest(server.baseURI + "/resource");
request.get(function (error) {
do_check_eq(error, null);
do_check_eq(this.response.status, 400);
@ -179,7 +177,7 @@ add_test(function test_abort() {
}
let server = httpd_setup({"/resource": handler});
let request = new SyncStorageRequest(STORAGE_REQUEST_RESOURCE_URL);
let request = new SyncStorageRequest(server.baseURI + "/resource");
// Aborting a request that hasn't been sent yet is pointless and will throw.
do_check_throws(function () {