@@ -592,6 +592,78 @@ test('beforeRetry allows stream body if different from original', withServer, as
592592 t . is ( body , 'test' ) ;
593593} ) ;
594594
595+ test ( 'prefixUrl is preserved in beforeRequest hook' , withServer , async ( t , server , got ) => {
596+ server . get ( '/endpoint' , ( _request , response ) => {
597+ response . end ( 'success' ) ;
598+ } ) ;
599+
600+ let capturedPrefixUrl : string | URL | undefined ;
601+
602+ await got ( 'endpoint' , {
603+ prefixUrl : server . url ,
604+ hooks : {
605+ beforeRequest : [
606+ options => {
607+ capturedPrefixUrl = options . prefixUrl ;
608+ } ,
609+ ] ,
610+ } ,
611+ } ) ;
612+
613+ const normalizedServerUrl = new URL ( server . url ) . toString ( ) ;
614+ t . is ( capturedPrefixUrl , normalizedServerUrl ) ;
615+ } ) ;
616+
617+ test ( 'prefixUrl is preserved in beforeRetry hook' , withServer , async ( t , server , got ) => {
618+ server . get ( '/retry' , ( _request , response ) => {
619+ response . statusCode = 500 ;
620+ response . end ( ) ;
621+ } ) ;
622+
623+ let capturedPrefixUrl : string | URL | undefined ;
624+
625+ await t . throwsAsync ( got ( 'retry' , {
626+ prefixUrl : server . url ,
627+ retry : {
628+ limit : 1 ,
629+ } ,
630+ hooks : {
631+ beforeRetry : [
632+ ( { options} ) => {
633+ capturedPrefixUrl = options . prefixUrl ;
634+ } ,
635+ ] ,
636+ } ,
637+ } ) ) ;
638+
639+ const normalizedServerUrl = new URL ( server . url ) . toString ( ) ;
640+ t . is ( capturedPrefixUrl , normalizedServerUrl ) ;
641+ } ) ;
642+
643+ test ( 'setting absolute URL in hook does not concatenate with prefixUrl' , withServer , async ( t , server , got ) => {
644+ server . get ( '/original' , ( _request , response ) => {
645+ response . end ( 'original' ) ;
646+ } ) ;
647+
648+ server . get ( '/changed' , ( _request , response ) => {
649+ response . end ( 'changed' ) ;
650+ } ) ;
651+
652+ const { body} = await got ( 'original' , {
653+ prefixUrl : server . url ,
654+ hooks : {
655+ beforeRequest : [
656+ options => {
657+ // Set absolute URL - should not concatenate with prefixUrl
658+ options . url = new URL ( `${ server . url } /changed` ) ;
659+ } ,
660+ ] ,
661+ } ,
662+ } ) ;
663+
664+ t . is ( body , 'changed' ) ;
665+ } ) ;
666+
595667test ( 'afterResponse is called with response' , withServer , async ( t , server , got ) => {
596668 server . get ( '/' , echoHeaders ) ;
597669
0 commit comments