18
18
use Symfony \Component \Cache \Adapter \RedisAdapter ;
19
19
use Symfony \Component \Cache \Adapter \TagAwareAdapter ;
20
20
use Symfony \Component \Cache \Adapter \TagAwareAdapterInterface ;
21
+ use Symfony \Component \HttpFoundation \BinaryFileResponse ;
21
22
use Symfony \Component \HttpFoundation \Cookie ;
23
+ use Symfony \Component \HttpFoundation \File \File ;
22
24
use Symfony \Component \HttpFoundation \Request ;
23
25
use Symfony \Component \HttpFoundation \Response ;
24
26
use Symfony \Component \Lock \Exception \LockReleasingException ;
@@ -105,7 +107,7 @@ public function testIsLockedReturnsTrueIfLockWasAcquired()
105
107
$ this ->assertTrue ($ this ->store ->isLocked ($ request ), 'Request is locked. ' );
106
108
}
107
109
108
- public function testUnlockReturnsFalseIfLockWasNotAquired ()
110
+ public function testUnlockReturnsFalseIfLockWasNotAcquired ()
109
111
{
110
112
$ request = Request::create ('/ ' );
111
113
$ this ->assertFalse ($ this ->store ->unlock ($ request ), 'Request is not locked. ' );
@@ -130,7 +132,7 @@ public function testLocksAreReleasedOnCleanup()
130
132
$ this ->assertFalse ($ this ->store ->isLocked ($ request ), 'Request is no longer locked. ' );
131
133
}
132
134
133
- public function testSameLockCanBeAquiredAgain ()
135
+ public function testSameLockCanBeAcquiredAgain ()
134
136
{
135
137
$ request = Request::create ('/ ' );
136
138
@@ -177,7 +179,7 @@ public function testWriteStoresTheResponseContent()
177
179
$ this ->assertTrue ($ this ->getCache ()->hasItem ($ contentDigest ), 'Response content is stored in cache. ' );
178
180
$ this ->assertSame ($ response ->getContent (), $ this ->getCache ()->getItem ($ contentDigest )->get (), 'Response content is stored in cache. ' );
179
181
$ 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. ' );
181
183
}
182
184
183
185
public function testWriteDoesNotStoreTheResponseContentOfNonOriginalResponse ()
@@ -347,6 +349,41 @@ public function testRegularLookup()
347
349
$ this ->assertSame ('whatever ' , $ result ->headers ->get ('Foobar ' ));
348
350
}
349
351
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
+
350
387
public function testLookupWithVaryOnCookies ()
351
388
{
352
389
// Cookies match
0 commit comments