Skip to content

Commit 5c222d3

Browse files
authored
Merge pull request #2646 from bpolaszek/2.4
Ensure unsuccessful responses are not cached
2 parents 294afdc + 424fedc commit 5c222d3

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

src/HttpCache/EventListener/AddHeadersListener.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public function onKernelResponse(FilterResponseEvent $event): void
5252

5353
$response = $event->getResponse();
5454

55-
if (!$response->getContent()) {
55+
if (!$response->getContent() || !$response->isSuccessful()) {
5656
return;
5757
}
5858

tests/HttpCache/EventListener/AddHeadersListenerTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,22 @@ public function testDoNotSetHeaderWhenMethodNotCacheable()
4444
$this->assertNull($response->getEtag());
4545
}
4646

47+
public function testDoNotSetHeaderOnUnsuccessfulResponse()
48+
{
49+
$request = new Request([], [], ['_api_resource_class' => Dummy::class, '_api_item_operation_name' => 'get']);
50+
51+
$response = new Response('{}', Response::HTTP_BAD_REQUEST);
52+
53+
$event = $this->prophesize(FilterResponseEvent::class);
54+
$event->getRequest()->willReturn($request)->shouldBeCalled();
55+
$event->getResponse()->willReturn($response)->shouldBeCalled();
56+
57+
$listener = new AddHeadersListener(true);
58+
$listener->onKernelResponse($event->reveal());
59+
60+
$this->assertNull($response->getEtag());
61+
}
62+
4763
public function testDoNotSetHeaderWhenNotAnApiOperation()
4864
{
4965
$request = new Request();

0 commit comments

Comments
 (0)