@@ -36,7 +36,7 @@ describe('Http', () => {
3636 createHttpMiddleware ( { host : testHost , timeout : 100 , fetch } )
3737 } ) . toThrow (
3838 new Error (
39- '`AbortController` is not available. Please pass in `AbortController ` as an option or have it globally available when using timeout.'
39+ '`AbortController` is not available. Please pass in `getAbortController ` as an option or have AbortController globally available when using timeout.'
4040 )
4141 )
4242 } )
@@ -102,6 +102,39 @@ describe('Http', () => {
102102 httpMiddleware ( next ) ( request , response )
103103 } ) )
104104
105+ test ( 'execute a get request with getAbortController timeout (success)' , ( ) => {
106+ expect . assertions ( 1 )
107+ new Promise ( ( resolve , reject ) => {
108+ const request = createTestRequest ( {
109+ uri : '/foo/bar' ,
110+ } )
111+ const response = { resolve, reject }
112+ const next = ( req , res ) => {
113+ expect ( res ) . toEqual ( {
114+ ...response ,
115+ body : { foo : 'bar' } ,
116+ statusCode : 200 ,
117+ } )
118+ resolve ( )
119+ }
120+ // Use default options
121+ const httpMiddleware = createHttpMiddleware ( {
122+ host : testHost ,
123+ timeout : 1000 , // time out after 1s
124+ fetch,
125+ getAbortController : ( ) => new AbortController ( ) ,
126+ } )
127+ nock ( testHost )
128+ . defaultReplyHeaders ( {
129+ 'Content-Type' : 'application/json' ,
130+ } )
131+ . get ( '/foo/bar' )
132+ . delay ( 10 ) // delay response with 10ms
133+ . reply ( 200 , { foo : 'bar' } )
134+
135+ httpMiddleware ( next ) ( request , response )
136+ } ) } )
137+
105138 test ( 'execute a get request with short timeout (fail)' , ( ) =>
106139 new Promise ( ( resolve , reject ) => {
107140 const request = createTestRequest ( {
@@ -134,6 +167,39 @@ describe('Http', () => {
134167 httpMiddleware ( next ) ( request , response )
135168 } ) )
136169
170+ test ( 'execute a get request with getAbortController short timeout (fail)' , ( ) => {
171+ expect . assertions ( 1 )
172+ return new Promise ( ( resolve , reject ) => {
173+ const request = createTestRequest ( {
174+ uri : '/foo/bar' ,
175+ } )
176+ const response = { resolve, reject }
177+ const next = ( req , res ) => {
178+ expect ( res ) . toEqual ( {
179+ ...response ,
180+ error : expect . any ( Error ) ,
181+ statusCode : 0 ,
182+ } )
183+ resolve ( )
184+ }
185+ // Use default options
186+ const httpMiddleware = createHttpMiddleware ( {
187+ host : testHost ,
188+ timeout : 10 , // time out after 10ms
189+ fetch,
190+ getAbortController : ( ) => new AbortController ( ) ,
191+ } )
192+ nock ( testHost )
193+ . defaultReplyHeaders ( {
194+ 'Content-Type' : 'application/json' ,
195+ } )
196+ . get ( '/foo/bar' )
197+ . delay ( 100 ) // delay response with 100ms
198+ . reply ( 200 , { foo : 'bar' } )
199+
200+ httpMiddleware ( next ) ( request , response )
201+ } ) } )
202+
137203 test ( 'execute a request with timeout and client re-use' , ( ) =>
138204 new Promise ( ( resolve , reject ) => {
139205 const request = createTestRequest ( {
0 commit comments