test_unregister_success.js (2244B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 const userAgentID = "fbe865a6-aeb8-446f-873c-aeebdb8d493c"; 7 const channelID = "db0a7021-ec2d-4bd3-8802-7a6966f10ed8"; 8 9 function run_test() { 10 do_get_profile(); 11 setPrefs({ 12 userAgentID, 13 }); 14 run_next_test(); 15 } 16 17 add_task(async function test_unregister_success() { 18 let db = PushServiceWebSocket.newPushDB(); 19 registerCleanupFunction(() => { 20 return db.drop().then(_ => db.close()); 21 }); 22 await db.put({ 23 channelID, 24 pushEndpoint: "https://example.org/update/unregister-success", 25 scope: "https://example.com/page/unregister-success", 26 originAttributes: "", 27 version: 1, 28 quota: Infinity, 29 }); 30 31 let unregisterDone; 32 let unregisterPromise = new Promise(resolve => (unregisterDone = resolve)); 33 PushService.init({ 34 serverURI: "wss://push.example.org/", 35 db, 36 makeWebSocket(uri) { 37 return new MockWebSocket(uri, { 38 onHello() { 39 this.serverSendMsg( 40 JSON.stringify({ 41 messageType: "hello", 42 status: 200, 43 uaid: userAgentID, 44 use_webpush: true, 45 }) 46 ); 47 }, 48 onUnregister(request) { 49 equal(request.channelID, channelID, "Should include the channel ID"); 50 equal(request.code, 200, "Expected manual unregister reason"); 51 this.serverSendMsg( 52 JSON.stringify({ 53 messageType: "unregister", 54 status: 200, 55 channelID, 56 }) 57 ); 58 unregisterDone(); 59 }, 60 }); 61 }, 62 }); 63 64 let subModifiedPromise = promiseObserverNotification( 65 PushServiceComponent.subscriptionModifiedTopic 66 ); 67 68 await PushService.unregister({ 69 scope: "https://example.com/page/unregister-success", 70 originAttributes: "", 71 }); 72 73 let { data: subModifiedScope } = await subModifiedPromise; 74 equal( 75 subModifiedScope, 76 "https://example.com/page/unregister-success", 77 "Should fire a subscription modified event after unsubscribing" 78 ); 79 80 let record = await db.getByKeyID(channelID); 81 ok(!record, "Unregister did not remove record"); 82 83 await unregisterPromise; 84 });