Skip to content

Conversation

@emarref
Copy link
Contributor

@emarref emarref commented Mar 19, 2019

Creating a new Cookie() in SF4.2 triggers a deprecation notice, causing test suites to fail. The deprecation notice relates to the default value of two of the cookie constructor arguments. The notice suggests using the Cookie::create() method, but this is not available in Symfony versions older than 4.2. The alternative is to explicitly set values for all constructor arguments. This allows compatibility with older versions of Symfony while also supporting the newer versions in future.

The default value of the "$secure" and "$samesite" arguments of "Symfony\Component\HttpFoundation\Cookie::__construct"'s constructor will respectively change from "false" to "null" and from "null" to "lax" in Symfony 5.0, you should define their values explicitly or use "Cookie::create()" instead.
Stack trace:
#0 vendor/sentry/sentry/lib/Raven/ErrorHandler.php(127): Raven_Breadcrumbs_ErrorHandler->handleError(16384, 'The default val...', '/var/www/vendor...', 91, Array)
#1 [internal function]: Raven_ErrorHandler->handleError(16384, 'The default val...', '/var/www/vendor...', 91, Array)
#2 vendor/symfony/http-foundation/Cookie.php(91): trigger_error('The default val...', 16384)
#3 vendor/suncat/mobile-detect-bundle/SunCat/MobileDetectBundle/Helper/DeviceView.php(476): Symfony\Component\HttpFoundation\Cookie->__construct('device_view', 'full', Object(DateTime), '/', '', false, true)
#4 vendor/suncat/mobile-detect-bundle/SunCat/MobileDetectBundle/Helper/DeviceView.php(299): SunCat\MobileDetectBundle\Helper\DeviceView->createCookie('full')
#5 vendor/suncat/mobile-detect-bundle/SunCat/MobileDetectBundle/EventListener/RequestResponseListener.php(219): SunCat\MobileDetectBundle\Helper\DeviceView->modifyResponse('full', Object(Symfony\Component\HttpFoundation\Response))
#6 vendor/suncat/mobile-detect-bundle/SunCat/MobileDetectBundle/EventListener/RequestResponseListener.php(177): SunCat\MobileDetectBundle\EventListener\RequestResponseListener->SunCat\MobileDetectBundle\EventListener\{closure}(Object(SunCat\MobileDetectBundle\Helper\DeviceView), Object(Symfony\Component\HttpKernel\Event\FilterResponseEvent))
#7 vendor/symfony/event-dispatcher/EventDispatcher.php(212): SunCat\MobileDetectBundle\EventListener\RequestResponseListener->handleResponse(Object(Symfony\Component\HttpKernel\Event\FilterResponseEvent), 'kernel.response', Object(Symfony\Component\EventDispatcher\EventDispatcher))
#8 vendor/symfony/event-dispatcher/EventDispatcher.php(44): Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(Array, 'kernel.response', Object(Symfony\Component\HttpKernel\Event\FilterResponseEvent))
#9 vendor/symfony/http-kernel/HttpKernel.php(189): Symfony\Component\EventDispatcher\EventDispatcher->dispatch('kernel.response', Object(Symfony\Component\HttpKernel\Event\FilterResponseEvent))
#10 vendor/symfony/http-kernel/HttpKernel.php(171): Symfony\Component\HttpKernel\HttpKernel->filterResponse(Object(Symfony\Component\HttpFoundation\Response), Object(Symfony\Component\HttpFoundation\Request), 1)
#11 vendor/symfony/http-kernel/HttpKernel.php(67): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
#12 vendor/symfony/http-kernel/Kernel.php(198): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#13 vendor/symfony/http-kernel/Client.php(68): Symfony\Component\HttpKernel\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#14 vendor/symfony/framework-bundle/Client.php(131): Symfony\Component\HttpKernel\Client->doRequest(Object(Symfony\Component\HttpFoundation\Request))
#15 vendor/symfony/browser-kit/Client.php(405): Symfony\Bundle\FrameworkBundle\Client->doRequest(Object(Symfony\Component\HttpFoundation\Request))
#16 tests/functional/Bundle/QuizBundle/Controller/PublicControllerTest.php(13): Symfony\Component\BrowserKit\Client->request('GET', 'http://localhos...')
#17 [internal function]: Weirdly\Bundle\QuizBundle\Controller\PublicControllerTest->testPublicQuiz()
#18 {main}
Exited with code 1

This pull request introduces those arguments and sets them explicitly, maintaining current behaviour with no backwards-breaking changes.

Creating a `new Cookie()` in SF4.2 triggers a deprecation notice, causing test suites to fail. The deprecation notice relates to the default value of two of the cookie constructor arguments. The notice suggests using the `Cookie::create()` method, but this is not available in Symfony versions older than 4.2. The alternative is to explicitly set values for all constructor arguments. This allows compatibility with older versions of Symfony while also supporting the newer versions in future.

```
The default value of the "$secure" and "$samesite" arguments of "Symfony\Component\HttpFoundation\Cookie::__construct"'s constructor will respectively change from "false" to "null" and from "null" to "lax" in Symfony 5.0, you should define their values explicitly or use "Cookie::create()" instead.
Stack trace:
#0 vendor/sentry/sentry/lib/Raven/ErrorHandler.php(127): Raven_Breadcrumbs_ErrorHandler->handleError(16384, 'The default val...', '/var/www/vendor...', 91, Array)
#1 [internal function]: Raven_ErrorHandler->handleError(16384, 'The default val...', '/var/www/vendor...', 91, Array)
#2 vendor/symfony/http-foundation/Cookie.php(91): trigger_error('The default val...', 16384)
#3 vendor/suncat/mobile-detect-bundle/SunCat/MobileDetectBundle/Helper/DeviceView.php(476): Symfony\Component\HttpFoundation\Cookie->__construct('device_view', 'full', Object(DateTime), '/', '', false, true)
#4 vendor/suncat/mobile-detect-bundle/SunCat/MobileDetectBundle/Helper/DeviceView.php(299): SunCat\MobileDetectBundle\Helper\DeviceView->createCookie('full')
#5 vendor/suncat/mobile-detect-bundle/SunCat/MobileDetectBundle/EventListener/RequestResponseListener.php(219): SunCat\MobileDetectBundle\Helper\DeviceView->modifyResponse('full', Object(Symfony\Component\HttpFoundation\Response))
#6 vendor/suncat/mobile-detect-bundle/SunCat/MobileDetectBundle/EventListener/RequestResponseListener.php(177): SunCat\MobileDetectBundle\EventListener\RequestResponseListener->SunCat\MobileDetectBundle\EventListener\{closure}(Object(SunCat\MobileDetectBundle\Helper\DeviceView), Object(Symfony\Component\HttpKernel\Event\FilterResponseEvent))
#7 vendor/symfony/event-dispatcher/EventDispatcher.php(212): SunCat\MobileDetectBundle\EventListener\RequestResponseListener->handleResponse(Object(Symfony\Component\HttpKernel\Event\FilterResponseEvent), 'kernel.response', Object(Symfony\Component\EventDispatcher\EventDispatcher))
#8 vendor/symfony/event-dispatcher/EventDispatcher.php(44): Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(Array, 'kernel.response', Object(Symfony\Component\HttpKernel\Event\FilterResponseEvent))
#9 vendor/symfony/http-kernel/HttpKernel.php(189): Symfony\Component\EventDispatcher\EventDispatcher->dispatch('kernel.response', Object(Symfony\Component\HttpKernel\Event\FilterResponseEvent))
#10 vendor/symfony/http-kernel/HttpKernel.php(171): Symfony\Component\HttpKernel\HttpKernel->filterResponse(Object(Symfony\Component\HttpFoundation\Response), Object(Symfony\Component\HttpFoundation\Request), 1)
#11 vendor/symfony/http-kernel/HttpKernel.php(67): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1)
#12 vendor/symfony/http-kernel/Kernel.php(198): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#13 vendor/symfony/http-kernel/Client.php(68): Symfony\Component\HttpKernel\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#14 vendor/symfony/framework-bundle/Client.php(131): Symfony\Component\HttpKernel\Client->doRequest(Object(Symfony\Component\HttpFoundation\Request))
#15 vendor/symfony/browser-kit/Client.php(405): Symfony\Bundle\FrameworkBundle\Client->doRequest(Object(Symfony\Component\HttpFoundation\Request))
#16 tests/functional/Bundle/QuizBundle/Controller/PublicControllerTest.php(13): Symfony\Component\BrowserKit\Client->request('GET', 'http://localhos...')
#17 [internal function]: Weirdly\Bundle\QuizBundle\Controller\PublicControllerTest->testPublicQuiz()
#18 {main}
Exited with code 1
```

This pull request introduces those arguments and sets them explicitly, maintaining current behaviour with no backwards-breaking changes.
@emarref
Copy link
Contributor Author

emarref commented Mar 19, 2019

Fixes #106

@emarref
Copy link
Contributor Author

emarref commented Mar 19, 2019

Relevant deprecation was introduced here symfony/http-foundation@a58963c

@JohJohan
Copy link

JohJohan commented Oct 6, 2019

Why isn't this merged? The pipline only fails because other deprecation which is fixed in #133

@suncat2000 suncat2000 merged commit d7c91f3 into suncat2000:master Feb 12, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants