|
1 | 1 | 'use strict';
|
2 | 2 | const common = require('../common');
|
3 |
| -var assert = require('assert'); |
4 |
| -var http = require('http'); |
| 3 | +const assert = require('assert'); |
| 4 | +const http = require('http'); |
5 | 5 |
|
6 |
| -var serverGotConnect = false; |
7 |
| -var clientGotConnect = false; |
| 6 | +const server = http.createServer(common.fail); |
8 | 7 |
|
9 |
| -var server = http.createServer(common.fail); |
10 |
| -server.on('connect', function(req, socket, firstBodyChunk) { |
11 |
| - assert.equal(req.method, 'CONNECT'); |
12 |
| - assert.equal(req.url, 'google.com:443'); |
13 |
| - console.error('Server got CONNECT request'); |
14 |
| - serverGotConnect = true; |
| 8 | +server.on('connect', common.mustCall((req, socket, firstBodyChunk) => { |
| 9 | + assert.strictEqual(req.method, 'CONNECT'); |
| 10 | + assert.strictEqual(req.url, 'google.com:443'); |
15 | 11 |
|
16 | 12 | socket.write('HTTP/1.1 200 Connection established\r\n\r\n');
|
17 | 13 |
|
18 |
| - var data = firstBodyChunk.toString(); |
19 |
| - socket.on('data', function(buf) { |
| 14 | + let data = firstBodyChunk.toString(); |
| 15 | + socket.on('data', (buf) => { |
20 | 16 | data += buf.toString();
|
21 | 17 | });
|
22 |
| - socket.on('end', function() { |
| 18 | + |
| 19 | + socket.on('end', common.mustCall(() => { |
23 | 20 | socket.end(data);
|
24 |
| - }); |
25 |
| -}); |
26 |
| -server.listen(0, function() { |
27 |
| - var req = http.request({ |
| 21 | + })); |
| 22 | +})); |
| 23 | + |
| 24 | +server.listen(0, common.mustCall(function() { |
| 25 | + const req = http.request({ |
28 | 26 | port: this.address().port,
|
29 | 27 | method: 'CONNECT',
|
30 | 28 | path: 'google.com:443'
|
31 | 29 | }, common.fail);
|
32 | 30 |
|
33 |
| - var clientRequestClosed = false; |
34 |
| - req.on('close', function() { |
35 |
| - clientRequestClosed = true; |
36 |
| - }); |
37 |
| - |
38 |
| - req.on('connect', function(res, socket, firstBodyChunk) { |
39 |
| - console.error('Client got CONNECT request'); |
40 |
| - clientGotConnect = true; |
| 31 | + req.on('close', common.mustCall(() => {})); |
41 | 32 |
|
| 33 | + req.on('connect', common.mustCall((res, socket, firstBodyChunk) => { |
42 | 34 | // Make sure this request got removed from the pool.
|
43 |
| - var name = 'localhost:' + server.address().port; |
| 35 | + const name = 'localhost:' + server.address().port; |
44 | 36 | assert(!http.globalAgent.sockets.hasOwnProperty(name));
|
45 | 37 | assert(!http.globalAgent.requests.hasOwnProperty(name));
|
46 | 38 |
|
47 | 39 | // Make sure this socket has detached.
|
48 | 40 | assert(!socket.ondata);
|
49 | 41 | assert(!socket.onend);
|
50 |
| - assert.equal(socket.listeners('connect').length, 0); |
51 |
| - assert.equal(socket.listeners('data').length, 0); |
| 42 | + assert.strictEqual(socket.listeners('connect').length, 0); |
| 43 | + assert.strictEqual(socket.listeners('data').length, 0); |
52 | 44 |
|
53 | 45 | // the stream.Duplex onend listener
|
54 | 46 | // allow 0 here, so that i can run the same test on streams1 impl
|
55 | 47 | assert(socket.listeners('end').length <= 1);
|
56 | 48 |
|
57 |
| - assert.equal(socket.listeners('free').length, 0); |
58 |
| - assert.equal(socket.listeners('close').length, 0); |
59 |
| - assert.equal(socket.listeners('error').length, 0); |
60 |
| - assert.equal(socket.listeners('agentRemove').length, 0); |
| 49 | + assert.strictEqual(socket.listeners('free').length, 0); |
| 50 | + assert.strictEqual(socket.listeners('close').length, 0); |
| 51 | + assert.strictEqual(socket.listeners('error').length, 0); |
| 52 | + assert.strictEqual(socket.listeners('agentRemove').length, 0); |
61 | 53 |
|
62 |
| - var data = firstBodyChunk.toString(); |
63 |
| - socket.on('data', function(buf) { |
| 54 | + let data = firstBodyChunk.toString(); |
| 55 | + socket.on('data', (buf) => { |
64 | 56 | data += buf.toString();
|
65 | 57 | });
|
66 |
| - socket.on('end', function() { |
67 |
| - assert.equal(data, 'HeadBody'); |
68 |
| - assert(clientRequestClosed); |
| 58 | + |
| 59 | + socket.on('end', common.mustCall(() => { |
| 60 | + assert.strictEqual(data, 'HeadBody'); |
69 | 61 | server.close();
|
70 |
| - }); |
| 62 | + })); |
| 63 | + |
71 | 64 | socket.write('Body');
|
72 | 65 | socket.end();
|
73 |
| - }); |
| 66 | + })); |
74 | 67 |
|
75 | 68 | // It is legal for the client to send some data intended for the server
|
76 | 69 | // before the "200 Connection established" (or any other success or
|
77 | 70 | // error code) is received.
|
78 | 71 | req.write('Head');
|
79 | 72 | req.end();
|
80 |
| -}); |
81 |
| - |
82 |
| -process.on('exit', function() { |
83 |
| - assert.ok(serverGotConnect); |
84 |
| - assert.ok(clientGotConnect); |
85 |
| -}); |
| 73 | +})); |
0 commit comments