зеркало из https://github.com/mozilla/gecko-dev.git
90 строки
2.5 KiB
JavaScript
90 строки
2.5 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
"use strict";
|
|
|
|
this.EXPORTED_SYMBOLS = [
|
|
"TEST_CLUSTER_URL",
|
|
"TEST_SERVER_URL",
|
|
"btoa", // It comes from a module import.
|
|
"encryptPayload",
|
|
"setBasicCredentials",
|
|
"SyncTestingInfrastructure",
|
|
"waitForZeroTimer",
|
|
];
|
|
|
|
const {utils: Cu} = Components;
|
|
|
|
Cu.import("resource://services-common/utils.js");
|
|
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
|
|
* loop ticks (to account for the Utils.nextTick() in autoConnect).
|
|
*/
|
|
this.waitForZeroTimer = function waitForZeroTimer(callback) {
|
|
let ticks = 2;
|
|
function wait() {
|
|
if (ticks) {
|
|
ticks -= 1;
|
|
CommonUtils.nextTick(wait);
|
|
return;
|
|
}
|
|
callback();
|
|
}
|
|
CommonUtils.namedTimer(wait, 150, {}, "timer");
|
|
}
|
|
|
|
this.setBasicCredentials =
|
|
function setBasicCredentials(username, password, syncKey) {
|
|
let ns = {};
|
|
Cu.import("resource://services-sync/service.js", ns);
|
|
|
|
let auth = ns.Service.identity;
|
|
auth.username = username;
|
|
auth.basicPassword = password;
|
|
auth.syncKey = syncKey;
|
|
}
|
|
|
|
this.SyncTestingInfrastructure =
|
|
function SyncTestingInfrastructure(username, password, syncKey) {
|
|
let ns = {};
|
|
Cu.import("resource://services-sync/service.js", ns);
|
|
|
|
let auth = ns.Service.identity;
|
|
auth.account = username || "foo";
|
|
auth.basicPassword = password || "password";
|
|
auth.syncKey = syncKey || "abcdeabcdeabcdeabcdeabcdea";
|
|
|
|
ns.Service.serverURL = TEST_SERVER_URL;
|
|
ns.Service.clusterURL = TEST_CLUSTER_URL;
|
|
|
|
this.logStats = initTestLogging();
|
|
this.fakeFilesystem = new FakeFilesystemService({});
|
|
this.fakeGUIDService = new FakeGUIDService();
|
|
this.fakeCryptoService = new FakeCryptoService();
|
|
}
|
|
|
|
/**
|
|
* Turn WBO cleartext into fake "encrypted" payload as it goes over the wire.
|
|
*/
|
|
this.encryptPayload = function encryptPayload(cleartext) {
|
|
if (typeof cleartext == "object") {
|
|
cleartext = JSON.stringify(cleartext);
|
|
}
|
|
|
|
return {
|
|
ciphertext: cleartext, // ciphertext == cleartext with fake crypto
|
|
IV: "irrelevant",
|
|
hmac: fakeSHA256HMAC(cleartext, CryptoUtils.makeHMACKey("")),
|
|
};
|
|
}
|
|
|