diff options
Diffstat (limited to 'dom/push/test/xpcshell/test_notification_version_string.js')
-rw-r--r-- | dom/push/test/xpcshell/test_notification_version_string.js | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/dom/push/test/xpcshell/test_notification_version_string.js b/dom/push/test/xpcshell/test_notification_version_string.js new file mode 100644 index 0000000000..4e50a56ebf --- /dev/null +++ b/dom/push/test/xpcshell/test_notification_version_string.js @@ -0,0 +1,81 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +const { PushDB, PushService, PushServiceWebSocket } = serviceExports; + +const userAgentID = "ba31ac13-88d4-4984-8e6b-8731315a7cf8"; + +function run_test() { + do_get_profile(); + setPrefs({ + userAgentID, + }); + run_next_test(); +} + +add_task(async function test_notification_version_string() { + let db = PushServiceWebSocket.newPushDB(); + registerCleanupFunction(() => { + return db.drop().then(_ => db.close()); + }); + await db.put({ + channelID: "6ff97d56-d0c0-43bc-8f5b-61b855e1d93b", + pushEndpoint: "https://example.org/updates/1", + scope: "https://example.com/page/1", + originAttributes: "", + version: 2, + quota: Infinity, + systemRecord: true, + }); + + let notifyPromise = promiseObserverNotification( + PushServiceComponent.pushTopic + ); + + let ackDone; + let ackPromise = new Promise(resolve => (ackDone = resolve)); + PushService.init({ + serverURI: "wss://push.example.org/", + db, + makeWebSocket(uri) { + return new MockWebSocket(uri, { + onHello(request) { + this.serverSendMsg( + JSON.stringify({ + messageType: "hello", + status: 200, + uaid: userAgentID, + }) + ); + this.serverSendMsg( + JSON.stringify({ + messageType: "notification", + updates: [ + { + channelID: "6ff97d56-d0c0-43bc-8f5b-61b855e1d93b", + version: "4", + }, + ], + }) + ); + }, + onACK: ackDone, + }); + }, + }); + + let { subject: message } = await notifyPromise; + equal( + message.QueryInterface(Ci.nsIPushMessage).data, + null, + "Unexpected data for Simple Push message" + ); + + await ackPromise; + + let storeRecord = await db.getByKeyID("6ff97d56-d0c0-43bc-8f5b-61b855e1d93b"); + strictEqual(storeRecord.version, 4, "Wrong record version"); + equal(storeRecord.quota, Infinity, "Wrong quota"); +}); |