1818use Symfony \Component \Cache \Adapter \RedisAdapter ;
1919use Symfony \Component \Cache \Adapter \TagAwareAdapter ;
2020use Symfony \Component \Cache \Adapter \TagAwareAdapterInterface ;
21+ use Symfony \Component \HttpFoundation \BinaryFileResponse ;
2122use Symfony \Component \HttpFoundation \Cookie ;
23+ use Symfony \Component \HttpFoundation \File \File ;
2224use Symfony \Component \HttpFoundation \Request ;
2325use Symfony \Component \HttpFoundation \Response ;
2426use Symfony \Component \Lock \Exception \LockReleasingException ;
@@ -105,7 +107,7 @@ public function testIsLockedReturnsTrueIfLockWasAcquired()
105107 $ this ->assertTrue ($ this ->store ->isLocked ($ request ), 'Request is locked. ' );
106108 }
107109
108- public function testUnlockReturnsFalseIfLockWasNotAquired ()
110+ public function testUnlockReturnsFalseIfLockWasNotAcquired ()
109111 {
110112 $ request = Request::create ('/ ' );
111113 $ this ->assertFalse ($ this ->store ->unlock ($ request ), 'Request is not locked. ' );
@@ -130,7 +132,7 @@ public function testLocksAreReleasedOnCleanup()
130132 $ this ->assertFalse ($ this ->store ->isLocked ($ request ), 'Request is no longer locked. ' );
131133 }
132134
133- public function testSameLockCanBeAquiredAgain ()
135+ public function testSameLockCanBeAcquiredAgain ()
134136 {
135137 $ request = Request::create ('/ ' );
136138
@@ -177,7 +179,7 @@ public function testWriteStoresTheResponseContent()
177179 $ this ->assertTrue ($ this ->getCache ()->hasItem ($ contentDigest ), 'Response content is stored in cache. ' );
178180 $ this ->assertSame ($ response ->getContent (), $ this ->getCache ()->getItem ($ contentDigest )->get (), 'Response content is stored in cache. ' );
179181 $ this ->assertSame ($ contentDigest , $ response ->headers ->get ('X-Content-Digest ' ), 'Content digest is stored in the response header. ' );
180- $ this ->assertSame (\strlen ($ response ->getContent ()), $ response ->headers ->get ('Content-Length ' ), 'Response content length is updated. ' );
182+ $ this ->assertSame (\strlen ($ response ->getContent ()), ( int ) $ response ->headers ->get ('Content-Length ' ), 'Response content length is updated. ' );
181183 }
182184
183185 public function testWriteDoesNotStoreTheResponseContentOfNonOriginalResponse ()
@@ -347,6 +349,41 @@ public function testRegularLookup()
347349 $ this ->assertSame ('whatever ' , $ result ->headers ->get ('Foobar ' ));
348350 }
349351
352+ public function testRegularLookupWithBinaryResponse ()
353+ {
354+ $ request = Request::create ('https://foobar.com/ ' );
355+ $ response = new BinaryFileResponse (__DIR__ .'/Fixtures/favicon.ico ' );
356+ $ response ->headers ->set ('Foobar ' , 'whatever ' );
357+
358+ $ this ->store ->write ($ request , $ response );
359+
360+ $ result = $ this ->store ->lookup ($ request );
361+
362+ $ this ->assertInstanceOf (BinaryFileResponse::class, $ result );
363+ $ this ->assertSame (200 , $ result ->getStatusCode ());
364+ $ this ->assertSame (__DIR__ .'/Fixtures/favicon.ico ' , $ result ->getFile ()->getPathname ());
365+ $ this ->assertSame ('whatever ' , $ result ->headers ->get ('Foobar ' ));
366+ }
367+
368+ public function testRegularLookupWithRemovedBinaryResponse ()
369+ {
370+ $ request = Request::create ('https://foobar.com/ ' );
371+ $ file = new File (__DIR__ .'/Fixtures/favicon.ico ' );
372+ $ response = new BinaryFileResponse ($ file );
373+ $ response ->headers ->set ('Foobar ' , 'whatever ' );
374+
375+ $ this ->store ->write ($ request , $ response );
376+
377+ // Now move (same as remove) the file somewhere else
378+ $ movedFile = $ file ->move (__DIR__ .'/Fixtures ' , 'favicon_bu.ico ' );
379+
380+ $ result = $ this ->store ->lookup ($ request );
381+ $ this ->assertNull ($ result );
382+
383+ // Move back for other tests
384+ $ movedFile ->move (__DIR__ .'/Fixtures ' , 'favicon.ico ' );
385+ }
386+
350387 public function testLookupWithVaryOnCookies ()
351388 {
352389 // Cookies match
0 commit comments