22
33const  fs  =  require ( 'node:fs' ) 
44const  join  =  require ( 'node:path' ) . join 
5- const  http  =  require ( 'node:http' ) 
6- const  test  =  require ( 'tap' ) . test 
5+ const  {  test }  =  require ( 'node:test' ) 
76const  Fastify  =  require ( 'fastify' ) 
8- const  plugin  =  require ( '../' ) 
9- const  semver  =  require ( 'semver' ) 
7+ const  plugin  =  require ( '..' ) 
108
119const  urlHost  =  'localhost' 
1210const  urlForwardedHost  =  'example.com' 
@@ -15,173 +13,149 @@ const urlQuery = 'a=b&c=d'
1513const  httpScheme  =  'http' 
1614const  httpsScheme  =  'https' 
1715
18- test ( 'parses a full URI' ,  ( t )  =>  { 
19-   t . plan ( 10 ) 
20-   let  port 
16+ test ( 'parses a full URI' ,  async  ( t )  =>  { 
17+   t . plan ( 11 ) 
2118  const  fastify  =  Fastify ( ) 
2219
2320  fastify 
2421    . register ( plugin ) 
2522    . after ( ( err )  =>  { 
26-       if   ( err )   t . error ( err ) 
23+       t . assert . ifError ( err ) 
2724    } ) 
2825
2926  fastify . get ( urlPath ,  ( req ,  reply )  =>  { 
3027    const  uriData  =  req . urlData ( ) 
31-     t . equal ( uriData . host ,  urlHost ) 
32-     t . equal ( uriData . port ,  port ) 
33-     t . equal ( uriData . path ,  urlPath ) 
34-     t . equal ( uriData . query ,  urlQuery ) 
35-     t . equal ( uriData . scheme ,  httpScheme ) 
36-     t . equal ( req . urlData ( 'host' ) ,  urlHost ) 
37-     t . equal ( req . urlData ( 'port' ) ,  port ) 
38-     t . equal ( req . urlData ( 'path' ) ,  urlPath ) 
39-     t . equal ( req . urlData ( 'query' ) ,  urlQuery ) 
40-     t . equal ( req . urlData ( 'scheme' ) ,  httpScheme ) 
28+     t . assert . deepStrictEqual ( uriData . host ,  urlHost ) 
29+     t . assert . deepStrictEqual ( uriData . port ,  port ) 
30+     t . assert . deepStrictEqual ( uriData . path ,  urlPath ) 
31+     t . assert . deepStrictEqual ( uriData . query ,  urlQuery ) 
32+     t . assert . deepStrictEqual ( uriData . scheme ,  httpScheme ) 
33+     t . assert . deepStrictEqual ( req . urlData ( 'host' ) ,  urlHost ) 
34+     t . assert . deepStrictEqual ( req . urlData ( 'port' ) ,  port ) 
35+     t . assert . deepStrictEqual ( req . urlData ( 'path' ) ,  urlPath ) 
36+     t . assert . deepStrictEqual ( req . urlData ( 'query' ) ,  urlQuery ) 
37+     t . assert . deepStrictEqual ( req . urlData ( 'scheme' ) ,  httpScheme ) 
4138    reply . send ( ) 
4239  } ) 
4340
44-   fastify . listen ( {  port : 0  } ,   ( err )   =>   { 
45-      fastify . server . unref ( ) 
46-      if   ( err )   t . threw ( err ) 
41+   await   fastify . listen ( {  port : 0  } ) 
42+   const   port   =   fastify . server . address ( ) . port 
43+   fastify . server . unref ( ) 
4744
48-     port  =  fastify . server . address ( ) . port 
49-     http 
50-       . get ( `http://${ urlHost } ${ port } ${ urlPath } ${ urlQuery }  ,  ( )  =>  { } ) 
51-       . on ( 'error' ,  t . threw ) 
52-   } ) 
45+   await  fetch ( `http://${ urlHost } ${ port } ${ urlPath } ${ urlQuery }  ) 
5346
54-   t . teardown ( ( )  =>  fastify . close ( ) ) 
47+   t . after ( ( )  =>  fastify . close ( ) ) 
5548} ) 
5649
57- test ( 'parses a full URI in HTTP2' ,  {   skip :  semver . lt ( process . versions . node ,   '8.8.0' )   } ,  ( t )  =>  { 
50+ test ( 'parses a full URI in HTTP2' ,  async  ( t )  =>  { 
5851  t . plan ( 11 ) 
5952
6053  const  h2url  =  require ( 'h2url' ) 
6154
62-   let  port 
63-   let  fastify 
64-   try  { 
65-     fastify  =  Fastify ( { 
66-       http2 : true , 
67-       https : { 
68-         key : fs . readFileSync ( join ( __dirname ,  'https' ,  'fastify.key' ) ) , 
69-         cert : fs . readFileSync ( join ( __dirname ,  'https' ,  'fastify.cert' ) ) 
70-       } 
71-     } ) 
72-     t . pass ( 'Key/cert successfully loaded' ) 
73-   }  catch  ( e )  { 
74-     t . fail ( 'Key/cert loading failed' ,  e ) 
75-   } 
55+   const  fastify  =  Fastify ( { 
56+     http2 : true , 
57+     https : { 
58+       key : fs . readFileSync ( join ( __dirname ,  'https' ,  'fastify.key' ) ) , 
59+       cert : fs . readFileSync ( join ( __dirname ,  'https' ,  'fastify.cert' ) ) 
60+     } 
61+   } ) 
7662
7763  fastify 
7864    . register ( plugin ) 
7965    . after ( ( err )  =>  { 
80-       if   ( err )   t . error ( err ) 
66+       t . assert . ifError ( err ) 
8167    } ) 
8268
8369  fastify . get ( urlPath ,  ( req ,  reply )  =>  { 
8470    const  uriData  =  req . urlData ( ) 
85-     t . equal ( uriData . host ,  urlHost ) 
86-     t . equal ( uriData . port ,  port ) 
87-     t . equal ( uriData . path ,  urlPath ) 
88-     t . equal ( uriData . query ,  urlQuery ) 
89-     t . equal ( uriData . scheme ,  httpsScheme ) 
90-     t . equal ( req . urlData ( 'host' ) ,  urlHost ) 
91-     t . equal ( req . urlData ( 'port' ) ,  port ) 
92-     t . equal ( req . urlData ( 'path' ) ,  urlPath ) 
93-     t . equal ( req . urlData ( 'query' ) ,  urlQuery ) 
94-     t . equal ( req . urlData ( 'scheme' ) ,  httpsScheme ) 
71+     t . assert . deepStrictEqual ( uriData . host ,  urlHost ) 
72+     t . assert . deepStrictEqual ( uriData . port ,  port ) 
73+     t . assert . deepStrictEqual ( uriData . path ,  urlPath ) 
74+     t . assert . deepStrictEqual ( uriData . query ,  urlQuery ) 
75+     t . assert . deepStrictEqual ( uriData . scheme ,  httpsScheme ) 
76+     t . assert . deepStrictEqual ( req . urlData ( 'host' ) ,  urlHost ) 
77+     t . assert . deepStrictEqual ( req . urlData ( 'port' ) ,  port ) 
78+     t . assert . deepStrictEqual ( req . urlData ( 'path' ) ,  urlPath ) 
79+     t . assert . deepStrictEqual ( req . urlData ( 'query' ) ,  urlQuery ) 
80+     t . assert . deepStrictEqual ( req . urlData ( 'scheme' ) ,  httpsScheme ) 
9581    reply . send ( ) 
9682  } ) 
9783
98-   fastify . listen ( {  port : 0  } ,   ( err )   =>   { 
99-      fastify . server . unref ( ) 
100-      if   ( err )   t . threw ( err ) 
84+   await   fastify . listen ( {  port : 0  } ) 
85+   const   port   =   fastify . server . address ( ) . port 
86+   fastify . server . unref ( ) 
10187
102-     port  =  fastify . server . address ( ) . port 
103-     h2url . concat ( {  url : `https://${ urlHost } ${ port } ${ urlPath } ${ urlQuery }   } ) . then ( ( )  =>  { } ) 
104-   } ) 
88+   await  h2url . concat ( {  url : `https://${ urlHost } ${ port } ${ urlPath } ${ urlQuery }   } ) 
10589
106-   t . teardown ( ( )  =>  fastify . close ( ) ) 
90+   t . after ( ( )  =>  fastify . close ( ) ) 
10791} ) 
10892
109- test ( 'parses a full URI using X-Forwarded-Host when trustProxy is set' ,  ( t )  =>  { 
110-   t . plan ( 10 ) 
111-   let  port 
93+ test ( 'parses a full URI using X-Forwarded-Host when trustProxy is set' ,  async  ( t )  =>  { 
94+   t . plan ( 11 ) 
11295  const  fastify  =  Fastify ( {  trustProxy : true  } )  // Setting trustProxy true will use X-Forwarded-Host header if set 
11396
11497  fastify 
11598    . register ( plugin ) 
11699    . after ( ( err )  =>  { 
117-       if   ( err )   t . error ( err ) 
100+       t . assert . ifError ( err ) 
118101    } ) 
119102
120103  fastify . get ( urlPath ,  ( req ,  reply )  =>  { 
121104    const  uriData  =  req . urlData ( ) 
122-     t . equal ( uriData . host ,  urlForwardedHost ) 
123-     t . equal ( uriData . port ,  port ) 
124-     t . equal ( uriData . path ,  urlPath ) 
125-     t . equal ( uriData . query ,  urlQuery ) 
126-     t . equal ( uriData . scheme ,  httpScheme ) 
127-     t . equal ( req . urlData ( 'host' ) ,  urlForwardedHost ) 
128-     t . equal ( req . urlData ( 'port' ) ,  port ) 
129-     t . equal ( req . urlData ( 'path' ) ,  urlPath ) 
130-     t . equal ( req . urlData ( 'query' ) ,  urlQuery ) 
131-     t . equal ( req . urlData ( 'scheme' ) ,  httpScheme ) 
105+     t . assert . deepStrictEqual ( uriData . host ,  urlForwardedHost ) 
106+     t . assert . deepStrictEqual ( uriData . port ,  port ) 
107+     t . assert . deepStrictEqual ( uriData . path ,  urlPath ) 
108+     t . assert . deepStrictEqual ( uriData . query ,  urlQuery ) 
109+     t . assert . deepStrictEqual ( uriData . scheme ,  httpScheme ) 
110+     t . assert . deepStrictEqual ( req . urlData ( 'host' ) ,  urlForwardedHost ) 
111+     t . assert . deepStrictEqual ( req . urlData ( 'port' ) ,  port ) 
112+     t . assert . deepStrictEqual ( req . urlData ( 'path' ) ,  urlPath ) 
113+     t . assert . deepStrictEqual ( req . urlData ( 'query' ) ,  urlQuery ) 
114+     t . assert . deepStrictEqual ( req . urlData ( 'scheme' ) ,  httpScheme ) 
132115    reply . send ( ) 
133116  } ) 
134117
135-   fastify . listen ( {  port : 0  } ,   ( err )   =>   { 
136-      fastify . server . unref ( ) 
137-      if   ( err )   t . threw ( err ) 
118+   await   fastify . listen ( {  port : 0  } ) 
119+   const   port   =   fastify . server . address ( ) . port 
120+   fastify . server . unref ( ) 
138121
139-     port  =  fastify . server . address ( ) . port 
140-     http 
141-       . get ( `http://${ urlHost } ${ port } ${ urlPath } ${ urlQuery }  ,  {  headers : {  'X-Forwarded-Host' : `${ urlForwardedHost } ${ port }   }  } ,  ( )  =>  { } ) 
142-       . on ( 'error' ,  t . threw ) 
143-   } ) 
122+   await  fetch ( `http://${ urlHost } ${ fastify . server . address ( ) . port } ${ urlPath } ${ urlQuery }  ,  {  headers : {  'X-Forwarded-Host' : `${ urlForwardedHost } ${ port }   }  } ) 
144123
145-   t . teardown ( ( )  =>  fastify . close ( ) ) 
124+   t . after ( ( )  =>  fastify . close ( ) ) 
146125} ) 
147126
148- test ( 'parses a full URI ignoring X-Forwarded-Host when trustProxy is not set' ,  ( t )  =>  { 
149-   t . plan ( 10 ) 
150-   let  port 
127+ test ( 'parses a full URI ignoring X-Forwarded-Host when trustProxy is not set' ,  async  ( t )  =>  { 
128+   t . plan ( 11 ) 
151129  const  fastify  =  Fastify ( ) 
152130
153131  fastify 
154132    . register ( plugin ) 
155133    . after ( ( err )  =>  { 
156-       if   ( err )   t . error ( err ) 
134+       t . assert . ifError ( err ) 
157135    } ) 
158136
159137  fastify . get ( urlPath ,  ( req ,  reply )  =>  { 
160138    const  uriData  =  req . urlData ( ) 
161-     t . equal ( uriData . host ,  urlHost ) 
162-     t . equal ( uriData . port ,  port ) 
163-     t . equal ( uriData . path ,  urlPath ) 
164-     t . equal ( uriData . query ,  urlQuery ) 
165-     t . equal ( uriData . scheme ,  httpScheme ) 
166-     t . equal ( req . urlData ( 'host' ) ,  urlHost ) 
167-     t . equal ( req . urlData ( 'port' ) ,  port ) 
168-     t . equal ( req . urlData ( 'path' ) ,  urlPath ) 
169-     t . equal ( req . urlData ( 'query' ) ,  urlQuery ) 
170-     t . equal ( req . urlData ( 'scheme' ) ,  httpScheme ) 
139+     t . assert . deepStrictEqual ( uriData . host ,  urlHost ) 
140+     t . assert . deepStrictEqual ( uriData . port ,  port ) 
141+     t . assert . deepStrictEqual ( uriData . path ,  urlPath ) 
142+     t . assert . deepStrictEqual ( uriData . query ,  urlQuery ) 
143+     t . assert . deepStrictEqual ( uriData . scheme ,  httpScheme ) 
144+     t . assert . deepStrictEqual ( req . urlData ( 'host' ) ,  urlHost ) 
145+     t . assert . deepStrictEqual ( req . urlData ( 'port' ) ,  port ) 
146+     t . assert . deepStrictEqual ( req . urlData ( 'path' ) ,  urlPath ) 
147+     t . assert . deepStrictEqual ( req . urlData ( 'query' ) ,  urlQuery ) 
148+     t . assert . deepStrictEqual ( req . urlData ( 'scheme' ) ,  httpScheme ) 
171149    reply . send ( ) 
172150  } ) 
173151
174-   fastify . listen ( {  port : 0  } ,   ( err )   =>   { 
175-      fastify . server . unref ( ) 
176-      if   ( err )   t . threw ( err ) 
152+   await   fastify . listen ( {  port : 0  } ) 
153+   const   port   =   fastify . server . address ( ) . port 
154+   fastify . server . unref ( ) 
177155
178-     port  =  fastify . server . address ( ) . port 
179-     http 
180-       . get ( `http://${ urlHost } ${ port } ${ urlPath } ${ urlQuery }  ,  {  headers : {  'X-Forwarded-Host' : `${ urlForwardedHost } ${ port }   }  } ,  ( )  =>  { } ) 
181-       . on ( 'error' ,  t . threw ) 
182-   } ) 
156+   await  fetch ( `http://${ urlHost } ${ fastify . server . address ( ) . port } ${ urlPath } ${ urlQuery }  ,  {  headers : {  'X-Forwarded-Host' : `${ urlForwardedHost } ${ port }   }  } ) 
183157
184-   t . teardown ( ( )  =>  fastify . close ( ) ) 
158+   t . after ( ( )  =>  fastify . close ( ) ) 
185159} ) 
186160
187161test ( 'should parse path without a port specified' ,  async  ( t )  =>  { 
@@ -196,6 +170,6 @@ test('should parse path without a port specified', async (t) => {
196170  } ) 
197171
198172  const  res  =  await  fastify . inject ( {  url : '/' ,  headers : {  host : 'localhost'  }  } ) 
199-   t . equal ( res . statusCode ,  200 ) 
200-   t . equal ( res . body ,  'That worked, path is /' ) 
173+   t . assert . deepStrictEqual ( res . statusCode ,  200 ) 
174+   t . assert . deepStrictEqual ( res . body ,  'That worked, path is /' ) 
201175} ) 
0 commit comments