Cu.import("resource://services-sync/record.js"); Cu.import("resource://services-sync/engines.js"); Cu.import("resource://services-sync/util.js"); Svc.DefaultPrefs.set("registerEngines", ""); Cu.import("resource://services-sync/service.js"); function CanDecryptEngine() { SyncEngine.call(this, "CanDecrypt"); } CanDecryptEngine.prototype = { __proto__: SyncEngine.prototype, // Override these methods with mocks for the test canDecrypt: function canDecrypt() { return true; }, wasWiped: false, wipeClient: function wipeClient() { this.wasWiped = true; } }; Engines.register(CanDecryptEngine); function CannotDecryptEngine() { SyncEngine.call(this, "CannotDecrypt"); } CannotDecryptEngine.prototype = { __proto__: SyncEngine.prototype, // Override these methods with mocks for the test canDecrypt: function canDecrypt() { return false; }, wasWiped: false, wipeClient: function wipeClient() { this.wasWiped = true; } }; Engines.register(CannotDecryptEngine); function test_withEngineList() { try { _("Ensure initial scenario."); do_check_false(Engines.get("candecrypt").wasWiped); do_check_false(Engines.get("cannotdecrypt").wasWiped); _("Wipe local engine data."); Service.wipeClient(["candecrypt", "cannotdecrypt"]); _("Ensure only the engine that can decrypt was wiped."); do_check_true(Engines.get("candecrypt").wasWiped); do_check_false(Engines.get("cannotdecrypt").wasWiped); } finally { Engines.get("candecrypt").wasWiped = false; Engines.get("cannotdecrypt").wasWiped = false; Service.startOver(); } } function test_startOver_clears_keys() { generateNewKeys(); do_check_true(!!CollectionKeys.keyForCollection()); Service.startOver(); do_check_false(!!CollectionKeys.keyForCollection()); } function run_test() { test_withEngineList(); test_startOver_clears_keys(); }