inspector: inspect HTTP response body · nodejs/node@c047e73
@@ -130,6 +130,27 @@ function verifyLoadingFailed({ method, params }) {
130130assert.strictEqual(typeof params.errorText, 'string');
131131}
132132133+function verifyHttpResponse(response) {
134+assert.strictEqual(response.statusCode, 200);
135+const chunks = [];
136+137+// Verifies that the inspector does not put the response into flowing mode.
138+assert.strictEqual(response.readableFlowing, null);
139+// Verifies that the data listener may be added at a later time, and it can
140+// still observe the data in full.
141+queueMicrotask(() => {
142+response.on('data', (chunk) => {
143+chunks.push(chunk);
144+});
145+assert.strictEqual(response.readableFlowing, true);
146+});
147+148+response.on('end', common.mustCall(() => {
149+const body = Buffer.concat(chunks).toString();
150+assert.strictEqual(body, '\nhello world\n');
151+}));
152+}
153+133154async function testHttpGet() {
134155const url = `http://127.0.0.1:${httpServer.address().port}/hello-world`;
135156const requestWillBeSentFuture = once(session, 'Network.requestWillBeSent')
@@ -146,18 +167,20 @@ async function testHttpGet() {
146167port: httpServer.address().port,
147168path: '/hello-world',
148169headers: requestHeaders
149-}, common.mustCall((res) => {
150-// Dump the response.
151-res.on('data', () => {});
152-res.on('end', () => {});
153-}));
170+}, common.mustCall(verifyHttpResponse));
154171155172await requestWillBeSentFuture;
156173const responseReceived = await responseReceivedFuture;
157174const loadingFinished = await loadingFinishedFuture;
158175159176const delta = (loadingFinished.timestamp - responseReceived.timestamp) * 1000;
160177assert.ok(delta > kDelta);
178+179+const responseBody = await session.post('Network.getResponseBody', {
180+requestId: responseReceived.requestId,
181+});
182+assert.strictEqual(responseBody.base64Encoded, false);
183+assert.strictEqual(responseBody.body, '\nhello world\n');
161184}
162185163186async function testHttpsGet() {
@@ -177,18 +200,20 @@ async function testHttpsGet() {
177200path: '/hello-world',
178201rejectUnauthorized: false,
179202headers: requestHeaders,
180-}, common.mustCall((res) => {
181-// Dump the response.
182-res.on('data', () => {});
183-res.on('end', () => {});
184-}));
203+}, common.mustCall(verifyHttpResponse));
185204186205await requestWillBeSentFuture;
187206const responseReceived = await responseReceivedFuture;
188207const loadingFinished = await loadingFinishedFuture;
189208190209const delta = (loadingFinished.timestamp - responseReceived.timestamp) * 1000;
191210assert.ok(delta > kDelta);
211+212+const responseBody = await session.post('Network.getResponseBody', {
213+requestId: responseReceived.requestId,
214+});
215+assert.strictEqual(responseBody.base64Encoded, false);
216+assert.strictEqual(responseBody.body, '\nhello world\n');
192217}
193218194219async function testHttpError() {