1'use strict'; 2 3const common = require('../common'); 4common.skipIfInspectorDisabled(); 5 6const assert = require('assert'); 7const childProcess = require('child_process'); 8const http = require('http'); 9 10let port; 11 12const server = http.createServer(common.mustCall((req, res) => { 13 if (req.url.startsWith('/json')) { 14 res.writeHead(200); 15 res.end(`[ { 16 "description": "", 17 "devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:${port}/devtools/page/DAB7FB6187B554E10B0BD18821265734", 18 "cid": "DAB7FB6187B554E10B0BD18821265734", 19 "title": "Fhqwhgads", 20 "type": "page", 21 "url": "https://www.example.com/", 22 "webSocketDebuggerUrl": "ws://localhost:${port}/devtools/page/DAB7FB6187B554E10B0BD18821265734" 23 } ]`); 24 } else { 25 res.setHeader('Upgrade', 'websocket'); 26 res.setHeader('Connection', 'Upgrade'); 27 res.setHeader('Sec-WebSocket-Accept', 'fhqwhgads'); 28 res.setHeader('Sec-WebSocket-Protocol', 'chat'); 29 res.writeHead(101); 30 res.end(); 31 } 32}, 2)).listen(0, common.mustCall(() => { 33 port = server.address().port; 34 const proc = 35 childProcess.spawn(process.execPath, ['inspect', `localhost:${port}`]); 36 37 let stdout = ''; 38 proc.stdout.on('data', (data) => { 39 stdout += data.toString(); 40 assert.doesNotMatch(stdout, /\bok\b/); 41 }); 42 43 let stderr = ''; 44 proc.stderr.on('data', (data) => { 45 stderr += data.toString(); 46 }); 47 48 proc.on('exit', common.mustCall((code, signal) => { 49 assert.match(stderr, /\bWebSocket secret mismatch\b/); 50 assert.notStrictEqual(code, 0); 51 assert.strictEqual(signal, null); 52 server.close(); 53 })); 54})); 55