60 lines
1.9 KiB
JavaScript
60 lines
1.9 KiB
JavaScript
/* 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"
|
|
);
|
|
const { RotaryEngine } = ChromeUtils.importESModule(
|
|
"resource://testing-common/services/sync/rotaryengine.sys.mjs"
|
|
);
|
|
|
|
add_task(async function test_412_not_treated_as_failure() {
|
|
await Service.engineManager.register(RotaryEngine);
|
|
let engine = Service.engineManager.get("rotary");
|
|
|
|
let server = await serverForFoo(engine);
|
|
|
|
await SyncTestingInfrastructure(server);
|
|
await generateNewKeys(Service.collectionKeys);
|
|
|
|
// add an item to the server to the first sync advances lastModified.
|
|
let collection = server.getCollection("foo", "rotary");
|
|
let payload = encryptPayload({
|
|
id: "existing",
|
|
something: "existing record",
|
|
});
|
|
collection.insert("existing", payload);
|
|
|
|
let promiseObserved = promiseOneObserver("weave:engine:sync:finish");
|
|
try {
|
|
// Do sync.
|
|
_("initial sync to initialize the world");
|
|
await Service.sync();
|
|
|
|
// create a new record that should be uploaded and arrange for our lastSync
|
|
// timestamp to be wrong so we get a 412.
|
|
engine._store.items = { new: "new record" };
|
|
await engine._tracker.addChangedID("new", 0);
|
|
|
|
let saw412 = false;
|
|
let _uploadOutgoing = engine._uploadOutgoing;
|
|
engine._uploadOutgoing = async () => {
|
|
let lastSync = await engine.getLastSync();
|
|
await engine.setLastSync(lastSync - 2);
|
|
try {
|
|
await _uploadOutgoing.call(engine);
|
|
} catch (ex) {
|
|
saw412 = ex.status == 412;
|
|
throw ex;
|
|
}
|
|
};
|
|
_("Second sync - expecting a 412");
|
|
await Service.sync();
|
|
await promiseObserved;
|
|
ok(saw412, "did see a 412 error");
|
|
// But service status should be OK as the 412 shouldn't be treated as an error.
|
|
equal(Service.status.service, STATUS_OK);
|
|
} finally {
|
|
await promiseStopServer(server);
|
|
}
|
|
});
|