test_register_wrong_id.js (2038B)
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 = "84afc774-6995-40d1-9c90-8c34ddcd0cb4"; 7 const clientChannelID = "4b42a681c99e4dfbbb166a7e01a09b8b"; 8 const serverChannelID = "3f5aeb89c6e8405a9569619522783436"; 9 10 function run_test() { 11 do_get_profile(); 12 setPrefs({ 13 userAgentID, 14 requestTimeout: 1000, 15 retryBaseInterval: 150, 16 }); 17 run_next_test(); 18 } 19 20 add_task(async function test_register_wrong_id() { 21 // Should reconnect after the register request times out. 22 let registers = 0; 23 let helloDone; 24 let helloPromise = new Promise(resolve => (helloDone = after(2, resolve))); 25 26 PushServiceWebSocket._generateID = () => clientChannelID; 27 PushService.init({ 28 serverURI: "wss://push.example.org/", 29 makeWebSocket(uri) { 30 return new MockWebSocket(uri, { 31 onHello() { 32 this.serverSendMsg( 33 JSON.stringify({ 34 messageType: "hello", 35 status: 200, 36 uaid: userAgentID, 37 }) 38 ); 39 helloDone(); 40 }, 41 onRegister(request) { 42 equal( 43 request.channelID, 44 clientChannelID, 45 "Register: wrong channel ID" 46 ); 47 registers++; 48 this.serverSendMsg( 49 JSON.stringify({ 50 messageType: "register", 51 status: 200, 52 // Reply with a different channel ID. Since the ID is used as a 53 // nonce, the registration request will time out. 54 channelID: serverChannelID, 55 }) 56 ); 57 }, 58 }); 59 }, 60 }); 61 62 await Assert.rejects( 63 PushService.register({ 64 scope: "https://example.com/mismatched", 65 originAttributes: ChromeUtils.originAttributesToSuffix({ 66 inIsolatedMozBrowser: false, 67 }), 68 }), 69 /Registration error/, 70 "Expected error for mismatched register reply" 71 ); 72 73 await helloPromise; 74 equal(registers, 1, "Wrong register count"); 75 });