| 'use strict'; |
| |
| const common = require('../common'); |
| common.skipIfInspectorDisabled(); |
| |
| const assert = require('assert'); |
| const childProcess = require('child_process'); |
| const http = require('http'); |
| |
| let port; |
| |
| const server = http.createServer(common.mustCall((req, res) => { |
| if (req.url.startsWith('/json')) { |
| res.writeHead(200); |
| res.end(`[ { |
| "description": "", |
| "devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:${port}/devtools/page/DAB7FB6187B554E10B0BD18821265734", |
| "cid": "DAB7FB6187B554E10B0BD18821265734", |
| "title": "Fhqwhgads", |
| "type": "page", |
| "url": "https://www.example.com/", |
| "webSocketDebuggerUrl": "ws://localhost:${port}/devtools/page/DAB7FB6187B554E10B0BD18821265734" |
| } ]`); |
| } else { |
| res.setHeader('Upgrade', 'websocket'); |
| res.setHeader('Connection', 'Upgrade'); |
| res.setHeader('Sec-WebSocket-Accept', 'fhqwhgads'); |
| res.setHeader('Sec-WebSocket-Protocol', 'chat'); |
| res.writeHead(101); |
| res.end(); |
| } |
| }, 2)).listen(0, common.mustCall(() => { |
| port = server.address().port; |
| const proc = |
| childProcess.spawn(process.execPath, ['inspect', `localhost:${port}`]); |
| |
| let stdout = ''; |
| proc.stdout.on('data', common.mustCallAtLeast((data) => { |
| stdout += data.toString(); |
| assert.doesNotMatch(stdout, /\bok\b/); |
| })); |
| |
| let stderr = ''; |
| proc.stderr.on('data', (data) => { |
| stderr += data.toString(); |
| }); |
| |
| proc.on('exit', common.mustCall((code, signal) => { |
| assert.match(stderr, /\bWebSocket secret mismatch\b/); |
| assert.notStrictEqual(code, 0); |
| assert.strictEqual(signal, null); |
| server.close(); |
| })); |
| })); |