@@ -193,6 +193,7 @@ describe('headers', () => {
193193
194194 describe ( 'setCacheControlHeaders' , ( ) => {
195195 const defaultUrl = 'https://example.com'
196+ const defaultStatus = 200
196197
197198 describe ( 'route handler responses with a specified `revalidate` value' , ( ) => {
198199 test ( 'should not set any headers if "cdn-cache-control" is present' , ( ) => {
@@ -204,7 +205,7 @@ describe('headers', () => {
204205 vi . spyOn ( headers , 'set' )
205206
206207 const ctx : RequestContext = { ...createRequestContext ( ) , routeHandlerRevalidate : false }
207- setCacheControlHeaders ( headers , request , ctx )
208+ setCacheControlHeaders ( headers , defaultStatus , request , ctx )
208209
209210 expect ( headers . set ) . toHaveBeenCalledTimes ( 0 )
210211 } )
@@ -218,7 +219,7 @@ describe('headers', () => {
218219 vi . spyOn ( headers , 'set' )
219220
220221 const ctx : RequestContext = { ...createRequestContext ( ) , routeHandlerRevalidate : false }
221- setCacheControlHeaders ( headers , request , ctx )
222+ setCacheControlHeaders ( headers , defaultStatus , request , ctx )
222223
223224 expect ( headers . set ) . toHaveBeenCalledTimes ( 0 )
224225 } )
@@ -232,7 +233,7 @@ describe('headers', () => {
232233 vi . spyOn ( headers , 'set' )
233234
234235 const ctx : RequestContext = { ...createRequestContext ( ) , routeHandlerRevalidate : false }
235- setCacheControlHeaders ( headers , request , ctx )
236+ setCacheControlHeaders ( headers , defaultStatus , request , ctx )
236237
237238 expect ( headers . set ) . toHaveBeenCalledTimes ( 1 )
238239 expect ( headers . set ) . toHaveBeenNthCalledWith (
@@ -251,7 +252,7 @@ describe('headers', () => {
251252 vi . spyOn ( headers , 'set' )
252253
253254 const ctx : RequestContext = { ...createRequestContext ( ) , routeHandlerRevalidate : false }
254- setCacheControlHeaders ( headers , request , ctx )
255+ setCacheControlHeaders ( headers , defaultStatus , request , ctx )
255256
256257 expect ( headers . set ) . toHaveBeenCalledTimes ( 1 )
257258 expect ( headers . set ) . toHaveBeenNthCalledWith (
@@ -267,7 +268,7 @@ describe('headers', () => {
267268 vi . spyOn ( headers , 'set' )
268269
269270 const ctx : RequestContext = { ...createRequestContext ( ) , routeHandlerRevalidate : false }
270- setCacheControlHeaders ( headers , request , ctx )
271+ setCacheControlHeaders ( headers , defaultStatus , request , ctx )
271272
272273 expect ( headers . set ) . toHaveBeenCalledTimes ( 1 )
273274 expect ( headers . set ) . toHaveBeenNthCalledWith (
@@ -283,7 +284,7 @@ describe('headers', () => {
283284 vi . spyOn ( headers , 'set' )
284285
285286 const ctx : RequestContext = { ...createRequestContext ( ) , routeHandlerRevalidate : 7200 }
286- setCacheControlHeaders ( headers , request , ctx )
287+ setCacheControlHeaders ( headers , defaultStatus , request , ctx )
287288
288289 expect ( headers . set ) . toHaveBeenCalledTimes ( 1 )
289290 expect ( headers . set ) . toHaveBeenNthCalledWith (
@@ -299,7 +300,7 @@ describe('headers', () => {
299300 vi . spyOn ( headers , 'set' )
300301
301302 const ctx : RequestContext = { ...createRequestContext ( ) , routeHandlerRevalidate : 7200 }
302- setCacheControlHeaders ( headers , request , ctx )
303+ setCacheControlHeaders ( headers , defaultStatus , request , ctx )
303304
304305 expect ( headers . set ) . toHaveBeenCalledTimes ( 1 )
305306 expect ( headers . set ) . toHaveBeenNthCalledWith (
@@ -315,7 +316,7 @@ describe('headers', () => {
315316 vi . spyOn ( headers , 'set' )
316317
317318 const ctx : RequestContext = { ...createRequestContext ( ) , routeHandlerRevalidate : false }
318- setCacheControlHeaders ( headers , request , ctx )
319+ setCacheControlHeaders ( headers , defaultStatus , request , ctx )
319320
320321 expect ( headers . set ) . toHaveBeenCalledTimes ( 0 )
321322 } )
@@ -326,7 +327,7 @@ describe('headers', () => {
326327 const request = new Request ( defaultUrl )
327328 vi . spyOn ( headers , 'set' )
328329
329- setCacheControlHeaders ( headers , request , createRequestContext ( ) )
330+ setCacheControlHeaders ( headers , defaultStatus , request , createRequestContext ( ) )
330331
331332 expect ( headers . set ) . toHaveBeenCalledTimes ( 0 )
332333 } )
@@ -339,7 +340,30 @@ describe('headers', () => {
339340 const requestContext = createRequestContext ( )
340341 requestContext . usedFsRead = true
341342
342- setCacheControlHeaders ( headers , request , requestContext , true )
343+ setCacheControlHeaders ( headers , defaultStatus , request , requestContext )
344+
345+ expect ( headers . set ) . toHaveBeenNthCalledWith (
346+ 1 ,
347+ 'cache-control' ,
348+ 'public, max-age=0, must-revalidate' ,
349+ )
350+ expect ( headers . set ) . toHaveBeenNthCalledWith (
351+ 2 ,
352+ 'netlify-cdn-cache-control' ,
353+ 'max-age=31536000, durable' ,
354+ )
355+ } )
356+
357+ test ( 'should set permanent, durable "netlify-cdn-cache-control" if 404 response for URl ending in .php' , ( ) => {
358+ const headers = new Headers ( )
359+ const request = new Request ( 'https://example.com/admin.php' )
360+ const status = 404
361+ vi . spyOn ( headers , 'set' )
362+
363+ const requestContext = createRequestContext ( )
364+ requestContext . usedFsRead = true
365+
366+ setCacheControlHeaders ( headers , status , request , requestContext )
343367
344368 expect ( headers . set ) . toHaveBeenNthCalledWith (
345369 1 ,
@@ -362,7 +386,7 @@ describe('headers', () => {
362386 const request = new Request ( defaultUrl )
363387 vi . spyOn ( headers , 'set' )
364388
365- setCacheControlHeaders ( headers , request , createRequestContext ( ) )
389+ setCacheControlHeaders ( headers , defaultStatus , request , createRequestContext ( ) )
366390
367391 expect ( headers . set ) . toHaveBeenCalledTimes ( 0 )
368392 } )
@@ -376,7 +400,7 @@ describe('headers', () => {
376400 const request = new Request ( defaultUrl )
377401 vi . spyOn ( headers , 'set' )
378402
379- setCacheControlHeaders ( headers , request , createRequestContext ( ) )
403+ setCacheControlHeaders ( headers , defaultStatus , request , createRequestContext ( ) )
380404
381405 expect ( headers . set ) . toHaveBeenCalledTimes ( 0 )
382406 } )
@@ -389,7 +413,7 @@ describe('headers', () => {
389413 const request = new Request ( defaultUrl )
390414 vi . spyOn ( headers , 'set' )
391415
392- setCacheControlHeaders ( headers , request , createRequestContext ( ) )
416+ setCacheControlHeaders ( headers , defaultStatus , request , createRequestContext ( ) )
393417
394418 expect ( headers . set ) . toHaveBeenNthCalledWith (
395419 1 ,
@@ -411,7 +435,7 @@ describe('headers', () => {
411435 const request = new Request ( defaultUrl , { method : 'HEAD' } )
412436 vi . spyOn ( headers , 'set' )
413437
414- setCacheControlHeaders ( headers , request , createRequestContext ( ) )
438+ setCacheControlHeaders ( headers , defaultStatus , request , createRequestContext ( ) )
415439
416440 expect ( headers . set ) . toHaveBeenNthCalledWith (
417441 1 ,
@@ -433,7 +457,7 @@ describe('headers', () => {
433457 const request = new Request ( defaultUrl , { method : 'POST' } )
434458 vi . spyOn ( headers , 'set' )
435459
436- setCacheControlHeaders ( headers , request , createRequestContext ( ) )
460+ setCacheControlHeaders ( headers , defaultStatus , request , createRequestContext ( ) )
437461
438462 expect ( headers . set ) . toHaveBeenCalledTimes ( 0 )
439463 } )
@@ -446,7 +470,7 @@ describe('headers', () => {
446470 const request = new Request ( defaultUrl )
447471 vi . spyOn ( headers , 'set' )
448472
449- setCacheControlHeaders ( headers , request , createRequestContext ( ) )
473+ setCacheControlHeaders ( headers , defaultStatus , request , createRequestContext ( ) )
450474
451475 expect ( headers . set ) . toHaveBeenNthCalledWith ( 1 , 'cache-control' , 'public' )
452476 expect ( headers . set ) . toHaveBeenNthCalledWith (
@@ -464,7 +488,7 @@ describe('headers', () => {
464488 const request = new Request ( defaultUrl )
465489 vi . spyOn ( headers , 'set' )
466490
467- setCacheControlHeaders ( headers , request , createRequestContext ( ) )
491+ setCacheControlHeaders ( headers , defaultStatus , request , createRequestContext ( ) )
468492
469493 expect ( headers . set ) . toHaveBeenNthCalledWith ( 1 , 'cache-control' , 'max-age=604800' )
470494 expect ( headers . set ) . toHaveBeenNthCalledWith (
@@ -482,7 +506,7 @@ describe('headers', () => {
482506 const request = new Request ( defaultUrl )
483507 vi . spyOn ( headers , 'set' )
484508
485- setCacheControlHeaders ( headers , request , createRequestContext ( ) )
509+ setCacheControlHeaders ( headers , defaultStatus , request , createRequestContext ( ) )
486510
487511 expect ( headers . set ) . toHaveBeenNthCalledWith (
488512 1 ,
0 commit comments