@@ -9,8 +9,6 @@ let httpServer,
9
9
host = 'localhost' ,
10
10
port = 3003 ;
11
11
12
- const url = `http://${ host } :${ port } ` ;
13
-
14
12
function beforeEach ( ) {
15
13
httpServer = http . createServer ( async ( request , response ) => {
16
14
response . writeHead ( 200 ) ;
@@ -19,15 +17,14 @@ function beforeEach() {
19
17
httpServer . listen ( port , host ) ;
20
18
}
21
19
22
- function closeServer ( ) {
20
+ function closeServer ( s ) {
23
21
return new Promise ( ( resolve ) => {
24
- httpServer . close ( resolve ) ;
25
- console . log ( 'Closed' ) ;
22
+ s . close ( resolve ) ;
26
23
} ) ;
27
24
}
28
- async function afterEach ( client ) {
25
+ async function afterEach ( client , server = httpServer ) {
29
26
await client . close ( ) ;
30
- await closeServer ( ) ;
27
+ await closeServer ( server ) ;
31
28
}
32
29
33
30
async function queryUrl ( {
@@ -46,47 +43,80 @@ async function queryUrl({
46
43
}
47
44
}
48
45
await test ( 'http-client - basics' , async ( t ) => {
46
+ const url = `http://${ host } :2001` ;
47
+ const server = http . createServer ( async ( request , response ) => {
48
+ response . writeHead ( 200 ) ;
49
+ response . end ( ) ;
50
+ } ) ;
51
+ server . listen ( 2001 , host ) ;
49
52
await t . test ( 'returns 200 response when given valid input' , async ( ) => {
50
- beforeEach ( ) ;
51
53
const client = new HttpClient ( ) ;
52
54
const response = await client . request ( {
53
55
path : '/' ,
54
56
origin : url ,
55
57
method : 'GET' ,
56
58
} ) ;
57
59
assert . strictEqual ( response . statusCode , 200 ) ;
58
- await afterEach ( client ) ;
60
+ await client . close ( ) ;
59
61
} ) ;
60
62
61
- // await t.test('does not cause havoc with built in fetch', async () => {
62
- // beforeEach();
63
- // const client = new HttpClient();
64
- // await fetch(url);
65
- // const response = await client.request({
66
- // path: '/',
67
- // origin: url,
68
- // method: 'GET',
69
- // });
70
- // assert.strictEqual(response.statusCode, 200);
71
- // await client.close();
72
- // await fetch(url);
73
- // await afterEach(client);
74
- // });
75
- await t . test ( 'can pass in an abort controller' , async ( ) => {
76
- beforeEach ( ) ;
77
- const abortController = new AbortController ( ) ;
78
-
63
+ await t . test ( 'does not cause havoc with built in fetch' , async ( ) => {
79
64
const client = new HttpClient ( ) ;
65
+ await fetch ( url ) ;
80
66
const response = await client . request ( {
81
67
path : '/' ,
82
68
origin : url ,
83
69
method : 'GET' ,
84
70
} ) ;
85
- await afterEach ( client ) ;
71
+ assert . strictEqual ( response . statusCode , 200 ) ;
72
+ await client . close ( ) ;
73
+ await fetch ( url ) ;
74
+ await client . close ( ) ;
86
75
} ) ;
76
+ await closeServer ( server ) ;
77
+ } ) ;
78
+
79
+ await test ( 'http-client - abort controller' , async ( t ) => {
80
+ // Slow responding server to enable us to abort a request
81
+ const slowServer = http . createServer ( async ( request , response ) => {
82
+ await wait ( 200 ) ;
83
+ response . writeHead ( 200 ) ;
84
+ response . end ( ) ;
85
+ } ) ;
86
+ slowServer . listen ( 2010 , host ) ;
87
+ await t . test ( 'cancel a request' , async ( ) => {
88
+ const abortController = new AbortController ( ) ;
89
+ let aborted = false ;
90
+ setTimeout ( ( ) => {
91
+ abortController . abort ( ) ;
92
+ aborted = true ;
93
+ } , 100 ) ;
94
+ const client = new HttpClient ( { timeout : 2000 } ) ;
95
+ await client . request ( {
96
+ path : '/' ,
97
+ origin : 'http://localhost:2010' ,
98
+ method : 'GET' ,
99
+ } ) ;
100
+ assert . ok ( aborted ) ;
101
+ await client . close ( ) ;
102
+ } ) ;
103
+
104
+ // await t.test('auto renew an abort controller', async () => {
105
+ // const abortController = new AbortController();
106
+ // const client = new HttpClient({ timeout: 2000 });
107
+ // await client.request({
108
+ // autoRenewAbortController: true,
109
+ // path: '/',
110
+ // origin: 'http://localhost:2010',
111
+ // method: 'GET',
112
+ // });
113
+ // await client.close();
114
+ // });
115
+ slowServer . close ( ) ;
87
116
} ) ;
88
117
89
118
await test ( 'http-client - circuit breaker behaviour' , async ( t ) => {
119
+ const url = `http://${ host } :${ port } ` ;
90
120
await t . test ( 'opens on failure threshold' , async ( ) => {
91
121
beforeEach ( ) ;
92
122
const invalidUrl = `http://${ host } :3013` ;
0 commit comments