/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
const { Service } = ChromeUtils.importESModule(
"resource://services-sync/service.sys.mjs"
);
let syncedEngines = [];
function SteamEngine() {
SyncEngine.call(this , "Steam" , Service);
}
SteamEngine.prototype = {
async _sync() {
syncedEngines.push(this .name);
},
};
Object.setPrototypeOf(SteamEngine.prototype, SyncEngine.prototype);
function StirlingEngine() {
SyncEngine.call(this , "Stirling" , Service);
}
StirlingEngine.prototype = {
async _sync() {
syncedEngines.push(this .name);
},
};
Object.setPrototypeOf(StirlingEngine.prototype, SteamEngine.prototype);
// Tracking info/collections.
var collectionsHelper = track_collections_helper();
var upd = collectionsHelper.with_updated_collection;
function sync_httpd_setup(handlers) {
handlers["/1.1/johndoe/info/collections" ] = collectionsHelper.handler;
delete collectionsHelper.collections.crypto;
delete collectionsHelper.collections.meta;
let cr = new ServerWBO("keys" );
handlers["/1.1/johndoe/storage/crypto/keys" ] = upd("crypto" , cr.handler());
let cl = new ServerCollection();
handlers["/1.1/johndoe/storage/clients" ] = upd("clients" , cl.handler());
return httpd_setup(handlers);
}
async function setUp() {
syncedEngines = [];
let engine = Service.engineManager.get("steam" );
engine.enabled = true ;
engine.syncPriority = 1;
engine = Service.engineManager.get("stirling" );
engine.enabled = true ;
engine.syncPriority = 2;
let server = sync_httpd_setup({
"/1.1/johndoe/storage/meta/global" : new ServerWBO("global" , {}).handler(),
});
await SyncTestingInfrastructure(server, "johndoe" , "ilovejane" );
return server;
}
add_task(async function setup() {
await Service.engineManager.clear();
validate_all_future_pings();
await Service.engineManager.register(SteamEngine);
await Service.engineManager.register(StirlingEngine);
});
add_task(async function test_noEngines() {
enableValidationPrefs();
_("Test: An empty array of engines to sync does nothing." );
let server = await setUp();
try {
_("Sync with no engines specified." );
await Service.sync({ engines: [] });
deepEqual(syncedEngines, [], "no engines were synced" );
} finally {
await Service.startOver();
await promiseStopServer(server);
}
});
add_task(async function test_oneEngine() {
enableValidationPrefs();
_("Test: Only one engine is synced." );
let server = await setUp();
try {
_("Sync with 1 engine specified." );
await Service.sync({ engines: ["steam" ] });
deepEqual(syncedEngines, ["steam" ]);
} finally {
await Service.startOver();
await promiseStopServer(server);
}
});
add_task(async function test_bothEnginesSpecified() {
enableValidationPrefs();
_("Test: All engines are synced when specified in the correct order (1)." );
let server = await setUp();
try {
_("Sync with both engines specified." );
await Service.sync({ engines: ["steam" , "stirling" ] });
deepEqual(syncedEngines, ["steam" , "stirling" ]);
} finally {
await Service.startOver();
await promiseStopServer(server);
}
});
add_task(async function test_bothEnginesSpecified() {
enableValidationPrefs();
_("Test: All engines are synced when specified in the correct order (2)." );
let server = await setUp();
try {
_("Sync with both engines specified." );
await Service.sync({ engines: ["stirling" , "steam" ] });
deepEqual(syncedEngines, ["stirling" , "steam" ]);
} finally {
await Service.startOver();
await promiseStopServer(server);
}
});
add_task(async function test_bothEnginesDefault() {
enableValidationPrefs();
_("Test: All engines are synced when nothing is specified." );
let server = await setUp();
try {
await Service.sync();
deepEqual(syncedEngines, ["steam" , "stirling" ]);
} finally {
await Service.startOver();
await promiseStopServer(server);
}
});
quality 96%
¤ Dauer der Verarbeitung: 0.3 Sekunden
¤
*© Formatika GbR, Deutschland