1
+
// Flags: --inspect=0 --experimental-network-inspection
2
+
'use strict';
3
+
const common = require('../common');
4
+
5
+
common.skipIfInspectorDisabled();
6
+
7
+
const assert = require('node:assert');
8
+
const http = require('node:http');
9
+
const inspector = require('node:inspector/promises');
10
+
11
+
const testNetworkInspection = async (session, port, assert) => {
12
+
let assertPromise = assert(session);
13
+
fetch(`http://127.0.0.1:${port}/hello-world`).then(common.mustCall());
14
+
await assertPromise;
15
+
session.removeAllListeners();
16
+
assertPromise = assert(session);
17
+
new Promise((resolve, reject) => {
18
+
const req = http.get(
19
+
{
20
+
host: '127.0.0.1',
21
+
port,
22
+
path: '/hello-world',
23
+
},
24
+
common.mustCall((res) => {
25
+
res.on('data', () => {});
26
+
res.on('end', () => {});
27
+
resolve(res);
28
+
})
29
+
);
30
+
req.on('error', reject);
31
+
});
32
+
await assertPromise;
33
+
session.removeAllListeners();
34
+
};
35
+
36
+
const test = (handleRequest, testSessionFunc) => new Promise((resolve) => {
37
+
const session = new inspector.Session();
38
+
session.connect();
39
+
const httpServer = http.createServer(handleRequest);
40
+
httpServer.listen(0, async () => {
41
+
try {
42
+
await session.post('Network.enable');
43
+
await testNetworkInspection(
44
+
session,
45
+
httpServer.address().port,
46
+
testSessionFunc
47
+
);
48
+
await session.post('Network.disable');
49
+
} catch (err) {
50
+
assert.fail(err);
51
+
} finally {
52
+
await session.disconnect();
53
+
await httpServer.close();
54
+
await inspector.close();
55
+
resolve();
56
+
}
57
+
});
58
+
});
59
+
60
+
(async () => {
61
+
await test(
62
+
(req, res) => {
63
+
res.setHeader('Content-Type', 'text/plain; charset=utf-8');
64
+
res.writeHead(200);
65
+
res.end('hello world\n');
66
+
},
67
+
common.mustCall(
68
+
(session) =>
69
+
new Promise((resolve) => {
70
+
session.on(
71
+
'Network.responseReceived',
72
+
common.mustCall(({ params }) => {
73
+
assert.strictEqual(params.response.mimeType, 'text/plain');
74
+
assert.strictEqual(params.response.charset, 'utf-8');
75
+
})
76
+
);
77
+
session.on(
78
+
'Network.loadingFinished',
79
+
common.mustCall(({ params }) => {
80
+
assert.ok(params.requestId.startsWith('node-network-event-'));
81
+
assert.strictEqual(typeof params.timestamp, 'number');
82
+
resolve();
83
+
})
84
+
);
85
+
}),
86
+
2
87
+
)
88
+
);
89
+
90
+
await test(
91
+
(req, res) => {
92
+
res.writeHead(200, {});
93
+
res.end('hello world\n');
94
+
},
95
+
common.mustCall((session) =>
96
+
new Promise((resolve) => {
97
+
session.on(
98
+
'Network.responseReceived',
99
+
common.mustCall(({ params }) => {
100
+
assert.strictEqual(params.response.mimeType, '');
101
+
assert.strictEqual(params.response.charset, '');
102
+
})
103
+
);
104
+
session.on(
105
+
'Network.loadingFinished',
106
+
common.mustCall(({ params }) => {
107
+
assert.ok(params.requestId.startsWith('node-network-event-'));
108
+
assert.strictEqual(typeof params.timestamp, 'number');
109
+
resolve();
110
+
})
111
+
);
112
+
}), 2
113
+
)
114
+
);
115
+
116
+
await test(
117
+
(req, res) => {
118
+
res.setHeader('Content-Type', 'invalid content-type');
119
+
res.writeHead(200);
120
+
res.end('hello world\n');
121
+
},
122
+
common.mustCall((session) =>
123
+
new Promise((resolve) => {
124
+
session.on(
125
+
'Network.responseReceived',
126
+
common.mustCall(({ params }) => {
127
+
assert.strictEqual(params.response.mimeType, '');
128
+
assert.strictEqual(params.response.charset, '');
129
+
})
130
+
);
131
+
session.on(
132
+
'Network.loadingFinished',
133
+
common.mustCall(({ params }) => {
134
+
assert.ok(params.requestId.startsWith('node-network-event-'));
135
+
assert.strictEqual(typeof params.timestamp, 'number');
136
+
resolve();
137
+
})
138
+
);
139
+
}), 2
140
+
)
141
+
);
142
+
143
+
await test(
144
+
(req, res) => {
145
+
res.setHeader('Content-Type', 'text/plain');
146
+
res.writeHead(200);
147
+
res.end('hello world\n');
148
+
},
149
+
common.mustCall((session) =>
150
+
new Promise((resolve) => {
151
+
session.on(
152
+
'Network.responseReceived',
153
+
common.mustCall(({ params }) => {
154
+
assert.strictEqual(params.response.mimeType, 'text/plain');
155
+
assert.strictEqual(params.response.charset, '');
156
+
})
157
+
);
158
+
session.on(
159
+
'Network.loadingFinished',
160
+
common.mustCall(({ params }) => {
161
+
assert.ok(params.requestId.startsWith('node-network-event-'));
162
+
assert.strictEqual(typeof params.timestamp, 'number');
163
+
resolve();
164
+
})
165
+
);
166
+
}), 2
167
+
)
168
+
);
169
+
170
+
})().then(common.mustCall());
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4