• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2
3const common = require('../common');
4if (!common.hasCrypto)
5  common.skip('missing crypto');
6const assert = require('assert');
7const http2 = require('http2');
8
9const codes = [ 200, 202, 300, 400, 404, 451, 500 ];
10let test = 0;
11
12const server = http2.createServer();
13
14server.on('stream', common.mustCall((stream) => {
15  const status = codes[test++];
16  stream.respond({ ':status': status }, { endStream: true });
17}, 7));
18
19server.listen(0, common.mustCall(() => {
20  const client = http2.connect(`http://localhost:${server.address().port}`);
21
22  let remaining = codes.length;
23  function maybeClose() {
24    if (--remaining === 0) {
25      client.close();
26      server.close();
27    }
28  }
29
30  function doTest(expected) {
31    const req = client.request();
32    req.on('response', common.mustCall((headers) => {
33      assert.strictEqual(headers[':status'], expected);
34    }));
35    req.resume();
36    req.on('end', common.mustCall(maybeClose));
37  }
38
39  for (let n = 0; n < codes.length; n++)
40    doTest(codes[n]);
41}));
42