From a6db7c0cb94673512148b0e202aeeabf1740205b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Mon, 26 Oct 2020 14:09:39 +0100 Subject: [PATCH] fix: don't set the Accept header by default --- src/HttpCall/Request/BrowserKit.php | 14 ++++++++++++-- tests/features/rest.feature | 6 +++++- tests/fixtures/www/rest/index.php | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/HttpCall/Request/BrowserKit.php b/src/HttpCall/Request/BrowserKit.php index 959bf8ff..ce19c2c2 100644 --- a/src/HttpCall/Request/BrowserKit.php +++ b/src/HttpCall/Request/BrowserKit.php @@ -68,6 +68,12 @@ public function send($method, $url, $parameters = [], $files = [], $content = nu $client = $this->mink->getSession()->getDriver()->getClient(); $client->followRedirects(false); + + // Workaround for https://github.com/symfony/symfony/issues/33393: prevent a default Accept header to be set + if (!isset($headers['HTTP_ACCEPT']) && '' === $client->getServerParameter('HTTP_ACCEPT')) { + $headers['HTTP_ACCEPT'] = null; + } + $client->request($method, $url, $parameters, $files, $headers, $content); $client->followRedirects(true); $this->resetHttpHeaders(); @@ -78,11 +84,15 @@ public function send($method, $url, $parameters = [], $files = [], $content = nu public function setHttpHeader($name, $value) { $client = $this->mink->getSession()->getDriver()->getClient(); - // Goutte\Client if (method_exists($client, 'setHeader')) { + /** + * @var \Goutte\Client $client + */ $client->setHeader($name, $value); } else { - // Symfony\Component\BrowserKit\Client + /** + * @var \Symfony\Component\BrowserKit\HttpBrowser $client + */ /* taken from Behat\Mink\Driver\BrowserKitDriver::setRequestHeader */ $contentHeaders = ['CONTENT_LENGTH' => true, 'CONTENT_MD5' => true, 'CONTENT_TYPE' => true]; diff --git a/tests/features/rest.feature b/tests/features/rest.feature index c5897272..3e45e6f8 100644 --- a/tests/features/rest.feature +++ b/tests/features/rest.feature @@ -97,7 +97,11 @@ Feature: Testing RESTContext Congratulations, you've correctly set up your apache environment. """ - @>php5.5 + Scenario: Accept header should not be set by dfault + When I send a GET request to "/rest/index.php" + Then I should not see "HTTP_ACCEPT" + + @>php5.5 Scenario: Set content headers in POST request When I add "Content-Type" header equal to "xxx" When I send a "POST" request to "rest/index.php" with body: diff --git a/tests/fixtures/www/rest/index.php b/tests/fixtures/www/rest/index.php index c0340f3d..79d78ba2 100644 --- a/tests/fixtures/www/rest/index.php +++ b/tests/fixtures/www/rest/index.php @@ -18,7 +18,7 @@ You have sent a request. header(s) received. - $value): ?> + $value): ?>
: