| 'use strict'; |
| |
| const common = require('../common'); |
| const assert = require('assert'); |
| const { request } = require('http'); |
| const { Duplex } = require('stream'); |
| |
| let socket; |
| |
| function createConnection(...args) { |
| socket = new Duplex({ |
| read() {}, |
| write(chunk, encoding, callback) { |
| if (chunk.toString().includes('\r\n\r\n')) { |
| this.push('HTTP/1.1 100 Continue\r\n\r\n'); |
| } |
| |
| callback(); |
| } |
| }); |
| |
| return socket; |
| } |
| |
| const req = request('http://localhost:8080', { createConnection }); |
| |
| req.on('information', common.mustCall(({ statusCode }) => { |
| assert.strictEqual(statusCode, 100); |
| socket.push('HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n'); |
| socket.push(null); |
| })); |
| |
| req.on('response', common.mustCall(({ statusCode }) => { |
| assert.strictEqual(statusCode, 200); |
| })); |
| |
| req.end(); |