зеркало из https://github.com/mozilla/gecko-dev.git
Bug 792546 - Part 2: Move fake services into testing-only JS module; r=rnewman
We still import these functions in head.js. This will be cleaned up later once functionality from head.js that uses them is moved into a testing-only JS module.
This commit is contained in:
Родитель
feb37233f3
Коммит
d16874d957
|
@ -63,6 +63,7 @@ sync_stage_modules := \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
sync_testing_modules := \
|
sync_testing_modules := \
|
||||||
|
fakeservices.js \
|
||||||
rotaryengine.js \
|
rotaryengine.js \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,103 @@
|
||||||
|
/* 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";
|
||||||
|
|
||||||
|
const EXPORTED_SYMBOLS = [
|
||||||
|
"FakeCryptoService",
|
||||||
|
"FakeFilesystemService",
|
||||||
|
"FakeGUIDService",
|
||||||
|
"fakeSHA256HMAC",
|
||||||
|
];
|
||||||
|
|
||||||
|
const {utils: Cu} = Components;
|
||||||
|
|
||||||
|
Cu.import("resource://services-sync/record.js");
|
||||||
|
Cu.import("resource://services-sync/util.js");
|
||||||
|
|
||||||
|
let btoa = Cu.import("resource://services-common/log4moz.js").btoa;
|
||||||
|
|
||||||
|
function FakeFilesystemService(contents) {
|
||||||
|
this.fakeContents = contents;
|
||||||
|
let self = this;
|
||||||
|
|
||||||
|
Utils.jsonSave = function jsonSave(filePath, that, obj, callback) {
|
||||||
|
let json = typeof obj == "function" ? obj.call(that) : obj;
|
||||||
|
self.fakeContents["weave/" + filePath + ".json"] = JSON.stringify(json);
|
||||||
|
callback.call(that);
|
||||||
|
};
|
||||||
|
|
||||||
|
Utils.jsonLoad = function jsonLoad(filePath, that, cb) {
|
||||||
|
let obj;
|
||||||
|
let json = self.fakeContents["weave/" + filePath + ".json"];
|
||||||
|
if (json) {
|
||||||
|
obj = JSON.parse(json);
|
||||||
|
}
|
||||||
|
cb.call(that, obj);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
function fakeSHA256HMAC(message) {
|
||||||
|
message = message.substr(0, 64);
|
||||||
|
while (message.length < 64) {
|
||||||
|
message += " ";
|
||||||
|
}
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
function FakeGUIDService() {
|
||||||
|
let latestGUID = 0;
|
||||||
|
|
||||||
|
Utils.makeGUID = function makeGUID() {
|
||||||
|
return "fake-guid-" + latestGUID++;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Mock implementation of WeaveCrypto. It does not encrypt or
|
||||||
|
* decrypt, merely returning the input verbatim.
|
||||||
|
*/
|
||||||
|
function FakeCryptoService() {
|
||||||
|
this.counter = 0;
|
||||||
|
|
||||||
|
delete Svc.Crypto; // get rid of the getter first
|
||||||
|
Svc.Crypto = this;
|
||||||
|
|
||||||
|
CryptoWrapper.prototype.ciphertextHMAC = function ciphertextHMAC(keyBundle) {
|
||||||
|
return fakeSHA256HMAC(this.ciphertext);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
FakeCryptoService.prototype = {
|
||||||
|
|
||||||
|
encrypt: function encrypt(clearText, symmetricKey, iv) {
|
||||||
|
return clearText;
|
||||||
|
},
|
||||||
|
|
||||||
|
decrypt: function decrypt(cipherText, symmetricKey, iv) {
|
||||||
|
return cipherText;
|
||||||
|
},
|
||||||
|
|
||||||
|
generateRandomKey: function generateRandomKey() {
|
||||||
|
return btoa("fake-symmetric-key-" + this.counter++);
|
||||||
|
},
|
||||||
|
|
||||||
|
generateRandomIV: function generateRandomIV() {
|
||||||
|
// A base64-encoded IV is 24 characters long
|
||||||
|
return btoa("fake-fake-fake-random-iv");
|
||||||
|
},
|
||||||
|
|
||||||
|
expandData: function expandData(data, len) {
|
||||||
|
return data;
|
||||||
|
},
|
||||||
|
|
||||||
|
deriveKeyFromPassphrase: function deriveKeyFromPassphrase(passphrase,
|
||||||
|
salt, keyLength) {
|
||||||
|
return "some derived key string composed of bytes";
|
||||||
|
},
|
||||||
|
|
||||||
|
generateRandomBytes: function generateRandomBytes(byteCount) {
|
||||||
|
return "not-so-random-now-are-we-HA-HA-HA! >:)".slice(byteCount);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
|
@ -6,6 +6,8 @@ Cu.import("resource://services-common/async.js");
|
||||||
Cu.import("resource://services-sync/util.js");
|
Cu.import("resource://services-sync/util.js");
|
||||||
Cu.import("resource://services-sync/record.js");
|
Cu.import("resource://services-sync/record.js");
|
||||||
Cu.import("resource://services-sync/engines.js");
|
Cu.import("resource://services-sync/engines.js");
|
||||||
|
Cu.import("resource://testing-common/services/sync/fakeservices.js");
|
||||||
|
|
||||||
let btoa;
|
let btoa;
|
||||||
let atob;
|
let atob;
|
||||||
|
|
||||||
|
@ -144,89 +146,6 @@ function uninstallAddon(addon) {
|
||||||
Async.waitForSyncCallback(cb);
|
Async.waitForSyncCallback(cb);
|
||||||
}
|
}
|
||||||
|
|
||||||
function FakeFilesystemService(contents) {
|
|
||||||
this.fakeContents = contents;
|
|
||||||
let self = this;
|
|
||||||
|
|
||||||
Utils.jsonSave = function jsonSave(filePath, that, obj, callback) {
|
|
||||||
let json = typeof obj == "function" ? obj.call(that) : obj;
|
|
||||||
self.fakeContents["weave/" + filePath + ".json"] = JSON.stringify(json);
|
|
||||||
callback.call(that);
|
|
||||||
};
|
|
||||||
|
|
||||||
Utils.jsonLoad = function jsonLoad(filePath, that, callback) {
|
|
||||||
let obj;
|
|
||||||
let json = self.fakeContents["weave/" + filePath + ".json"];
|
|
||||||
if (json) {
|
|
||||||
obj = JSON.parse(json);
|
|
||||||
}
|
|
||||||
callback.call(that, obj);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
function FakeGUIDService() {
|
|
||||||
let latestGUID = 0;
|
|
||||||
|
|
||||||
Utils.makeGUID = function fake_makeGUID() {
|
|
||||||
return "fake-guid-" + latestGUID++;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function fakeSHA256HMAC(message) {
|
|
||||||
message = message.substr(0, 64);
|
|
||||||
while (message.length < 64) {
|
|
||||||
message += " ";
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Mock implementation of WeaveCrypto. It does not encrypt or
|
|
||||||
* decrypt, merely returning the input verbatim.
|
|
||||||
*/
|
|
||||||
function FakeCryptoService() {
|
|
||||||
this.counter = 0;
|
|
||||||
|
|
||||||
delete Svc.Crypto; // get rid of the getter first
|
|
||||||
Svc.Crypto = this;
|
|
||||||
|
|
||||||
CryptoWrapper.prototype.ciphertextHMAC = function ciphertextHMAC(keyBundle) {
|
|
||||||
return fakeSHA256HMAC(this.ciphertext);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
FakeCryptoService.prototype = {
|
|
||||||
|
|
||||||
encrypt: function(aClearText, aSymmetricKey, aIV) {
|
|
||||||
return aClearText;
|
|
||||||
},
|
|
||||||
|
|
||||||
decrypt: function(aCipherText, aSymmetricKey, aIV) {
|
|
||||||
return aCipherText;
|
|
||||||
},
|
|
||||||
|
|
||||||
generateRandomKey: function() {
|
|
||||||
return btoa("fake-symmetric-key-" + this.counter++);
|
|
||||||
},
|
|
||||||
|
|
||||||
generateRandomIV: function() {
|
|
||||||
// A base64-encoded IV is 24 characters long
|
|
||||||
return btoa("fake-fake-fake-random-iv");
|
|
||||||
},
|
|
||||||
|
|
||||||
expandData : function expandData(data, len) {
|
|
||||||
return data;
|
|
||||||
},
|
|
||||||
|
|
||||||
deriveKeyFromPassphrase : function (passphrase, salt, keyLength) {
|
|
||||||
return "some derived key string composed of bytes";
|
|
||||||
},
|
|
||||||
|
|
||||||
generateRandomBytes: function(aByteCount) {
|
|
||||||
return "not-so-random-now-are-we-HA-HA-HA! >:)".slice(aByteCount);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
function setBasicCredentials(username, password, syncKey) {
|
function setBasicCredentials(username, password, syncKey) {
|
||||||
let ns = {};
|
let ns = {};
|
||||||
Cu.import("resource://services-sync/service.js", ns);
|
Cu.import("resource://services-sync/service.js", ns);
|
||||||
|
|
|
@ -32,6 +32,7 @@ const modules = [
|
||||||
];
|
];
|
||||||
|
|
||||||
const testingModules = [
|
const testingModules = [
|
||||||
|
"fakeservices.js",
|
||||||
"rotaryengine.js",
|
"rotaryengine.js",
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче