@@ -3,6 +3,7 @@ import {Agent as HttpAgent} from 'http';
3
3
import test , { Constructor } from 'ava' ;
4
4
import nock = require( 'nock' ) ;
5
5
import getStream = require( 'get-stream' ) ;
6
+ import FormData = require( 'form-data' ) ;
6
7
import sinon = require( 'sinon' ) ;
7
8
import delay = require( 'delay' ) ;
8
9
import { Handler } from 'express' ;
@@ -451,6 +452,43 @@ test('beforeRetry allows modifications', withServer, async (t, server, got) => {
451
452
t . is ( body . foo , 'bar' ) ;
452
453
} ) ;
453
454
455
+ test ( 'beforeRetry allows stream body if different from original' , withServer , async ( t , server , got ) => {
456
+ server . post ( '/retry' , async ( request , response ) => {
457
+ if ( request . headers . foo ) {
458
+ response . send ( 'test' ) ;
459
+ } else {
460
+ response . statusCode = 500 ;
461
+ }
462
+
463
+ response . end ( ) ;
464
+ } ) ;
465
+
466
+ const generateBody = ( ) => {
467
+ const form = new FormData ( ) ;
468
+ form . append ( 'A' , 'B' ) ;
469
+ return form ;
470
+ } ;
471
+
472
+ const { body} = await got . post ( 'retry' , {
473
+ body : generateBody ( ) ,
474
+ retry : {
475
+ methods : [ 'POST' ]
476
+ } ,
477
+ hooks : {
478
+ beforeRetry : [
479
+ options => {
480
+ const form = generateBody ( ) ;
481
+ options . body = form ;
482
+ options . headers [ 'content-type' ] = `multipart/form-data; boundary=${ form . getBoundary ( ) } ` ;
483
+ options . headers . foo = 'bar' ;
484
+ }
485
+ ]
486
+ }
487
+ } ) ;
488
+
489
+ t . is ( body , 'test' ) ;
490
+ } ) ;
491
+
454
492
test ( 'afterResponse is called with response' , withServer , async ( t , server , got ) => {
455
493
server . get ( '/' , echoHeaders ) ;
456
494
0 commit comments