• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2const common = require('../common');
3if (!common.hasCrypto)
4  common.skip('missing crypto');
5const assert = require('assert');
6const fixtures = require('../common/fixtures');
7const tls = require('tls');
8
9const iter = 10;
10
11const server = tls.createServer({
12  key: fixtures.readKey('agent2-key.pem'),
13  cert: fixtures.readKey('agent2-cert.pem')
14}, common.mustCall((socket) => {
15  let str = '';
16  socket.setEncoding('utf-8');
17  socket.on('data', (chunk) => { str += chunk; });
18
19  socket.on('end', common.mustCall(() => {
20    assert.strictEqual(str, 'a'.repeat(iter - 1));
21    server.close();
22  }));
23}));
24
25server.listen(0, common.mustCall(() => {
26  const client = tls.connect({
27    port: server.address().port,
28    rejectUnauthorized: false
29  }, common.mustCall(() => {
30    assert.strictEqual(client.bufferSize, 0);
31
32    for (let i = 1; i < iter; i++) {
33      client.write('a');
34      assert.strictEqual(client.bufferSize, i);
35    }
36
37    client.on('finish', common.mustCall(() => {
38      assert.strictEqual(client.bufferSize, 0);
39    }));
40
41    client.end();
42  }));
43}));
44