1'use strict'; 2 3const common = require('../common'); 4if (!common.hasCrypto) 5 common.skip('missing crypto'); 6const assert = require('assert'); 7const h2 = require('http2'); 8 9// Http2ServerResponse should expose convenience properties 10 11const server = h2.createServer(); 12server.listen(0, common.mustCall(function() { 13 const port = server.address().port; 14 server.once('request', common.mustCall(function(request, response) { 15 assert.strictEqual(response.req, request); 16 17 // Verify that writing to response.req is allowed. 18 response.req = null; 19 20 response.on('finish', common.mustCall(function() { 21 process.nextTick(() => { 22 server.close(); 23 }); 24 })); 25 response.end(); 26 })); 27 28 const url = `http://localhost:${port}`; 29 const client = h2.connect(url, common.mustCall(function() { 30 const headers = { 31 ':path': '/foobar', 32 ':method': 'GET', 33 ':scheme': 'http', 34 ':authority': `localhost:${port}` 35 }; 36 const request = client.request(headers); 37 request.on('end', common.mustCall(function() { 38 client.close(); 39 })); 40 request.end(); 41 request.resume(); 42 })); 43})); 44