• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2
3// Verifies that write callbacks are called
4
5const common = require('../common');
6if (!common.hasCrypto)
7  common.skip('missing crypto');
8const assert = require('assert');
9const http2 = require('http2');
10
11const server = http2.createServer();
12
13server.on('stream', common.mustCall((stream) => {
14  stream.write('abc', common.mustCall(() => {
15    stream.end('xyz');
16  }));
17  let actual = '';
18  stream.setEncoding('utf8');
19  stream.on('data', (chunk) => actual += chunk);
20  stream.on('end', common.mustCall(() => assert.strictEqual(actual, 'abcxyz')));
21}));
22
23server.listen(0, common.mustCall(() => {
24  const client = http2.connect(`http://localhost:${server.address().port}`);
25  const req = client.request({ ':method': 'POST' });
26  req.write('abc', common.mustCall(() => {
27    req.end('xyz');
28  }));
29  let actual = '';
30  req.setEncoding('utf8');
31  req.on('data', (chunk) => actual += chunk);
32  req.on('end', common.mustCall(() => assert.strictEqual(actual, 'abcxyz')));
33  req.on('close', common.mustCall(() => {
34    client.close();
35    server.close();
36  }));
37}));
38