@@ -789,6 +789,85 @@ describe('PollingDatafileManager', () => {
789789 expect ( requestHandler . makeRequest . mock . calls [ 0 ] [ 1 ] . Authorization ) . toBe ( 'Bearer token123' ) ;
790790 } ) ;
791791
792+ it ( 'sends customHeaders in the request headers' , async ( ) => {
793+ const repeater = getMockRepeater ( ) ;
794+ const requestHandler = getMockRequestHandler ( ) ;
795+ const mockResponse = getMockAbortableRequest ( Promise . resolve ( { statusCode : 200 , body : '{"foo": "bar"}' , headers : { } } ) ) ;
796+ requestHandler . makeRequest . mockReturnValueOnce ( mockResponse ) ;
797+
798+ const customHeaders = {
799+ 'X-Custom-Header' : 'custom-value' ,
800+ 'X-Another-Header' : 'another-value' ,
801+ } ;
802+
803+ const manager = new PollingDatafileManager ( {
804+ repeater,
805+ requestHandler,
806+ sdkKey : 'keyThatExists' ,
807+ customHeaders,
808+ } ) ;
809+
810+ manager . start ( ) ;
811+ repeater . execute ( 0 ) ;
812+
813+ await expect ( manager . onRunning ( ) ) . resolves . not . toThrow ( ) ;
814+ expect ( requestHandler . makeRequest ) . toHaveBeenCalledOnce ( ) ;
815+ const sentHeaders = requestHandler . makeRequest . mock . calls [ 0 ] [ 1 ] ;
816+ expect ( sentHeaders [ 'X-Custom-Header' ] ) . toBe ( 'custom-value' ) ;
817+ expect ( sentHeaders [ 'X-Another-Header' ] ) . toBe ( 'another-value' ) ;
818+ } ) ;
819+
820+ it ( 'merges customHeaders with other headers (access token and if-modified-since)' , async ( ) => {
821+ const repeater = getMockRepeater ( ) ;
822+ const requestHandler = getMockRequestHandler ( ) ;
823+
824+ // First request to set up last-modified header
825+ const mockResponse1 = getMockAbortableRequest ( Promise . resolve ( {
826+ statusCode : 200 ,
827+ body : '{"foo": "bar"}' ,
828+ headers : { 'last-modified' : 'Fri, 08 Mar 2019 18:57:17 GMT' }
829+ } ) ) ;
830+
831+ // Second request to test all headers together
832+ const mockResponse2 = getMockAbortableRequest ( Promise . resolve ( {
833+ statusCode : 304 ,
834+ body : '' ,
835+ headers : { }
836+ } ) ) ;
837+
838+ requestHandler . makeRequest . mockReturnValueOnce ( mockResponse1 )
839+ . mockReturnValueOnce ( mockResponse2 ) ;
840+
841+ const customHeaders = {
842+ 'X-Custom-Header' : 'custom-value' ,
843+ } ;
844+
845+ const manager = new PollingDatafileManager ( {
846+ repeater,
847+ requestHandler,
848+ sdkKey : 'keyThatExists' ,
849+ datafileAccessToken : 'token123' ,
850+ customHeaders,
851+ autoUpdate : true ,
852+ } ) ;
853+
854+ manager . start ( ) ;
855+
856+ // First request
857+ await repeater . execute ( 0 ) ;
858+
859+ // Second request should have all headers
860+ await repeater . execute ( 0 ) ;
861+
862+ expect ( requestHandler . makeRequest ) . toHaveBeenCalledTimes ( 2 ) ;
863+
864+ // Check second request headers include custom, auth, and if-modified-since
865+ const secondRequestHeaders = requestHandler . makeRequest . mock . calls [ 1 ] [ 1 ] ;
866+ expect ( secondRequestHeaders [ 'X-Custom-Header' ] ) . toBe ( 'custom-value' ) ;
867+ expect ( secondRequestHeaders [ 'Authorization' ] ) . toBe ( 'Bearer token123' ) ;
868+ expect ( secondRequestHeaders [ 'if-modified-since' ] ) . toBe ( 'Fri, 08 Mar 2019 18:57:17 GMT' ) ;
869+ } ) ;
870+
792871 it ( 'uses the provided urlTemplate' , async ( ) => {
793872 const repeater = getMockRepeater ( ) ;
794873 const requestHandler = getMockRequestHandler ( ) ;
0 commit comments