services/sync/tests/unit/test_engine_abort.js

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:6e3e694322ed
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 Cu.import("resource://services-sync/engines.js");
5 Cu.import("resource://services-sync/record.js");
6 Cu.import("resource://services-sync/service.js");
7 Cu.import("resource://services-sync/util.js");
8 Cu.import("resource://testing-common/services/sync/rotaryengine.js");
9 Cu.import("resource://testing-common/services/sync/utils.js");
10
11 add_test(function test_processIncoming_abort() {
12 _("An abort exception, raised in applyIncoming, will abort _processIncoming.");
13 let engine = new RotaryEngine(Service);
14
15 let collection = new ServerCollection();
16 let id = Utils.makeGUID();
17 let payload = encryptPayload({id: id, denomination: "Record No. " + id});
18 collection.insert(id, payload);
19
20 let server = sync_httpd_setup({
21 "/1.1/foo/storage/rotary": collection.handler()
22 });
23
24 new SyncTestingInfrastructure(server);
25 generateNewKeys(Service.collectionKeys);
26
27 _("Create some server data.");
28 let meta_global = Service.recordManager.set(engine.metaURL,
29 new WBORecord(engine.metaURL));
30 meta_global.payload.engines = {rotary: {version: engine.version,
31 syncID: engine.syncID}};
32 _("Fake applyIncoming to abort.");
33 engine._store.applyIncoming = function (record) {
34 let ex = {code: Engine.prototype.eEngineAbortApplyIncoming,
35 cause: "Nooo"};
36 _("Throwing: " + JSON.stringify(ex));
37 throw ex;
38 };
39
40 _("Trying _processIncoming. It will throw after aborting.");
41 let err;
42 try {
43 engine._syncStartup();
44 engine._processIncoming();
45 } catch (ex) {
46 err = ex;
47 }
48
49 do_check_eq(err, "Nooo");
50 err = undefined;
51
52 _("Trying engine.sync(). It will abort without error.");
53 try {
54 // This will quietly fail.
55 engine.sync();
56 } catch (ex) {
57 err = ex;
58 }
59
60 do_check_eq(err, undefined);
61
62 server.stop(run_next_test);
63 Svc.Prefs.resetBranch("");
64 Service.recordManager.clearCache();
65 });
66
67 function run_test() {
68 run_next_test();
69 }

mercurial