Skip to content

Commit fe5d7dd

Browse files
authored
Merge pull request #1187 from antograssiot/header-listener
Avoid errors when a request has no content
2 parents 624ccf5 + 091f5ef commit fe5d7dd

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/HttpCache/EventListener/AddHeadersListener.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ public function onKernelResponse(FilterResponseEvent $event)
4949

5050
$response = $event->getResponse();
5151

52+
if (!$response->getContent()) {
53+
return;
54+
}
55+
5256
if ($this->etag) {
5357
$response->setEtag(md5($response->getContent()));
5458
}

tests/HttpCache/EventListener/AddHeadersListenerTest.php

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public function testDoNotSetHeaderWhenNotAnApiOperation()
5656
$this->assertNull($response->getEtag());
5757
}
5858

59-
public function testAddHeaders()
59+
public function testDoNotSetHeaderWhenNoContent()
6060
{
6161
$request = new Request([], [], ['_api_resource_class' => Dummy::class, '_api_item_operation_name' => 'get']);
6262
$response = new Response();
@@ -65,10 +65,25 @@ public function testAddHeaders()
6565
$event->getRequest()->willReturn($request)->shouldBeCalled();
6666
$event->getResponse()->willReturn($response)->shouldBeCalled();
6767

68+
$listener = new AddHeadersListener(true);
69+
$listener->onKernelResponse($event->reveal());
70+
71+
$this->assertNull($response->getEtag());
72+
}
73+
74+
public function testAddHeaders()
75+
{
76+
$request = new Request([], [], ['_api_resource_class' => Dummy::class, '_api_item_operation_name' => 'get']);
77+
$response = new Response('some content');
78+
79+
$event = $this->prophesize(FilterResponseEvent::class);
80+
$event->getRequest()->willReturn($request)->shouldBeCalled();
81+
$event->getResponse()->willReturn($response)->shouldBeCalled();
82+
6883
$listener = new AddHeadersListener(true, 100, 200, ['Content-Type'], true);
6984
$listener->onKernelResponse($event->reveal());
7085

71-
$this->assertSame('"d41d8cd98f00b204e9800998ecf8427e"', $response->getEtag());
86+
$this->assertSame('"9893532233caff98cd083a116b013c0b"', $response->getEtag());
7287
$this->assertSame('max-age=100, public, s-maxage=200', $response->headers->get('Cache-Control'));
7388
$this->assertSame(['Content-Type'], $response->getVary());
7489
}

0 commit comments

Comments
 (0)