@@ -199,43 +199,43 @@ describe('headers', () => {
199
199
const givenHeaders = {
200
200
'cdn-cache-control' : 'public, max-age=0, must-revalidate' ,
201
201
}
202
- const headers = new Headers ( givenHeaders )
203
202
const request = new Request ( defaultUrl )
204
- vi . spyOn ( headers , 'set' )
203
+ const response = new Response ( null , { headers : givenHeaders } )
204
+ vi . spyOn ( response . headers , 'set' )
205
205
206
206
const ctx : RequestContext = { ...createRequestContext ( ) , routeHandlerRevalidate : false }
207
- setCacheControlHeaders ( headers , request , ctx )
207
+ setCacheControlHeaders ( response , request , ctx )
208
208
209
- expect ( headers . set ) . toHaveBeenCalledTimes ( 0 )
209
+ expect ( response . headers . set ) . toHaveBeenCalledTimes ( 0 )
210
210
} )
211
211
212
212
test ( 'should not set any headers if "netlify-cdn-cache-control" is present' , ( ) => {
213
213
const givenHeaders = {
214
214
'netlify-cdn-cache-control' : 'public, max-age=0, must-revalidate' ,
215
215
}
216
- const headers = new Headers ( givenHeaders )
217
216
const request = new Request ( defaultUrl )
218
- vi . spyOn ( headers , 'set' )
217
+ const response = new Response ( null , { headers : givenHeaders } )
218
+ vi . spyOn ( response . headers , 'set' )
219
219
220
220
const ctx : RequestContext = { ...createRequestContext ( ) , routeHandlerRevalidate : false }
221
- setCacheControlHeaders ( headers , request , ctx )
221
+ setCacheControlHeaders ( response , request , ctx )
222
222
223
- expect ( headers . set ) . toHaveBeenCalledTimes ( 0 )
223
+ expect ( response . headers . set ) . toHaveBeenCalledTimes ( 0 )
224
224
} )
225
225
226
226
test ( 'should mark content as stale if "{netlify-,}cdn-cache-control" is not present and "x-nextjs-cache" is "STALE" (GET)' , ( ) => {
227
227
const givenHeaders = {
228
228
'x-nextjs-cache' : 'STALE' ,
229
229
}
230
- const headers = new Headers ( givenHeaders )
231
230
const request = new Request ( defaultUrl )
232
- vi . spyOn ( headers , 'set' )
231
+ const response = new Response ( null , { headers : givenHeaders } )
232
+ vi . spyOn ( response . headers , 'set' )
233
233
234
234
const ctx : RequestContext = { ...createRequestContext ( ) , routeHandlerRevalidate : false }
235
- setCacheControlHeaders ( headers , request , ctx )
235
+ setCacheControlHeaders ( response , request , ctx )
236
236
237
- expect ( headers . set ) . toHaveBeenCalledTimes ( 1 )
238
- expect ( headers . set ) . toHaveBeenNthCalledWith (
237
+ expect ( response . headers . set ) . toHaveBeenCalledTimes ( 1 )
238
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith (
239
239
1 ,
240
240
'netlify-cdn-cache-control' ,
241
241
'public, max-age=0, must-revalidate, durable' ,
@@ -246,107 +246,129 @@ describe('headers', () => {
246
246
const givenHeaders = {
247
247
'x-nextjs-cache' : 'STALE' ,
248
248
}
249
- const headers = new Headers ( givenHeaders )
250
249
const request = new Request ( defaultUrl )
251
- vi . spyOn ( headers , 'set' )
250
+ const response = new Response ( null , { headers : givenHeaders } )
251
+ vi . spyOn ( response . headers , 'set' )
252
252
253
253
const ctx : RequestContext = { ...createRequestContext ( ) , routeHandlerRevalidate : false }
254
- setCacheControlHeaders ( headers , request , ctx )
254
+ setCacheControlHeaders ( response , request , ctx )
255
255
256
- expect ( headers . set ) . toHaveBeenCalledTimes ( 1 )
257
- expect ( headers . set ) . toHaveBeenNthCalledWith (
256
+ expect ( response . headers . set ) . toHaveBeenCalledTimes ( 1 )
257
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith (
258
258
1 ,
259
259
'netlify-cdn-cache-control' ,
260
260
'public, max-age=0, must-revalidate, durable' ,
261
261
)
262
262
} )
263
263
264
264
test ( 'should set durable SWC=1yr with 1yr TTL if "{netlify-,}cdn-cache-control" is not present and `revalidate` is `false` (HEAD)' , ( ) => {
265
- const headers = new Headers ( )
266
265
const request = new Request ( defaultUrl , { method : 'HEAD' } )
267
- vi . spyOn ( headers , 'set' )
266
+ const response = new Response ( )
267
+ vi . spyOn ( response . headers , 'set' )
268
268
269
269
const ctx : RequestContext = { ...createRequestContext ( ) , routeHandlerRevalidate : false }
270
- setCacheControlHeaders ( headers , request , ctx )
270
+ setCacheControlHeaders ( response , request , ctx )
271
271
272
- expect ( headers . set ) . toHaveBeenCalledTimes ( 1 )
273
- expect ( headers . set ) . toHaveBeenNthCalledWith (
272
+ expect ( response . headers . set ) . toHaveBeenCalledTimes ( 1 )
273
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith (
274
274
1 ,
275
275
'netlify-cdn-cache-control' ,
276
276
's-maxage=31536000, stale-while-revalidate=31536000, durable' ,
277
277
)
278
278
} )
279
279
280
280
test ( 'should set durable SWC=1yr with given TTL if "{netlify-,}cdn-cache-control" is not present and `revalidate` is a number (GET)' , ( ) => {
281
- const headers = new Headers ( )
282
281
const request = new Request ( defaultUrl )
283
- vi . spyOn ( headers , 'set' )
282
+ const response = new Response ( )
283
+ vi . spyOn ( response . headers , 'set' )
284
284
285
285
const ctx : RequestContext = { ...createRequestContext ( ) , routeHandlerRevalidate : 7200 }
286
- setCacheControlHeaders ( headers , request , ctx )
286
+ setCacheControlHeaders ( response , request , ctx )
287
287
288
- expect ( headers . set ) . toHaveBeenCalledTimes ( 1 )
289
- expect ( headers . set ) . toHaveBeenNthCalledWith (
288
+ expect ( response . headers . set ) . toHaveBeenCalledTimes ( 1 )
289
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith (
290
290
1 ,
291
291
'netlify-cdn-cache-control' ,
292
292
's-maxage=7200, stale-while-revalidate=31536000, durable' ,
293
293
)
294
294
} )
295
295
296
296
test ( 'should set durable SWC=1yr with 1yr TTL if "{netlify-,}cdn-cache-control" is not present and `revalidate` is a number (HEAD)' , ( ) => {
297
- const headers = new Headers ( )
298
297
const request = new Request ( defaultUrl , { method : 'HEAD' } )
299
- vi . spyOn ( headers , 'set' )
298
+ const response = new Response ( )
299
+ vi . spyOn ( response . headers , 'set' )
300
300
301
301
const ctx : RequestContext = { ...createRequestContext ( ) , routeHandlerRevalidate : 7200 }
302
- setCacheControlHeaders ( headers , request , ctx )
302
+ setCacheControlHeaders ( response , request , ctx )
303
303
304
- expect ( headers . set ) . toHaveBeenCalledTimes ( 1 )
305
- expect ( headers . set ) . toHaveBeenNthCalledWith (
304
+ expect ( response . headers . set ) . toHaveBeenCalledTimes ( 1 )
305
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith (
306
306
1 ,
307
307
'netlify-cdn-cache-control' ,
308
308
's-maxage=7200, stale-while-revalidate=31536000, durable' ,
309
309
)
310
310
} )
311
311
312
312
test ( 'should not set any headers on POST request' , ( ) => {
313
- const headers = new Headers ( )
314
313
const request = new Request ( defaultUrl , { method : 'POST' } )
315
- vi . spyOn ( headers , 'set' )
314
+ const response = new Response ( )
315
+ vi . spyOn ( response . headers , 'set' )
316
316
317
317
const ctx : RequestContext = { ...createRequestContext ( ) , routeHandlerRevalidate : false }
318
- setCacheControlHeaders ( headers , request , ctx )
318
+ setCacheControlHeaders ( response , request , ctx )
319
319
320
- expect ( headers . set ) . toHaveBeenCalledTimes ( 0 )
320
+ expect ( response . headers . set ) . toHaveBeenCalledTimes ( 0 )
321
321
} )
322
322
} )
323
323
324
324
test ( 'should not set any headers if "cache-control" is not set and "requestContext.usedFsRead" is not truthy' , ( ) => {
325
- const headers = new Headers ( )
326
325
const request = new Request ( defaultUrl )
327
- vi . spyOn ( headers , 'set' )
326
+ const response = new Response ( )
327
+ vi . spyOn ( response . headers , 'set' )
328
328
329
- setCacheControlHeaders ( headers , request , createRequestContext ( ) )
329
+ setCacheControlHeaders ( response , request , createRequestContext ( ) )
330
330
331
- expect ( headers . set ) . toHaveBeenCalledTimes ( 0 )
331
+ expect ( response . headers . set ) . toHaveBeenCalledTimes ( 0 )
332
332
} )
333
333
334
334
test ( 'should set permanent, durable "netlify-cdn-cache-control" if "cache-control" is not set and "requestContext.usedFsRead" is truthy' , ( ) => {
335
- const headers = new Headers ( )
336
335
const request = new Request ( defaultUrl )
337
- vi . spyOn ( headers , 'set' )
336
+ const response = new Response ( )
337
+ vi . spyOn ( response . headers , 'set' )
338
+
339
+ const requestContext = createRequestContext ( )
340
+ requestContext . usedFsRead = true
341
+
342
+ setCacheControlHeaders ( response , request , requestContext )
343
+
344
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith (
345
+ 1 ,
346
+ 'cache-control' ,
347
+ 'public, max-age=0, must-revalidate' ,
348
+ )
349
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith (
350
+ 2 ,
351
+ 'netlify-cdn-cache-control' ,
352
+ 'max-age=31536000, durable' ,
353
+ )
354
+ } )
355
+
356
+ test ( 'should set permanent, durable "netlify-cdn-cache-control" if 404 response for URl ending in .php' , ( ) => {
357
+ const request = new Request ( `${ defaultUrl } /admin.php` )
358
+ const response = new Response ( null , { status : 404 } )
359
+ vi . spyOn ( response . headers , 'set' )
338
360
339
361
const requestContext = createRequestContext ( )
340
362
requestContext . usedFsRead = true
341
363
342
- setCacheControlHeaders ( headers , request , requestContext , true )
364
+ setCacheControlHeaders ( response , request , requestContext )
343
365
344
- expect ( headers . set ) . toHaveBeenNthCalledWith (
366
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith (
345
367
1 ,
346
368
'cache-control' ,
347
369
'public, max-age=0, must-revalidate' ,
348
370
)
349
- expect ( headers . set ) . toHaveBeenNthCalledWith (
371
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith (
350
372
2 ,
351
373
'netlify-cdn-cache-control' ,
352
374
'max-age=31536000, durable' ,
@@ -358,45 +380,45 @@ describe('headers', () => {
358
380
'cache-control' : 'public, max-age=0, must-revalidate' ,
359
381
'cdn-cache-control' : 'public, max-age=0, must-revalidate' ,
360
382
}
361
- const headers = new Headers ( givenHeaders )
362
383
const request = new Request ( defaultUrl )
363
- vi . spyOn ( headers , 'set' )
384
+ const response = new Response ( null , { headers : givenHeaders } )
385
+ vi . spyOn ( response . headers , 'set' )
364
386
365
- setCacheControlHeaders ( headers , request , createRequestContext ( ) )
387
+ setCacheControlHeaders ( response , request , createRequestContext ( ) )
366
388
367
- expect ( headers . set ) . toHaveBeenCalledTimes ( 0 )
389
+ expect ( response . headers . set ) . toHaveBeenCalledTimes ( 0 )
368
390
} )
369
391
370
392
test ( 'should not set any headers if "cache-control" is set and "netlify-cdn-cache-control" is present' , ( ) => {
371
393
const givenHeaders = {
372
394
'cache-control' : 'public, max-age=0, must-revalidate' ,
373
395
'netlify-cdn-cache-control' : 'public, max-age=0, must-revalidate' ,
374
396
}
375
- const headers = new Headers ( givenHeaders )
376
397
const request = new Request ( defaultUrl )
377
- vi . spyOn ( headers , 'set' )
398
+ const response = new Response ( null , { headers : givenHeaders } )
399
+ vi . spyOn ( response . headers , 'set' )
378
400
379
- setCacheControlHeaders ( headers , request , createRequestContext ( ) )
401
+ setCacheControlHeaders ( response , request , createRequestContext ( ) )
380
402
381
- expect ( headers . set ) . toHaveBeenCalledTimes ( 0 )
403
+ expect ( response . headers . set ) . toHaveBeenCalledTimes ( 0 )
382
404
} )
383
405
384
406
test ( 'should set expected headers if "cache-control" is set and "cdn-cache-control" and "netlify-cdn-cache-control" are not present (GET request)' , ( ) => {
385
407
const givenHeaders = {
386
408
'cache-control' : 'public, max-age=0, must-revalidate' ,
387
409
}
388
- const headers = new Headers ( givenHeaders )
389
410
const request = new Request ( defaultUrl )
390
- vi . spyOn ( headers , 'set' )
411
+ const response = new Response ( null , { headers : givenHeaders } )
412
+ vi . spyOn ( response . headers , 'set' )
391
413
392
- setCacheControlHeaders ( headers , request , createRequestContext ( ) )
414
+ setCacheControlHeaders ( response , request , createRequestContext ( ) )
393
415
394
- expect ( headers . set ) . toHaveBeenNthCalledWith (
416
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith (
395
417
1 ,
396
418
'cache-control' ,
397
419
'public, max-age=0, must-revalidate' ,
398
420
)
399
- expect ( headers . set ) . toHaveBeenNthCalledWith (
421
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith (
400
422
2 ,
401
423
'netlify-cdn-cache-control' ,
402
424
'public, max-age=0, must-revalidate, durable' ,
@@ -407,18 +429,18 @@ describe('headers', () => {
407
429
const givenHeaders = {
408
430
'cache-control' : 'public, max-age=0, must-revalidate' ,
409
431
}
410
- const headers = new Headers ( givenHeaders )
411
432
const request = new Request ( defaultUrl , { method : 'HEAD' } )
412
- vi . spyOn ( headers , 'set' )
433
+ const response = new Response ( null , { headers : givenHeaders } )
434
+ vi . spyOn ( response . headers , 'set' )
413
435
414
- setCacheControlHeaders ( headers , request , createRequestContext ( ) )
436
+ setCacheControlHeaders ( response , request , createRequestContext ( ) )
415
437
416
- expect ( headers . set ) . toHaveBeenNthCalledWith (
438
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith (
417
439
1 ,
418
440
'cache-control' ,
419
441
'public, max-age=0, must-revalidate' ,
420
442
)
421
- expect ( headers . set ) . toHaveBeenNthCalledWith (
443
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith (
422
444
2 ,
423
445
'netlify-cdn-cache-control' ,
424
446
'public, max-age=0, must-revalidate, durable' ,
@@ -429,27 +451,27 @@ describe('headers', () => {
429
451
const givenHeaders = {
430
452
'cache-control' : 'public, max-age=0, must-revalidate' ,
431
453
}
432
- const headers = new Headers ( givenHeaders )
433
454
const request = new Request ( defaultUrl , { method : 'POST' } )
434
- vi . spyOn ( headers , 'set' )
455
+ const response = new Response ( null , { headers : givenHeaders } )
456
+ vi . spyOn ( response . headers , 'set' )
435
457
436
- setCacheControlHeaders ( headers , request , createRequestContext ( ) )
458
+ setCacheControlHeaders ( response , request , createRequestContext ( ) )
437
459
438
- expect ( headers . set ) . toHaveBeenCalledTimes ( 0 )
460
+ expect ( response . headers . set ) . toHaveBeenCalledTimes ( 0 )
439
461
} )
440
462
441
463
test ( 'should remove "s-maxage" from "cache-control" header' , ( ) => {
442
464
const givenHeaders = {
443
465
'cache-control' : 'public, s-maxage=604800' ,
444
466
}
445
- const headers = new Headers ( givenHeaders )
446
467
const request = new Request ( defaultUrl )
447
- vi . spyOn ( headers , 'set' )
468
+ const response = new Response ( null , { headers : givenHeaders } )
469
+ vi . spyOn ( response . headers , 'set' )
448
470
449
- setCacheControlHeaders ( headers , request , createRequestContext ( ) )
471
+ setCacheControlHeaders ( response , request , createRequestContext ( ) )
450
472
451
- expect ( headers . set ) . toHaveBeenNthCalledWith ( 1 , 'cache-control' , 'public' )
452
- expect ( headers . set ) . toHaveBeenNthCalledWith (
473
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith ( 1 , 'cache-control' , 'public' )
474
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith (
453
475
2 ,
454
476
'netlify-cdn-cache-control' ,
455
477
'public, s-maxage=604800, durable' ,
@@ -460,14 +482,14 @@ describe('headers', () => {
460
482
const givenHeaders = {
461
483
'cache-control' : 'max-age=604800, stale-while-revalidate=86400' ,
462
484
}
463
- const headers = new Headers ( givenHeaders )
464
485
const request = new Request ( defaultUrl )
465
- vi . spyOn ( headers , 'set' )
486
+ const response = new Response ( null , { headers : givenHeaders } )
487
+ vi . spyOn ( response . headers , 'set' )
466
488
467
- setCacheControlHeaders ( headers , request , createRequestContext ( ) )
489
+ setCacheControlHeaders ( response , request , createRequestContext ( ) )
468
490
469
- expect ( headers . set ) . toHaveBeenNthCalledWith ( 1 , 'cache-control' , 'max-age=604800' )
470
- expect ( headers . set ) . toHaveBeenNthCalledWith (
491
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith ( 1 , 'cache-control' , 'max-age=604800' )
492
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith (
471
493
2 ,
472
494
'netlify-cdn-cache-control' ,
473
495
'max-age=604800, stale-while-revalidate=86400, durable' ,
@@ -478,18 +500,18 @@ describe('headers', () => {
478
500
const givenHeaders = {
479
501
'cache-control' : 's-maxage=604800, stale-while-revalidate=86400' ,
480
502
}
481
- const headers = new Headers ( givenHeaders )
482
503
const request = new Request ( defaultUrl )
483
- vi . spyOn ( headers , 'set' )
504
+ const response = new Response ( null , { headers : givenHeaders } )
505
+ vi . spyOn ( response . headers , 'set' )
484
506
485
- setCacheControlHeaders ( headers , request , createRequestContext ( ) )
507
+ setCacheControlHeaders ( response , request , createRequestContext ( ) )
486
508
487
- expect ( headers . set ) . toHaveBeenNthCalledWith (
509
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith (
488
510
1 ,
489
511
'cache-control' ,
490
512
'public, max-age=0, must-revalidate' ,
491
513
)
492
- expect ( headers . set ) . toHaveBeenNthCalledWith (
514
+ expect ( response . headers . set ) . toHaveBeenNthCalledWith (
493
515
2 ,
494
516
'netlify-cdn-cache-control' ,
495
517
's-maxage=604800, stale-while-revalidate=86400, durable' ,
0 commit comments