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