1'use strict'; 2 3const common = require('../common'); 4if (!common.hasCrypto) 5 common.skip('missing crypto'); 6const assert = require('assert'); 7const h2 = require('http2'); 8const net = require('net'); 9 10// Http2ServerResponse.finished 11const server = h2.createServer(); 12server.listen(0, common.mustCall(() => { 13 const port = server.address().port; 14 server.once('request', common.mustCall((request, response) => { 15 assert.ok(response.socket instanceof net.Socket); 16 assert.ok(response.connection instanceof net.Socket); 17 assert.strictEqual(response.socket, response.connection); 18 19 response.on('finish', common.mustCall(() => { 20 assert.strictEqual(response.socket, undefined); 21 assert.strictEqual(response.connection, undefined); 22 process.nextTick(common.mustCall(() => { 23 assert.ok(response.stream); 24 server.close(); 25 })); 26 })); 27 assert.strictEqual(response.finished, false); 28 assert.strictEqual(response.writableEnded, false); 29 response.end(); 30 assert.strictEqual(response.finished, true); 31 assert.strictEqual(response.writableEnded, true); 32 })); 33 34 const url = `http://localhost:${port}`; 35 const client = h2.connect(url, common.mustCall(() => { 36 const headers = { 37 ':path': '/', 38 ':method': 'GET', 39 ':scheme': 'http', 40 ':authority': `localhost:${port}` 41 }; 42 const request = client.request(headers); 43 request.on('end', common.mustCall(() => { 44 client.close(); 45 })); 46 request.end(); 47 request.resume(); 48 })); 49})); 50