11import { strict as assert } from 'node:assert' ;
22import dns from 'node:dns' ;
3+ import { sensitiveHeaders } from 'node:http2' ;
34import { describe , it , beforeAll , afterAll } from 'vitest' ;
4- import { HttpClient } from '../src' ;
5+ import { HttpClient , getGlobalDispatcher } from '../src' ;
56import { RawResponseWithMeta } from '../src/Response' ;
67import { startServer } from './fixtures/server' ;
78
@@ -28,6 +29,73 @@ describe('HttpClient.test.ts', () => {
2829 } ) ;
2930 } ) ;
3031
32+ describe ( 'clientOptions.allowH2' , ( ) => {
33+ it ( 'should work with allowH2 = true' , async ( ) => {
34+ const httpClient = new HttpClient ( {
35+ allowH2 : true ,
36+ } ) ;
37+ assert ( httpClient ) ;
38+ let response = await httpClient . request ( 'https://registry.npmmirror.com/urllib' ) ;
39+ assert . equal ( response . status , 200 ) ;
40+ assert . equal ( sensitiveHeaders in response . headers , true ) ;
41+ assert . equal ( response . headers [ 'content-type' ] , 'application/json; charset=utf-8' ) ;
42+ assert . notEqual ( httpClient . getDispatcher ( ) , getGlobalDispatcher ( ) ) ;
43+ response = await httpClient . request ( 'https://registry.npmmirror.com/urllib' ) ;
44+ assert . equal ( response . status , 200 ) ;
45+ assert . equal ( sensitiveHeaders in response . headers , true ) ;
46+ assert . equal ( response . headers [ 'content-type' ] , 'application/json; charset=utf-8' ) ;
47+ response = await httpClient . request ( 'https://registry.npmmirror.com/urllib' ) ;
48+ assert . equal ( response . status , 200 ) ;
49+ assert . equal ( sensitiveHeaders in response . headers , true ) ;
50+ assert . equal ( response . headers [ 'content-type' ] , 'application/json; charset=utf-8' ) ;
51+ response = await httpClient . request ( 'https://registry.npmmirror.com/urllib' ) ;
52+ assert . equal ( response . status , 200 ) ;
53+ assert . equal ( sensitiveHeaders in response . headers , true ) ;
54+ assert . equal ( response . headers [ 'content-type' ] , 'application/json; charset=utf-8' ) ;
55+ response = await httpClient . request ( 'https://registry.npmmirror.com/urllib' ) ;
56+ assert . equal ( response . status , 200 ) ;
57+ assert . equal ( sensitiveHeaders in response . headers , true ) ;
58+ assert . equal ( response . headers [ 'content-type' ] , 'application/json; charset=utf-8' ) ;
59+ await Promise . all ( [
60+ httpClient . request ( 'https://registry.npmmirror.com/urllib' ) ,
61+ httpClient . request ( 'https://registry.npmmirror.com/urllib' ) ,
62+ httpClient . request ( 'https://registry.npmmirror.com/urllib' ) ,
63+ httpClient . request ( 'https://registry.npmmirror.com/urllib' ) ,
64+ ] ) ;
65+
66+ // should request http 1.1 server work
67+ let response2 = await httpClient . request ( _url ) ;
68+ assert . equal ( response2 . status , 200 ) ;
69+ assert . equal ( sensitiveHeaders in response2 . headers , false ) ;
70+ assert . equal ( response2 . headers [ 'content-type' ] , 'application/json' ) ;
71+ response2 = await httpClient . request ( _url ) ;
72+ assert . equal ( response2 . status , 200 ) ;
73+ assert . equal ( sensitiveHeaders in response2 . headers , false ) ;
74+ assert . equal ( response2 . headers [ 'content-type' ] , 'application/json' ) ;
75+ response2 = await httpClient . request ( _url ) ;
76+ assert . equal ( response2 . status , 200 ) ;
77+ assert . equal ( sensitiveHeaders in response2 . headers , false ) ;
78+ assert . equal ( response2 . headers [ 'content-type' ] , 'application/json' ) ;
79+ response2 = await httpClient . request ( _url ) ;
80+ assert . equal ( response2 . status , 200 ) ;
81+ assert . equal ( sensitiveHeaders in response2 . headers , false ) ;
82+ assert . equal ( response2 . headers [ 'content-type' ] , 'application/json' ) ;
83+ response2 = await httpClient . request ( _url ) ;
84+ assert . equal ( response2 . status , 200 ) ;
85+ assert . equal ( sensitiveHeaders in response2 . headers , false ) ;
86+ assert . equal ( response2 . headers [ 'content-type' ] , 'application/json' ) ;
87+ await Promise . all ( [
88+ httpClient . request ( _url ) ,
89+ httpClient . request ( _url ) ,
90+ httpClient . request ( _url ) ,
91+ httpClient . request ( _url ) ,
92+ ] ) ;
93+ console . log ( httpClient . getDispatcherPoolStats ( ) ) ;
94+ assert . equal ( httpClient . getDispatcherPoolStats ( ) [ 'https://registry.npmmirror.com' ] . connected , 1 ) ;
95+ assert ( httpClient . getDispatcherPoolStats ( ) [ _url . substring ( 0 , _url . length - 1 ) ] . connected > 1 ) ;
96+ } ) ;
97+ } ) ;
98+
3199 describe ( 'clientOptions.defaultArgs' , ( ) => {
32100 it ( 'should work with custom defaultArgs' , async ( ) => {
33101 const httpclient = new HttpClient ( { defaultArgs : { timeout : 1000 } } ) ;
0 commit comments