test_register_invalid_json.js (1555B)
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 = "8271186b-8073-43a3-adf6-225bd44a8b0a"; 7 const channelID = "2d08571e-feab-48a0-9f05-8254c3c7e61f"; 8 9 function run_test() { 10 do_get_profile(); 11 setPrefs({ 12 requestTimeout: 1000, 13 retryBaseInterval: 150, 14 }); 15 run_next_test(); 16 } 17 18 add_task(async function test_register_invalid_json() { 19 let helloDone; 20 let helloPromise = new Promise(resolve => (helloDone = after(2, resolve))); 21 let registers = 0; 22 23 PushServiceWebSocket._generateID = () => channelID; 24 PushService.init({ 25 serverURI: "wss://push.example.org/", 26 makeWebSocket(uri) { 27 return new MockWebSocket(uri, { 28 onHello() { 29 this.serverSendMsg( 30 JSON.stringify({ 31 messageType: "hello", 32 status: 200, 33 uaid: userAgentID, 34 }) 35 ); 36 helloDone(); 37 }, 38 onRegister(request) { 39 equal(request.channelID, channelID, "Register: wrong channel ID"); 40 this.serverSendMsg(");alert(1);("); 41 registers++; 42 }, 43 }); 44 }, 45 }); 46 47 await Assert.rejects( 48 PushService.register({ 49 scope: "https://example.net/page/invalid-json", 50 originAttributes: ChromeUtils.originAttributesToSuffix({ 51 inIsolatedMozBrowser: false, 52 }), 53 }), 54 /Registration error/, 55 "Expected error for invalid JSON response" 56 ); 57 58 await helloPromise; 59 equal(registers, 1, "Wrong register count"); 60 });