test_dbgglobal.js (2498B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 const { 7 SocketListener, 8 } = require("resource://devtools/shared/security/socket.js"); 9 10 function run_test() { 11 // Should get an exception if we try to interact with DevToolsServer 12 // before we initialize it... 13 const socketListener = new SocketListener(DevToolsServer, {}); 14 Assert.throws( 15 () => DevToolsServer.addSocketListener(socketListener), 16 /DevToolsServer has not been initialized/, 17 "addSocketListener should throw before it has been initialized" 18 ); 19 Assert.throws( 20 DevToolsServer.closeAllSocketListeners, 21 /this is undefined/, 22 "closeAllSocketListeners should throw before it has been initialized" 23 ); 24 Assert.throws( 25 DevToolsServer.connectPipe, 26 /this is undefined/, 27 "connectPipe should throw before it has been initialized" 28 ); 29 30 // Allow incoming connections. 31 DevToolsServer.init(); 32 33 // These should still fail because we haven't added a createRootActor 34 // implementation yet. 35 Assert.throws( 36 DevToolsServer.closeAllSocketListeners, 37 /this is undefined/, 38 "closeAllSocketListeners should throw if createRootActor hasn't been added" 39 ); 40 Assert.throws( 41 DevToolsServer.connectPipe, 42 /this is undefined/, 43 "closeAllSocketListeners should throw if createRootActor hasn't been added" 44 ); 45 46 const { createRootActor } = require("xpcshell-test/testactors"); 47 DevToolsServer.setRootActor(createRootActor); 48 49 // Now they should work. 50 DevToolsServer.addSocketListener(socketListener); 51 DevToolsServer.closeAllSocketListeners(); 52 53 // Make sure we got the test's root actor all set up. 54 const client1 = DevToolsServer.connectPipe(); 55 client1.hooks = { 56 onPacket(packet1) { 57 Assert.equal(packet1.from, "root"); 58 Assert.equal(packet1.applicationType, "xpcshell-tests"); 59 60 // Spin up a second connection, make sure it has its own root 61 // actor. 62 const client2 = DevToolsServer.connectPipe(); 63 client2.hooks = { 64 onPacket(packet2) { 65 Assert.equal(packet2.from, "root"); 66 Assert.notEqual( 67 packet1.testConnectionPrefix, 68 packet2.testConnectionPrefix 69 ); 70 client2.close(); 71 }, 72 onTransportClosed() { 73 client1.close(); 74 }, 75 }; 76 client2.ready(); 77 }, 78 79 onTransportClosed() { 80 do_test_finished(); 81 }, 82 }; 83 84 client1.ready(); 85 do_test_pending(); 86 }