@@ -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,38 @@ describe('Http', () => {
102102 httpMiddleware ( next ) ( request , response )
103103 } ) )
104104
105+ test ( 'execute a get request with getAbortController timeout (success)' , ( ) =>
106+ new Promise ( ( resolve , reject ) => {
107+ const request = createTestRequest ( {
108+ uri : '/foo/bar' ,
109+ } )
110+ const response = { resolve, reject }
111+ const next = ( req , res ) => {
112+ expect ( res ) . toEqual ( {
113+ ...response ,
114+ body : { foo : 'bar' } ,
115+ statusCode : 200 ,
116+ } )
117+ resolve ( )
118+ }
119+ // Use default options
120+ const httpMiddleware = createHttpMiddleware ( {
121+ host : testHost ,
122+ timeout : 1000 , // time out after 1s
123+ fetch,
124+ getAbortController : ( ) => new AbortController ( ) ,
125+ } )
126+ nock ( testHost )
127+ . defaultReplyHeaders ( {
128+ 'Content-Type' : 'application/json' ,
129+ } )
130+ . get ( '/foo/bar' )
131+ . delay ( 10 ) // delay response with 10ms
132+ . reply ( 200 , { foo : 'bar' } )
133+
134+ httpMiddleware ( next ) ( request , response )
135+ } ) )
136+
105137 test ( 'execute a get request with short timeout (fail)' , ( ) =>
106138 new Promise ( ( resolve , reject ) => {
107139 const request = createTestRequest ( {
@@ -134,6 +166,38 @@ describe('Http', () => {
134166 httpMiddleware ( next ) ( request , response )
135167 } ) )
136168
169+ test ( 'execute a get request with getAbortController short timeout (fail)' , ( ) =>
170+ new Promise ( ( resolve , reject ) => {
171+ const request = createTestRequest ( {
172+ uri : '/foo/bar' ,
173+ } )
174+ const response = { resolve, reject }
175+ const next = ( req , res ) => {
176+ expect ( res ) . toEqual ( {
177+ ...response ,
178+ error : expect . any ( Error ) ,
179+ statusCode : 0 ,
180+ } )
181+ resolve ( )
182+ }
183+ // Use default options
184+ const httpMiddleware = createHttpMiddleware ( {
185+ host : testHost ,
186+ timeout : 10 , // time out after 10ms
187+ fetch,
188+ getAbortController : ( ) => new AbortController ( ) ,
189+ } )
190+ nock ( testHost )
191+ . defaultReplyHeaders ( {
192+ 'Content-Type' : 'application/json' ,
193+ } )
194+ . get ( '/foo/bar' )
195+ . delay ( 100 ) // delay response with 100ms
196+ . reply ( 200 , { foo : 'bar' } )
197+
198+ httpMiddleware ( next ) ( request , response )
199+ } ) )
200+
137201 test ( 'execute a request with timeout and client re-use' , ( ) =>
138202 new Promise ( ( resolve , reject ) => {
139203 const request = createTestRequest ( {
0 commit comments