@@ -256,6 +256,89 @@ describe('clients/middleware', () => {
256256 const body = JSON . parse ( await modifiedRequest . text ( ) ) as Record < string , unknown > ;
257257 expect ( body . forced ) . to . equal ( true ) ;
258258 } ) ;
259+
260+ it ( 'adds extra headers to request' , async ( ) => {
261+ const middleware = createExtraParamsMiddleware ( { headers : { 'X-Custom' : 'value' } } ) ;
262+ type OnRequestParams = Parameters < NonNullable < typeof middleware . onRequest > > [ 0 ] ;
263+
264+ const request = new Request ( 'https://example.com/items' , { method : 'GET' } ) ;
265+ const modifiedRequest = await middleware . onRequest ! ( { request} as unknown as OnRequestParams ) ;
266+
267+ if ( ! modifiedRequest ) {
268+ throw new Error ( 'Expected middleware to return a Request' ) ;
269+ }
270+
271+ expect ( modifiedRequest . headers . get ( 'X-Custom' ) ) . to . equal ( 'value' ) ;
272+ } ) ;
273+
274+ it ( 'overwrites existing headers with extra headers' , async ( ) => {
275+ const middleware = createExtraParamsMiddleware ( { headers : { 'X-Custom' : 'new-value' } } ) ;
276+ type OnRequestParams = Parameters < NonNullable < typeof middleware . onRequest > > [ 0 ] ;
277+
278+ const request = new Request ( 'https://example.com/items' , {
279+ method : 'GET' ,
280+ headers : { 'X-Custom' : 'old-value' } ,
281+ } ) ;
282+ const modifiedRequest = await middleware . onRequest ! ( { request} as unknown as OnRequestParams ) ;
283+
284+ if ( ! modifiedRequest ) {
285+ throw new Error ( 'Expected middleware to return a Request' ) ;
286+ }
287+
288+ expect ( modifiedRequest . headers . get ( 'X-Custom' ) ) . to . equal ( 'new-value' ) ;
289+ } ) ;
290+
291+ it ( 'preserves other headers when adding extra headers' , async ( ) => {
292+ const middleware = createExtraParamsMiddleware ( { headers : { 'X-Custom' : 'value' } } ) ;
293+ type OnRequestParams = Parameters < NonNullable < typeof middleware . onRequest > > [ 0 ] ;
294+
295+ const request = new Request ( 'https://example.com/items' , {
296+ method : 'GET' ,
297+ headers : { 'Content-Type' : 'application/json' } ,
298+ } ) ;
299+ const modifiedRequest = await middleware . onRequest ! ( { request} as unknown as OnRequestParams ) ;
300+
301+ if ( ! modifiedRequest ) {
302+ throw new Error ( 'Expected middleware to return a Request' ) ;
303+ }
304+
305+ expect ( modifiedRequest . headers . get ( 'X-Custom' ) ) . to . equal ( 'value' ) ;
306+ expect ( modifiedRequest . headers . get ( 'Content-Type' ) ) . to . equal ( 'application/json' ) ;
307+ } ) ;
308+
309+ it ( 'does nothing when headers config is empty' , async ( ) => {
310+ const middleware = createExtraParamsMiddleware ( { headers : { } } ) ;
311+ type OnRequestParams = Parameters < NonNullable < typeof middleware . onRequest > > [ 0 ] ;
312+
313+ const request = new Request ( 'https://example.com/items' , { method : 'GET' } ) ;
314+ const modifiedRequest = await middleware . onRequest ! ( { request} as unknown as OnRequestParams ) ;
315+
316+ if ( ! modifiedRequest ) {
317+ throw new Error ( 'Expected middleware to return a Request' ) ;
318+ }
319+
320+ expect ( modifiedRequest . url ) . to . equal ( request . url ) ;
321+ } ) ;
322+
323+ it ( 'adds multiple extra headers' , async ( ) => {
324+ const middleware = createExtraParamsMiddleware ( {
325+ headers : {
326+ 'CF-Access-Client-Id' : 'client-id' ,
327+ 'CF-Access-Client-Secret' : 'client-secret' ,
328+ } ,
329+ } ) ;
330+ type OnRequestParams = Parameters < NonNullable < typeof middleware . onRequest > > [ 0 ] ;
331+
332+ const request = new Request ( 'https://example.com/items' , { method : 'GET' } ) ;
333+ const modifiedRequest = await middleware . onRequest ! ( { request} as unknown as OnRequestParams ) ;
334+
335+ if ( ! modifiedRequest ) {
336+ throw new Error ( 'Expected middleware to return a Request' ) ;
337+ }
338+
339+ expect ( modifiedRequest . headers . get ( 'CF-Access-Client-Id' ) ) . to . equal ( 'client-id' ) ;
340+ expect ( modifiedRequest . headers . get ( 'CF-Access-Client-Secret' ) ) . to . equal ( 'client-secret' ) ;
341+ } ) ;
259342 } ) ;
260343
261344 describe ( 'createLoggingMiddleware' , ( ) => {
0 commit comments