@@ -6,6 +6,7 @@ const { MockInterceptor, MockScope } = require('../lib/mock/mock-interceptor')
6
6
const MockAgent = require ( '../lib/mock/mock-agent' )
7
7
const { kDispatchKey } = require ( '../lib/mock/mock-symbols' )
8
8
const { InvalidArgumentError } = require ( '../lib/core/errors' )
9
+ const { fetch } = require ( '../lib/web/fetch/index' )
9
10
10
11
describe ( 'MockInterceptor - path' , ( ) => {
11
12
test ( 'should remove hash fragment from paths' , t => {
@@ -257,3 +258,51 @@ describe('MockInterceptor - replyContentLength', () => {
257
258
t . ok ( result instanceof MockInterceptor )
258
259
} )
259
260
} )
261
+
262
+ describe ( 'MockInterceptor - different payloads' , ( ) => {
263
+ [
264
+ // Buffer
265
+ [ 'arrayBuffer' , 'ArrayBuffer' , 'ArrayBuffer' , new TextEncoder ( ) . encode ( '{"test":true}' ) . buffer , new TextEncoder ( ) . encode ( '{"test":true}' ) . buffer ] ,
266
+ [ 'json' , 'ArrayBuffer' , 'Object' , new TextEncoder ( ) . encode ( '{"test":true}' ) . buffer , { test : true } ] ,
267
+ [ 'bytes' , 'ArrayBuffer' , 'Uint8Array' , new TextEncoder ( ) . encode ( '{"test":true}' ) . buffer , new TextEncoder ( ) . encode ( '{"test":true}' ) ] ,
268
+ [ 'text' , 'ArrayBuffer' , 'string' , new TextEncoder ( ) . encode ( '{"test":true}' ) . buffer , '{"test":true}' ] ,
269
+
270
+ // Buffer
271
+ [ 'arrayBuffer' , 'Buffer' , 'ArrayBuffer' , Buffer . from ( '{"test":true}' ) , new TextEncoder ( ) . encode ( '{"test":true}' ) . buffer ] ,
272
+ [ 'json' , 'Buffer' , 'Object' , Buffer . from ( '{"test":true}' ) , { test : true } ] ,
273
+ [ 'bytes' , 'Buffer' , 'Uint8Array' , Buffer . from ( '{"test":true}' ) , new TextEncoder ( ) . encode ( '{"test":true}' ) ] ,
274
+ [ 'text' , 'Buffer' , 'string' , Buffer . from ( '{"test":true}' ) , '{"test":true}' ] ,
275
+
276
+ // Uint8Array
277
+ [ 'arrayBuffer' , 'Uint8Array' , 'ArrayBuffer' , new TextEncoder ( ) . encode ( '{"test":true}' ) , new TextEncoder ( ) . encode ( '{"test":true}' ) . buffer ] ,
278
+ [ 'json' , 'Uint8Array' , 'Object' , new TextEncoder ( ) . encode ( '{"test":true}' ) , { test : true } ] ,
279
+ [ 'bytes' , 'Uint8Array' , 'Uint8Array' , new TextEncoder ( ) . encode ( '{"test":true}' ) , new TextEncoder ( ) . encode ( '{"test":true}' ) ] ,
280
+ [ 'text' , 'Uint8Array' , 'string' , new TextEncoder ( ) . encode ( '{"test":true}' ) , '{"test":true}' ] ,
281
+
282
+ // string
283
+ [ 'arrayBuffer' , 'string' , 'ArrayBuffer' , '{"test":true}' , new TextEncoder ( ) . encode ( '{"test":true}' ) . buffer ] ,
284
+ [ 'json' , 'string' , 'Object' , '{"test":true}' , { test : true } ] ,
285
+ [ 'bytes' , 'string' , 'Uint8Array' , '{"test":true}' , new TextEncoder ( ) . encode ( '{"test":true}' ) ] ,
286
+ [ 'text' , 'string' , 'string' , '{"test":true}' , '{"test":true}' ] ,
287
+
288
+ // object
289
+ [ 'arrayBuffer' , 'Object' , 'ArrayBuffer' , { test : true } , new TextEncoder ( ) . encode ( '{"test":true}' ) . buffer ] ,
290
+ [ 'json' , 'Object' , 'Object' , { test : true } , { test : true } ] ,
291
+ [ 'bytes' , 'Object' , 'Uint8Array' , { test : true } , new TextEncoder ( ) . encode ( '{"test":true}' ) ] ,
292
+ [ 'text' , 'Object' , 'string' , { test : true } , '{"test":true}' ]
293
+ ] . forEach ( ( [ method , inputType , outputType , input , output ] ) => {
294
+ test ( `${ inputType } will be returned as ${ outputType } via ${ method } ()` , async ( t ) => {
295
+ t = tspl ( t , { plan : 1 } )
296
+
297
+ const mockAgent = new MockAgent ( )
298
+ mockAgent . disableNetConnect ( )
299
+ mockAgent
300
+ . get ( 'https://localhost' )
301
+ . intercept ( { path : '/' } ) . reply ( 200 , input )
302
+
303
+ const response = await fetch ( 'https://localhost' , { dispatcher : mockAgent } )
304
+
305
+ t . deepStrictEqual ( await response [ method ] ( ) , output )
306
+ } )
307
+ } )
308
+ } )
0 commit comments