test_register_request_queue.js (1876B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 function run_test() { 7 do_get_profile(); 8 setPrefs({ 9 requestTimeout: 1000, 10 retryBaseInterval: 150, 11 }); 12 run_next_test(); 13 } 14 15 add_task(async function test_register_request_queue() { 16 let db = PushServiceWebSocket.newPushDB(); 17 registerCleanupFunction(() => { 18 return db.drop().then(_ => db.close()); 19 }); 20 21 let onHello; 22 let helloPromise = new Promise( 23 resolve => 24 (onHello = after(2, function onHelloReceived() { 25 this.serverSendMsg( 26 JSON.stringify({ 27 messageType: "hello", 28 status: 200, 29 uaid: "54b08a9e-59c6-4ed7-bb54-f4fd60d6f606", 30 }) 31 ); 32 resolve(); 33 })) 34 ); 35 36 PushService.init({ 37 serverURI: "wss://push.example.org/", 38 db, 39 makeWebSocket(uri) { 40 return new MockWebSocket(uri, { 41 onHello, 42 onRegister() { 43 ok(false, "Should cancel timed-out requests"); 44 }, 45 }); 46 }, 47 }); 48 49 let firstRegister = PushService.register({ 50 scope: "https://example.com/page/1", 51 originAttributes: ChromeUtils.originAttributesToSuffix({ 52 inIsolatedMozBrowser: false, 53 }), 54 }); 55 let secondRegister = PushService.register({ 56 scope: "https://example.com/page/1", 57 originAttributes: ChromeUtils.originAttributesToSuffix({ 58 inIsolatedMozBrowser: false, 59 }), 60 }); 61 62 await Promise.all([ 63 // eslint-disable-next-line mozilla/rejects-requires-await 64 Assert.rejects( 65 firstRegister, 66 /Registration error/, 67 "Should time out the first request" 68 ), 69 // eslint-disable-next-line mozilla/rejects-requires-await 70 Assert.rejects( 71 secondRegister, 72 /Registration error/, 73 "Should time out the second request" 74 ), 75 ]); 76 77 await helloPromise; 78 });