Rename master request to main request
This commit is contained in:
parent
7873574335
commit
1fc2a04e00
@ -36,11 +36,13 @@ FrameworkBundle
|
|||||||
* Deprecate the `framework.session.storage_id` configuration option, use the `framework.session.storage_factory_id` configuration option instead
|
* Deprecate the `framework.session.storage_id` configuration option, use the `framework.session.storage_factory_id` configuration option instead
|
||||||
* Deprecate the `session` service and the `SessionInterface` alias, use the `\Symfony\Component\HttpFoundation\Request::getSession()` or the new `\Symfony\Component\HttpFoundation\RequestStack::getSession()` methods instead
|
* Deprecate the `session` service and the `SessionInterface` alias, use the `\Symfony\Component\HttpFoundation\Request::getSession()` or the new `\Symfony\Component\HttpFoundation\RequestStack::getSession()` methods instead
|
||||||
* Deprecate the `KernelTestCase::$container` property, use `KernelTestCase::getContainer()` instead
|
* Deprecate the `KernelTestCase::$container` property, use `KernelTestCase::getContainer()` instead
|
||||||
|
* Rename the container parameter `profiler_listener.only_master_requests` to `profiler_listener.only_main_requests`
|
||||||
|
|
||||||
HttpFoundation
|
HttpFoundation
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
* Deprecate the `NamespacedAttributeBag` class
|
* Deprecate the `NamespacedAttributeBag` class
|
||||||
|
* Deprecate the `RequestStack::getMasterRequest()` method and add `getMainRequest()` as replacement
|
||||||
|
|
||||||
HttpKernel
|
HttpKernel
|
||||||
----------
|
----------
|
||||||
@ -49,6 +51,8 @@ HttpKernel
|
|||||||
* Deprecate `ArgumentMetadata::getAttribute()`, use `getAttributes()` instead
|
* Deprecate `ArgumentMetadata::getAttribute()`, use `getAttributes()` instead
|
||||||
* Mark the class `Symfony\Component\HttpKernel\EventListener\DebugHandlersListener` as internal
|
* Mark the class `Symfony\Component\HttpKernel\EventListener\DebugHandlersListener` as internal
|
||||||
* Deprecate returning a `ContainerBuilder` from `KernelInterface::registerContainerConfiguration()`
|
* Deprecate returning a `ContainerBuilder` from `KernelInterface::registerContainerConfiguration()`
|
||||||
|
* Deprecate `HttpKernelInterface::MASTER_REQUEST` and add `HttpKernelInterface::MAIN_REQUEST` as replacement
|
||||||
|
* Deprecate `KernelEvent::isMasterRequest()` and add `isMainRequest()` as replacement
|
||||||
|
|
||||||
Messenger
|
Messenger
|
||||||
---------
|
---------
|
||||||
|
@ -89,6 +89,7 @@ HttpFoundation
|
|||||||
`BinaryFileResponse::create()` methods (use `__construct()` instead)
|
`BinaryFileResponse::create()` methods (use `__construct()` instead)
|
||||||
* Not passing a `Closure` together with `FILTER_CALLBACK` to `ParameterBag::filter()` throws an `InvalidArgumentException`; wrap your filter in a closure instead.
|
* Not passing a `Closure` together with `FILTER_CALLBACK` to `ParameterBag::filter()` throws an `InvalidArgumentException`; wrap your filter in a closure instead.
|
||||||
* Removed the `Request::HEADER_X_FORWARDED_ALL` constant, use either `Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO` or `Request::HEADER_X_FORWARDED_AWS_ELB` or `Request::HEADER_X_FORWARDED_TRAEFIK`constants instead.
|
* Removed the `Request::HEADER_X_FORWARDED_ALL` constant, use either `Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO` or `Request::HEADER_X_FORWARDED_AWS_ELB` or `Request::HEADER_X_FORWARDED_TRAEFIK`constants instead.
|
||||||
|
* Rename `RequestStack::getMasterRequest()` to `getMainRequest()`
|
||||||
|
|
||||||
HttpKernel
|
HttpKernel
|
||||||
----------
|
----------
|
||||||
@ -98,6 +99,8 @@ HttpKernel
|
|||||||
* Make `WarmableInterface::warmUp()` return a list of classes or files to preload on PHP 7.4+
|
* Make `WarmableInterface::warmUp()` return a list of classes or files to preload on PHP 7.4+
|
||||||
* Remove support for `service:action` syntax to reference controllers. Use `serviceOrFqcn::method` instead.
|
* Remove support for `service:action` syntax to reference controllers. Use `serviceOrFqcn::method` instead.
|
||||||
* Remove support for returning a `ContainerBuilder` from `KernelInterface::registerContainerConfiguration()`
|
* Remove support for returning a `ContainerBuilder` from `KernelInterface::registerContainerConfiguration()`
|
||||||
|
* Rename `HttpKernelInterface::MASTER_REQUEST` to `MAIN_REQUEST`
|
||||||
|
* Rename `KernelEvent::isMasterRequest()` to `isMainRequest()`
|
||||||
|
|
||||||
Inflector
|
Inflector
|
||||||
---------
|
---------
|
||||||
|
@ -36,7 +36,7 @@ class ChromePhpHandler extends BaseChromePhpHandler
|
|||||||
*/
|
*/
|
||||||
public function onKernelResponse(ResponseEvent $event)
|
public function onKernelResponse(ResponseEvent $event)
|
||||||
{
|
{
|
||||||
if (!$event->isMasterRequest()) {
|
if (!$event->isMainRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ class HttpCodeActivationStrategy extends ErrorLevelActivationStrategy implements
|
|||||||
$isActivated
|
$isActivated
|
||||||
&& isset($record['context']['exception'])
|
&& isset($record['context']['exception'])
|
||||||
&& $record['context']['exception'] instanceof HttpException
|
&& $record['context']['exception'] instanceof HttpException
|
||||||
&& ($request = $this->requestStack->getMasterRequest())
|
&& ($request = $this->requestStack->getMainRequest())
|
||||||
) {
|
) {
|
||||||
foreach ($this->exclusions as $exclusion) {
|
foreach ($this->exclusions as $exclusion) {
|
||||||
if ($record['context']['exception']->getStatusCode() !== $exclusion['code']) {
|
if ($record['context']['exception']->getStatusCode() !== $exclusion['code']) {
|
||||||
|
@ -57,7 +57,7 @@ class NotFoundActivationStrategy extends ErrorLevelActivationStrategy implements
|
|||||||
&& isset($record['context']['exception'])
|
&& isset($record['context']['exception'])
|
||||||
&& $record['context']['exception'] instanceof HttpException
|
&& $record['context']['exception'] instanceof HttpException
|
||||||
&& 404 == $record['context']['exception']->getStatusCode()
|
&& 404 == $record['context']['exception']->getStatusCode()
|
||||||
&& ($request = $this->requestStack->getMasterRequest())
|
&& ($request = $this->requestStack->getMainRequest())
|
||||||
) {
|
) {
|
||||||
return !preg_match($this->exclude, $request->getPathInfo());
|
return !preg_match($this->exclude, $request->getPathInfo());
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ class FirePHPHandler extends BaseFirePHPHandler
|
|||||||
*/
|
*/
|
||||||
public function onKernelResponse(ResponseEvent $event)
|
public function onKernelResponse(ResponseEvent $event)
|
||||||
{
|
{
|
||||||
if (!$event->isMasterRequest()) {
|
if (!$event->isMainRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ class RouteProcessor implements EventSubscriberInterface, ResetInterface
|
|||||||
|
|
||||||
public function addRouteData(RequestEvent $event)
|
public function addRouteData(RequestEvent $event)
|
||||||
{
|
{
|
||||||
if ($event->isMasterRequest()) {
|
if ($event->isMainRequest()) {
|
||||||
$this->reset();
|
$this->reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ class WebProcessor extends BaseWebProcessor implements EventSubscriberInterface
|
|||||||
|
|
||||||
public function onKernelRequest(RequestEvent $event)
|
public function onKernelRequest(RequestEvent $event)
|
||||||
{
|
{
|
||||||
if ($event->isMasterRequest()) {
|
if ($event->isMainRequest()) {
|
||||||
$this->serverData = $event->getRequest()->server->all();
|
$this->serverData = $event->getRequest()->server->all();
|
||||||
$this->serverData['REMOTE_ADDR'] = $event->getRequest()->getClientIp();
|
$this->serverData['REMOTE_ADDR'] = $event->getRequest()->getClientIp();
|
||||||
}
|
}
|
||||||
|
@ -123,14 +123,14 @@ class RouteProcessorTest extends TestCase
|
|||||||
$this->assertEquals(['extra' => []], $record);
|
$this->assertEquals(['extra' => []], $record);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getRequestEvent(Request $request, int $requestType = HttpKernelInterface::MASTER_REQUEST): RequestEvent
|
private function getRequestEvent(Request $request, int $requestType = HttpKernelInterface::MAIN_REQUEST): RequestEvent
|
||||||
{
|
{
|
||||||
return new RequestEvent($this->createMock(HttpKernelInterface::class), $request, $requestType);
|
return new RequestEvent($this->createMock(HttpKernelInterface::class), $request, $requestType);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getFinishRequestEvent(Request $request): FinishRequestEvent
|
private function getFinishRequestEvent(Request $request): FinishRequestEvent
|
||||||
{
|
{
|
||||||
return new FinishRequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST);
|
return new FinishRequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function mockEmptyRequest(): Request
|
private function mockEmptyRequest(): Request
|
||||||
|
@ -89,7 +89,7 @@ class WebProcessorTest extends TestCase
|
|||||||
$request->server->replace($server);
|
$request->server->replace($server);
|
||||||
$request->headers->replace($server);
|
$request->headers->replace($server);
|
||||||
|
|
||||||
$event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST);
|
$event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
|
|
||||||
return [$event, $server];
|
return [$event, $server];
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
"php": ">=7.2.5",
|
"php": ">=7.2.5",
|
||||||
"monolog/monolog": "^1.25.1|^2",
|
"monolog/monolog": "^1.25.1|^2",
|
||||||
"symfony/service-contracts": "^1.1|^2",
|
"symfony/service-contracts": "^1.1|^2",
|
||||||
"symfony/http-kernel": "^4.4|^5.0",
|
"symfony/http-kernel": "^5.3",
|
||||||
"symfony/deprecation-contracts": "^2.1"
|
"symfony/deprecation-contracts": "^2.1"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
@ -32,7 +32,7 @@
|
|||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"symfony/console": "<4.4",
|
"symfony/console": "<4.4",
|
||||||
"symfony/http-foundation": "<4.4"
|
"symfony/http-foundation": "<5.3"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.",
|
"symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.",
|
||||||
|
@ -56,7 +56,7 @@ final class WebLinkExtension extends AbstractExtension
|
|||||||
*/
|
*/
|
||||||
public function link(string $uri, string $rel, array $attributes = []): string
|
public function link(string $uri, string $rel, array $attributes = []): string
|
||||||
{
|
{
|
||||||
if (!$request = $this->requestStack->getMasterRequest()) {
|
if (!$request = $this->requestStack->getMainRequest()) {
|
||||||
return $uri;
|
return $uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
"symfony/dependency-injection": "^4.4|^5.0",
|
"symfony/dependency-injection": "^4.4|^5.0",
|
||||||
"symfony/finder": "^4.4|^5.0",
|
"symfony/finder": "^4.4|^5.0",
|
||||||
"symfony/form": "^5.3",
|
"symfony/form": "^5.3",
|
||||||
"symfony/http-foundation": "^4.4|^5.0",
|
"symfony/http-foundation": "^5.3",
|
||||||
"symfony/http-kernel": "^4.4|^5.0",
|
"symfony/http-kernel": "^4.4|^5.0",
|
||||||
"symfony/intl": "^4.4|^5.0",
|
"symfony/intl": "^4.4|^5.0",
|
||||||
"symfony/mime": "^5.2",
|
"symfony/mime": "^5.2",
|
||||||
@ -57,7 +57,7 @@
|
|||||||
"phpdocumentor/type-resolver": "<1.4.0",
|
"phpdocumentor/type-resolver": "<1.4.0",
|
||||||
"symfony/console": "<4.4",
|
"symfony/console": "<4.4",
|
||||||
"symfony/form": "<5.3",
|
"symfony/form": "<5.3",
|
||||||
"symfony/http-foundation": "<4.4",
|
"symfony/http-foundation": "<5.3",
|
||||||
"symfony/http-kernel": "<4.4",
|
"symfony/http-kernel": "<4.4",
|
||||||
"symfony/translation": "<5.2",
|
"symfony/translation": "<5.2",
|
||||||
"symfony/workflow": "<5.2"
|
"symfony/workflow": "<5.2"
|
||||||
|
@ -17,6 +17,7 @@ CHANGELOG
|
|||||||
* Add support to use a PSR-6 compatible cache for Doctrine annotations
|
* Add support to use a PSR-6 compatible cache for Doctrine annotations
|
||||||
* Deprecate all other values than "none", "php_array" and "file" for `framework.annotation.cache`
|
* Deprecate all other values than "none", "php_array" and "file" for `framework.annotation.cache`
|
||||||
* Add `KernelTestCase::getContainer()` as the best way to get a container in tests
|
* Add `KernelTestCase::getContainer()` as the best way to get a container in tests
|
||||||
|
* Rename the container parameter `profiler_listener.only_master_requests` to `profiler_listener.only_main_requests`
|
||||||
|
|
||||||
5.2.0
|
5.2.0
|
||||||
-----
|
-----
|
||||||
|
@ -304,7 +304,8 @@ class Configuration implements ConfigurationInterface
|
|||||||
->children()
|
->children()
|
||||||
->booleanNode('collect')->defaultTrue()->end()
|
->booleanNode('collect')->defaultTrue()->end()
|
||||||
->booleanNode('only_exceptions')->defaultFalse()->end()
|
->booleanNode('only_exceptions')->defaultFalse()->end()
|
||||||
->booleanNode('only_master_requests')->defaultFalse()->end()
|
->booleanNode('only_main_requests')->defaultFalse()->end()
|
||||||
|
->booleanNode('only_master_requests')->setDeprecated('symfony/framework-bundle', '5.3', 'Option "%node%" at "%path%" is deprecated, use "only_main_requests" instead.')->defaultFalse()->end()
|
||||||
->scalarNode('dsn')->defaultValue('file:%kernel.cache_dir%/profiler')->end()
|
->scalarNode('dsn')->defaultValue('file:%kernel.cache_dir%/profiler')->end()
|
||||||
->end()
|
->end()
|
||||||
->end()
|
->end()
|
||||||
|
@ -711,7 +711,7 @@ class FrameworkExtension extends Extension
|
|||||||
}
|
}
|
||||||
|
|
||||||
$container->setParameter('profiler_listener.only_exceptions', $config['only_exceptions']);
|
$container->setParameter('profiler_listener.only_exceptions', $config['only_exceptions']);
|
||||||
$container->setParameter('profiler_listener.only_master_requests', $config['only_master_requests']);
|
$container->setParameter('profiler_listener.only_main_requests', $config['only_main_requests'] || $config['only_master_requests']);
|
||||||
|
|
||||||
// Choose storage class based on the DSN
|
// Choose storage class based on the DSN
|
||||||
[$class] = explode(':', $config['dsn'], 2);
|
[$class] = explode(':', $config['dsn'], 2);
|
||||||
|
@ -63,7 +63,7 @@ class HttpCache extends BaseHttpCache
|
|||||||
parent::__construct($kernel, $this->createStore(), $this->createSurrogate(), array_merge($this->options, $this->getOptions()));
|
parent::__construct($kernel, $this->createStore(), $this->createSurrogate(), array_merge($this->options, $this->getOptions()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handle(Request $request, int $type = HttpKernelInterface::MASTER_REQUEST, bool $catch = true)
|
public function handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true)
|
||||||
{
|
{
|
||||||
if ($this->kernel->getContainer()->getParameter('kernel.http_method_override')) {
|
if ($this->kernel->getContainer()->getParameter('kernel.http_method_override')) {
|
||||||
Request::enableHttpMethodParameterOverride();
|
Request::enableHttpMethodParameterOverride();
|
||||||
|
@ -31,7 +31,7 @@ return static function (ContainerConfigurator $container) {
|
|||||||
service('request_stack'),
|
service('request_stack'),
|
||||||
null,
|
null,
|
||||||
param('profiler_listener.only_exceptions'),
|
param('profiler_listener.only_exceptions'),
|
||||||
param('profiler_listener.only_master_requests'),
|
param('profiler_listener.only_main_requests'),
|
||||||
])
|
])
|
||||||
->tag('kernel.event_subscriber')
|
->tag('kernel.event_subscriber')
|
||||||
;
|
;
|
||||||
|
@ -87,6 +87,7 @@
|
|||||||
<xsd:complexType name="profiler">
|
<xsd:complexType name="profiler">
|
||||||
<xsd:attribute name="collect" type="xsd:string" />
|
<xsd:attribute name="collect" type="xsd:string" />
|
||||||
<xsd:attribute name="only-exceptions" type="xsd:string" />
|
<xsd:attribute name="only-exceptions" type="xsd:string" />
|
||||||
|
<xsd:attribute name="only-main-requests" type="xsd:string" />
|
||||||
<xsd:attribute name="only-master-requests" type="xsd:string" />
|
<xsd:attribute name="only-master-requests" type="xsd:string" />
|
||||||
<xsd:attribute name="enabled" type="xsd:string" />
|
<xsd:attribute name="enabled" type="xsd:string" />
|
||||||
<xsd:attribute name="dsn" type="xsd:string" />
|
<xsd:attribute name="dsn" type="xsd:string" />
|
||||||
|
@ -397,6 +397,7 @@ class ConfigurationTest extends TestCase
|
|||||||
'enabled' => false,
|
'enabled' => false,
|
||||||
'only_exceptions' => false,
|
'only_exceptions' => false,
|
||||||
'only_master_requests' => false,
|
'only_master_requests' => false,
|
||||||
|
'only_main_requests' => false,
|
||||||
'dsn' => 'file:%kernel.cache_dir%/profiler',
|
'dsn' => 'file:%kernel.cache_dir%/profiler',
|
||||||
'collect' => true,
|
'collect' => true,
|
||||||
],
|
],
|
||||||
|
@ -122,7 +122,7 @@ class MicroKernelTraitTest extends TestCase
|
|||||||
};
|
};
|
||||||
|
|
||||||
$request = Request::create('/');
|
$request = Request::create('/');
|
||||||
$response = $kernel->handle($request, HttpKernelInterface::MASTER_REQUEST, false);
|
$response = $kernel->handle($request, HttpKernelInterface::MAIN_REQUEST, false);
|
||||||
|
|
||||||
$this->assertSame('Hello World!', $response->getContent());
|
$this->assertSame('Hello World!', $response->getContent());
|
||||||
}
|
}
|
||||||
@ -156,7 +156,7 @@ class MicroKernelTraitTest extends TestCase
|
|||||||
$this->expectExceptionMessage('"Symfony\Bundle\FrameworkBundle\Tests\Kernel\MinimalKernel@anonymous" uses "Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait", but does not implement the required method "protected function configureRoutes(RoutingConfigurator $routes): void".');
|
$this->expectExceptionMessage('"Symfony\Bundle\FrameworkBundle\Tests\Kernel\MinimalKernel@anonymous" uses "Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait", but does not implement the required method "protected function configureRoutes(RoutingConfigurator $routes): void".');
|
||||||
|
|
||||||
$request = Request::create('/');
|
$request = Request::create('/');
|
||||||
$kernel->handle($request, HttpKernelInterface::MASTER_REQUEST, false);
|
$kernel->handle($request, HttpKernelInterface::MAIN_REQUEST, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
"symfony/event-dispatcher": "^5.1",
|
"symfony/event-dispatcher": "^5.1",
|
||||||
"symfony/error-handler": "^4.4.1|^5.0.1",
|
"symfony/error-handler": "^4.4.1|^5.0.1",
|
||||||
"symfony/http-foundation": "^5.3",
|
"symfony/http-foundation": "^5.3",
|
||||||
"symfony/http-kernel": "^5.2.1",
|
"symfony/http-kernel": "^5.3",
|
||||||
"symfony/polyfill-mbstring": "~1.0",
|
"symfony/polyfill-mbstring": "~1.0",
|
||||||
"symfony/polyfill-php80": "^1.15",
|
"symfony/polyfill-php80": "^1.15",
|
||||||
"symfony/filesystem": "^4.4|^5.0",
|
"symfony/filesystem": "^4.4|^5.0",
|
||||||
|
@ -38,7 +38,7 @@ class FirewallListener extends Firewall
|
|||||||
|
|
||||||
public function configureLogoutUrlGenerator(RequestEvent $event)
|
public function configureLogoutUrlGenerator(RequestEvent $event)
|
||||||
{
|
{
|
||||||
if (!$event->isMasterRequest()) {
|
if (!$event->isMainRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,7 +49,7 @@ class FirewallListener extends Firewall
|
|||||||
|
|
||||||
public function onKernelFinishRequest(FinishRequestEvent $event)
|
public function onKernelFinishRequest(FinishRequestEvent $event)
|
||||||
{
|
{
|
||||||
if ($event->isMasterRequest()) {
|
if ($event->isMainRequest()) {
|
||||||
$this->logoutUrlGenerator->setCurrentFirewall(null);
|
$this->logoutUrlGenerator->setCurrentFirewall(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ class UserAuthenticator implements UserAuthenticatorInterface
|
|||||||
|
|
||||||
private function getUserAuthenticator(): UserAuthenticatorInterface
|
private function getUserAuthenticator(): UserAuthenticatorInterface
|
||||||
{
|
{
|
||||||
$firewallConfig = $this->firewallMap->getFirewallConfig($this->requestStack->getMasterRequest());
|
$firewallConfig = $this->firewallMap->getFirewallConfig($this->requestStack->getMainRequest());
|
||||||
if (null === $firewallConfig) {
|
if (null === $firewallConfig) {
|
||||||
throw new LogicException('Cannot call authenticate on this request, as it is not behind a firewall.');
|
throw new LogicException('Cannot call authenticate on this request, as it is not behind a firewall.');
|
||||||
}
|
}
|
||||||
|
@ -188,7 +188,7 @@ class SecurityDataCollectorTest extends TestCase
|
|||||||
public function testGetListeners()
|
public function testGetListeners()
|
||||||
{
|
{
|
||||||
$request = new Request();
|
$request = new Request();
|
||||||
$event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST);
|
$event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
$event->setResponse($response = new Response());
|
$event->setResponse($response = new Response());
|
||||||
$listener = function ($e) use ($event, &$listenerCalled) {
|
$listener = function ($e) use ($event, &$listenerCalled) {
|
||||||
$listenerCalled += $e === $event;
|
$listenerCalled += $e === $event;
|
||||||
|
@ -29,7 +29,7 @@ class TraceableFirewallListenerTest extends TestCase
|
|||||||
public function testOnKernelRequestRecordsListeners()
|
public function testOnKernelRequestRecordsListeners()
|
||||||
{
|
{
|
||||||
$request = new Request();
|
$request = new Request();
|
||||||
$event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST);
|
$event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
$event->setResponse($response = new Response());
|
$event->setResponse($response = new Response());
|
||||||
$listener = function ($e) use ($event, &$listenerCalled) {
|
$listener = function ($e) use ($event, &$listenerCalled) {
|
||||||
$listenerCalled += $e === $event;
|
$listenerCalled += $e === $event;
|
||||||
|
@ -22,7 +22,8 @@
|
|||||||
"symfony/dependency-injection": "^5.3",
|
"symfony/dependency-injection": "^5.3",
|
||||||
"symfony/deprecation-contracts": "^2.1",
|
"symfony/deprecation-contracts": "^2.1",
|
||||||
"symfony/event-dispatcher": "^5.1",
|
"symfony/event-dispatcher": "^5.1",
|
||||||
"symfony/http-kernel": "^5.0",
|
"symfony/http-kernel": "^5.3",
|
||||||
|
"symfony/http-foundation": "^5.3",
|
||||||
"symfony/password-hasher": "^5.3",
|
"symfony/password-hasher": "^5.3",
|
||||||
"symfony/polyfill-php80": "^1.15",
|
"symfony/polyfill-php80": "^1.15",
|
||||||
"symfony/security-core": "^5.3",
|
"symfony/security-core": "^5.3",
|
||||||
|
@ -88,7 +88,7 @@ class WebDebugToolbarListener implements EventSubscriberInterface
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$event->isMasterRequest()) {
|
if (!$event->isMainRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ class WebDebugToolbarListenerTest extends TestCase
|
|||||||
{
|
{
|
||||||
$response = new Response('Some content', $statusCode);
|
$response = new Response('Some content', $statusCode);
|
||||||
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
||||||
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(false, 'html', $hasSession), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(false, 'html', $hasSession), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
|
|
||||||
$listener = new WebDebugToolbarListener($this->getTwigMock('Redirection'), true);
|
$listener = new WebDebugToolbarListener($this->getTwigMock('Redirection'), true);
|
||||||
$listener->onKernelResponse($event);
|
$listener->onKernelResponse($event);
|
||||||
@ -80,7 +80,7 @@ class WebDebugToolbarListenerTest extends TestCase
|
|||||||
{
|
{
|
||||||
$response = new Response('Some content', '301');
|
$response = new Response('Some content', '301');
|
||||||
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
||||||
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(false, 'json', true), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(false, 'json', true), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
|
|
||||||
$listener = new WebDebugToolbarListener($this->getTwigMock('Redirection'), true);
|
$listener = new WebDebugToolbarListener($this->getTwigMock('Redirection'), true);
|
||||||
$listener->onKernelResponse($event);
|
$listener->onKernelResponse($event);
|
||||||
@ -94,7 +94,7 @@ class WebDebugToolbarListenerTest extends TestCase
|
|||||||
$response = new Response('<html><head></head><body></body></html>');
|
$response = new Response('<html><head></head><body></body></html>');
|
||||||
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
||||||
|
|
||||||
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
|
|
||||||
$listener = new WebDebugToolbarListener($this->getTwigMock());
|
$listener = new WebDebugToolbarListener($this->getTwigMock());
|
||||||
$listener->onKernelResponse($event);
|
$listener->onKernelResponse($event);
|
||||||
@ -110,7 +110,7 @@ class WebDebugToolbarListenerTest extends TestCase
|
|||||||
$response = new Response('<html><head></head><body></body></html>');
|
$response = new Response('<html><head></head><body></body></html>');
|
||||||
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
||||||
$response->headers->set('Content-Type', 'text/xml');
|
$response->headers->set('Content-Type', 'text/xml');
|
||||||
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
|
|
||||||
$listener = new WebDebugToolbarListener($this->getTwigMock());
|
$listener = new WebDebugToolbarListener($this->getTwigMock());
|
||||||
$listener->onKernelResponse($event);
|
$listener->onKernelResponse($event);
|
||||||
@ -126,7 +126,7 @@ class WebDebugToolbarListenerTest extends TestCase
|
|||||||
$response = new Response('<html><head></head><body></body></html>');
|
$response = new Response('<html><head></head><body></body></html>');
|
||||||
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
||||||
$response->headers->set('Content-Disposition', 'attachment; filename=test.html');
|
$response->headers->set('Content-Disposition', 'attachment; filename=test.html');
|
||||||
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(false, 'html'), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(false, 'html'), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
|
|
||||||
$listener = new WebDebugToolbarListener($this->getTwigMock());
|
$listener = new WebDebugToolbarListener($this->getTwigMock());
|
||||||
$listener->onKernelResponse($event);
|
$listener->onKernelResponse($event);
|
||||||
@ -142,7 +142,7 @@ class WebDebugToolbarListenerTest extends TestCase
|
|||||||
{
|
{
|
||||||
$response = new Response('<html><head></head><body></body></html>', $statusCode);
|
$response = new Response('<html><head></head><body></body></html>', $statusCode);
|
||||||
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
||||||
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(false, 'html', $hasSession), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(false, 'html', $hasSession), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
|
|
||||||
$listener = new WebDebugToolbarListener($this->getTwigMock());
|
$listener = new WebDebugToolbarListener($this->getTwigMock());
|
||||||
$listener->onKernelResponse($event);
|
$listener->onKernelResponse($event);
|
||||||
@ -167,7 +167,7 @@ class WebDebugToolbarListenerTest extends TestCase
|
|||||||
{
|
{
|
||||||
$response = new Response('<html><head></head><body></body></html>');
|
$response = new Response('<html><head></head><body></body></html>');
|
||||||
|
|
||||||
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
|
|
||||||
$listener = new WebDebugToolbarListener($this->getTwigMock());
|
$listener = new WebDebugToolbarListener($this->getTwigMock());
|
||||||
$listener->onKernelResponse($event);
|
$listener->onKernelResponse($event);
|
||||||
@ -199,7 +199,7 @@ class WebDebugToolbarListenerTest extends TestCase
|
|||||||
$response = new Response('<div>Some content</div>');
|
$response = new Response('<div>Some content</div>');
|
||||||
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
||||||
|
|
||||||
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
|
|
||||||
$listener = new WebDebugToolbarListener($this->getTwigMock());
|
$listener = new WebDebugToolbarListener($this->getTwigMock());
|
||||||
$listener->onKernelResponse($event);
|
$listener->onKernelResponse($event);
|
||||||
@ -215,7 +215,7 @@ class WebDebugToolbarListenerTest extends TestCase
|
|||||||
$response = new Response('<html><head></head><body></body></html>');
|
$response = new Response('<html><head></head><body></body></html>');
|
||||||
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
||||||
|
|
||||||
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(true), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(true), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
|
|
||||||
$listener = new WebDebugToolbarListener($this->getTwigMock());
|
$listener = new WebDebugToolbarListener($this->getTwigMock());
|
||||||
$listener->onKernelResponse($event);
|
$listener->onKernelResponse($event);
|
||||||
@ -231,7 +231,7 @@ class WebDebugToolbarListenerTest extends TestCase
|
|||||||
$response = new Response('<html><head></head><body></body></html>');
|
$response = new Response('<html><head></head><body></body></html>');
|
||||||
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
||||||
|
|
||||||
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(false, 'json'), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(false, 'json'), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
|
|
||||||
$listener = new WebDebugToolbarListener($this->getTwigMock());
|
$listener = new WebDebugToolbarListener($this->getTwigMock());
|
||||||
$listener->onKernelResponse($event);
|
$listener->onKernelResponse($event);
|
||||||
@ -252,7 +252,7 @@ class WebDebugToolbarListenerTest extends TestCase
|
|||||||
->willReturn('http://mydomain.com/_profiler/xxxxxxxx')
|
->willReturn('http://mydomain.com/_profiler/xxxxxxxx')
|
||||||
;
|
;
|
||||||
|
|
||||||
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
|
|
||||||
$listener = new WebDebugToolbarListener($this->getTwigMock(), false, WebDebugToolbarListener::ENABLED, $urlGenerator);
|
$listener = new WebDebugToolbarListener($this->getTwigMock(), false, WebDebugToolbarListener::ENABLED, $urlGenerator);
|
||||||
$listener->onKernelResponse($event);
|
$listener->onKernelResponse($event);
|
||||||
@ -273,7 +273,7 @@ class WebDebugToolbarListenerTest extends TestCase
|
|||||||
->willThrowException(new \Exception('foo'))
|
->willThrowException(new \Exception('foo'))
|
||||||
;
|
;
|
||||||
|
|
||||||
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
|
|
||||||
$listener = new WebDebugToolbarListener($this->getTwigMock(), false, WebDebugToolbarListener::ENABLED, $urlGenerator);
|
$listener = new WebDebugToolbarListener($this->getTwigMock(), false, WebDebugToolbarListener::ENABLED, $urlGenerator);
|
||||||
$listener->onKernelResponse($event);
|
$listener->onKernelResponse($event);
|
||||||
@ -294,7 +294,7 @@ class WebDebugToolbarListenerTest extends TestCase
|
|||||||
->willThrowException(new \Exception("This\nmultiline\r\ntabbed text should\tcome out\r on\n \ta single plain\r\nline"))
|
->willThrowException(new \Exception("This\nmultiline\r\ntabbed text should\tcome out\r on\n \ta single plain\r\nline"))
|
||||||
;
|
;
|
||||||
|
|
||||||
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
|
|
||||||
$listener = new WebDebugToolbarListener($this->getTwigMock(), false, WebDebugToolbarListener::ENABLED, $urlGenerator);
|
$listener = new WebDebugToolbarListener($this->getTwigMock(), false, WebDebugToolbarListener::ENABLED, $urlGenerator);
|
||||||
$listener->onKernelResponse($event);
|
$listener->onKernelResponse($event);
|
||||||
@ -307,7 +307,7 @@ class WebDebugToolbarListenerTest extends TestCase
|
|||||||
$response = new Response('<html><head></head><body></body></html>');
|
$response = new Response('<html><head></head><body></body></html>');
|
||||||
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
||||||
|
|
||||||
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
|
|
||||||
$cspHandler = $this->createMock(ContentSecurityPolicyHandler::class);
|
$cspHandler = $this->createMock(ContentSecurityPolicyHandler::class);
|
||||||
$cspHandler->expects($this->once())
|
$cspHandler->expects($this->once())
|
||||||
@ -328,7 +328,7 @@ class WebDebugToolbarListenerTest extends TestCase
|
|||||||
$response = new Response('<html><head></head><body></body></html>');
|
$response = new Response('<html><head></head><body></body></html>');
|
||||||
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
|
||||||
|
|
||||||
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->createMock(Kernel::class), $this->getRequestMock(), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
|
|
||||||
$cspHandler = $this->createMock(ContentSecurityPolicyHandler::class);
|
$cspHandler = $this->createMock(ContentSecurityPolicyHandler::class);
|
||||||
$cspHandler->expects($this->never())
|
$cspHandler->expects($this->never())
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
"php": ">=7.2.5",
|
"php": ">=7.2.5",
|
||||||
"symfony/config": "^4.4|^5.0",
|
"symfony/config": "^4.4|^5.0",
|
||||||
"symfony/framework-bundle": "^5.3",
|
"symfony/framework-bundle": "^5.3",
|
||||||
"symfony/http-kernel": "^5.2",
|
"symfony/http-kernel": "^5.3",
|
||||||
"symfony/routing": "^4.4|^5.0",
|
"symfony/routing": "^4.4|^5.0",
|
||||||
"symfony/twig-bundle": "^4.4|^5.0",
|
"symfony/twig-bundle": "^4.4|^5.0",
|
||||||
"twig/twig": "^2.13|^3.0.4"
|
"twig/twig": "^2.13|^3.0.4"
|
||||||
|
@ -36,7 +36,7 @@ class RequestStackContext implements ContextInterface
|
|||||||
*/
|
*/
|
||||||
public function getBasePath()
|
public function getBasePath()
|
||||||
{
|
{
|
||||||
if (!$request = $this->requestStack->getMasterRequest()) {
|
if (!$request = $this->requestStack->getMainRequest()) {
|
||||||
return $this->basePath;
|
return $this->basePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ class RequestStackContext implements ContextInterface
|
|||||||
*/
|
*/
|
||||||
public function isSecure()
|
public function isSecure()
|
||||||
{
|
{
|
||||||
if (!$request = $this->requestStack->getMasterRequest()) {
|
if (!$request = $this->requestStack->getMainRequest()) {
|
||||||
return $this->secure;
|
return $this->secure;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ class RequestStackContextTest extends TestCase
|
|||||||
$request->method('getBasePath')
|
$request->method('getBasePath')
|
||||||
->willReturn($testBasePath);
|
->willReturn($testBasePath);
|
||||||
$requestStack = $this->createMock(RequestStack::class);
|
$requestStack = $this->createMock(RequestStack::class);
|
||||||
$requestStack->method('getMasterRequest')
|
$requestStack->method('getMainRequest')
|
||||||
->willReturn($request);
|
->willReturn($request);
|
||||||
|
|
||||||
$requestStackContext = new RequestStackContext($requestStack);
|
$requestStackContext = new RequestStackContext($requestStack);
|
||||||
@ -56,7 +56,7 @@ class RequestStackContextTest extends TestCase
|
|||||||
$request->method('isSecure')
|
$request->method('isSecure')
|
||||||
->willReturn(true);
|
->willReturn(true);
|
||||||
$requestStack = $this->createMock(RequestStack::class);
|
$requestStack = $this->createMock(RequestStack::class);
|
||||||
$requestStack->method('getMasterRequest')
|
$requestStack->method('getMainRequest')
|
||||||
->willReturn($request);
|
->willReturn($request);
|
||||||
|
|
||||||
$requestStackContext = new RequestStackContext($requestStack);
|
$requestStackContext = new RequestStackContext($requestStack);
|
||||||
|
@ -24,9 +24,12 @@
|
|||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"symfony/http-client": "^4.4|^5.0",
|
"symfony/http-client": "^4.4|^5.0",
|
||||||
"symfony/http-foundation": "^4.4|^5.0",
|
"symfony/http-foundation": "^5.3",
|
||||||
"symfony/http-kernel": "^4.4|^5.0"
|
"symfony/http-kernel": "^4.4|^5.0"
|
||||||
},
|
},
|
||||||
|
"conflict": {
|
||||||
|
"symfony/http-foundation": "<5.3"
|
||||||
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": { "Symfony\\Component\\Asset\\": "" },
|
"psr-4": { "Symfony\\Component\\Asset\\": "" },
|
||||||
"exclude-from-classmap": [
|
"exclude-from-classmap": [
|
||||||
|
@ -8,7 +8,8 @@ CHANGELOG
|
|||||||
* Calling `Request::getSession()` when there is no available session throws a `SessionNotFoundException`
|
* Calling `Request::getSession()` when there is no available session throws a `SessionNotFoundException`
|
||||||
* Add the `RequestStack::getSession` method
|
* Add the `RequestStack::getSession` method
|
||||||
* Deprecate the `NamespacedAttributeBag` class
|
* Deprecate the `NamespacedAttributeBag` class
|
||||||
* added `ResponseFormatSame` PHPUnit constraint
|
* Add `ResponseFormatSame` PHPUnit constraint
|
||||||
|
* Deprecate the `RequestStack::getMasterRequest()` method and add `getMainRequest()` as replacement
|
||||||
|
|
||||||
5.2.0
|
5.2.0
|
||||||
-----
|
-----
|
||||||
|
@ -65,15 +65,13 @@ class RequestStack
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the master Request.
|
* Gets the main request.
|
||||||
*
|
*
|
||||||
* Be warned that making your code aware of the master request
|
* Be warned that making your code aware of the main request
|
||||||
* might make it un-compatible with other features of your framework
|
* might make it un-compatible with other features of your framework
|
||||||
* like ESI support.
|
* like ESI support.
|
||||||
*
|
|
||||||
* @return Request|null
|
|
||||||
*/
|
*/
|
||||||
public function getMasterRequest()
|
public function getMainRequest(): ?Request
|
||||||
{
|
{
|
||||||
if (!$this->requests) {
|
if (!$this->requests) {
|
||||||
return null;
|
return null;
|
||||||
@ -82,6 +80,20 @@ class RequestStack
|
|||||||
return $this->requests[0];
|
return $this->requests[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the master request.
|
||||||
|
*
|
||||||
|
* @return Request|null
|
||||||
|
*
|
||||||
|
* @deprecated since symfony/http-foundation 5.3, use getMainRequest() instead
|
||||||
|
*/
|
||||||
|
public function getMasterRequest()
|
||||||
|
{
|
||||||
|
trigger_deprecation('symfony/http-foundation', '5.3', '"%s()" is deprecated, use "getMainRequest()" instead.', __METHOD__);
|
||||||
|
|
||||||
|
return $this->getMainRequest();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the parent request of the current.
|
* Returns the parent request of the current.
|
||||||
*
|
*
|
||||||
@ -89,7 +101,7 @@ class RequestStack
|
|||||||
* might make it un-compatible with other features of your framework
|
* might make it un-compatible with other features of your framework
|
||||||
* like ESI support.
|
* like ESI support.
|
||||||
*
|
*
|
||||||
* If current Request is the master request, it returns null.
|
* If current Request is the main request, it returns null.
|
||||||
*
|
*
|
||||||
* @return Request|null
|
* @return Request|null
|
||||||
*/
|
*/
|
||||||
|
@ -35,6 +35,6 @@ class SessionFactory
|
|||||||
|
|
||||||
public function createSession(): SessionInterface
|
public function createSession(): SessionInterface
|
||||||
{
|
{
|
||||||
return new Session($this->storageFactory->createStorage($this->requestStack->getMasterRequest()), null, null, $this->usageReporter);
|
return new Session($this->storageFactory->createStorage($this->requestStack->getMainRequest()), null, null, $this->usageReporter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,11 +12,14 @@
|
|||||||
namespace Symfony\Component\HttpFoundation\Tests;
|
namespace Symfony\Component\HttpFoundation\Tests;
|
||||||
|
|
||||||
use PHPUnit\Framework\TestCase;
|
use PHPUnit\Framework\TestCase;
|
||||||
|
use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\HttpFoundation\RequestStack;
|
use Symfony\Component\HttpFoundation\RequestStack;
|
||||||
|
|
||||||
class RequestStackTest extends TestCase
|
class RequestStackTest extends TestCase
|
||||||
{
|
{
|
||||||
|
use ExpectDeprecationTrait;
|
||||||
|
|
||||||
public function testGetCurrentRequest()
|
public function testGetCurrentRequest()
|
||||||
{
|
{
|
||||||
$requestStack = new RequestStack();
|
$requestStack = new RequestStack();
|
||||||
@ -33,6 +36,23 @@ class RequestStackTest extends TestCase
|
|||||||
$this->assertNull($requestStack->pop());
|
$this->assertNull($requestStack->pop());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testGetMainRequest()
|
||||||
|
{
|
||||||
|
$requestStack = new RequestStack();
|
||||||
|
$this->assertNull($requestStack->getMainRequest());
|
||||||
|
|
||||||
|
$mainRequest = Request::create('/foo');
|
||||||
|
$subRequest = Request::create('/bar');
|
||||||
|
|
||||||
|
$requestStack->push($mainRequest);
|
||||||
|
$requestStack->push($subRequest);
|
||||||
|
|
||||||
|
$this->assertSame($mainRequest, $requestStack->getMainRequest());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group legacy
|
||||||
|
*/
|
||||||
public function testGetMasterRequest()
|
public function testGetMasterRequest()
|
||||||
{
|
{
|
||||||
$requestStack = new RequestStack();
|
$requestStack = new RequestStack();
|
||||||
@ -44,6 +64,7 @@ class RequestStackTest extends TestCase
|
|||||||
$requestStack->push($masterRequest);
|
$requestStack->push($masterRequest);
|
||||||
$requestStack->push($subRequest);
|
$requestStack->push($subRequest);
|
||||||
|
|
||||||
|
$this->expectDeprecation('Since symfony/http-foundation 5.3: "Symfony\Component\HttpFoundation\RequestStack::getMasterRequest()" is deprecated, use "getMainRequest()" instead.');
|
||||||
$this->assertSame($masterRequest, $requestStack->getMasterRequest());
|
$this->assertSame($masterRequest, $requestStack->getMasterRequest());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,15 +73,15 @@ class RequestStackTest extends TestCase
|
|||||||
$requestStack = new RequestStack();
|
$requestStack = new RequestStack();
|
||||||
$this->assertNull($requestStack->getParentRequest());
|
$this->assertNull($requestStack->getParentRequest());
|
||||||
|
|
||||||
$masterRequest = Request::create('/foo');
|
$mainRequest = Request::create('/foo');
|
||||||
|
|
||||||
$requestStack->push($masterRequest);
|
$requestStack->push($mainRequest);
|
||||||
$this->assertNull($requestStack->getParentRequest());
|
$this->assertNull($requestStack->getParentRequest());
|
||||||
|
|
||||||
$firstSubRequest = Request::create('/bar');
|
$firstSubRequest = Request::create('/bar');
|
||||||
|
|
||||||
$requestStack->push($firstSubRequest);
|
$requestStack->push($firstSubRequest);
|
||||||
$this->assertSame($masterRequest, $requestStack->getParentRequest());
|
$this->assertSame($mainRequest, $requestStack->getParentRequest());
|
||||||
|
|
||||||
$secondSubRequest = Request::create('/baz');
|
$secondSubRequest = Request::create('/baz');
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ final class UrlHelper
|
|||||||
return $path;
|
return $path;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $request = $this->requestStack->getMasterRequest()) {
|
if (null === $request = $this->requestStack->getMainRequest()) {
|
||||||
return $this->getAbsoluteUrlFromContext($path);
|
return $this->getAbsoluteUrlFromContext($path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ final class UrlHelper
|
|||||||
return $path;
|
return $path;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $request = $this->requestStack->getMasterRequest()) {
|
if (null === $request = $this->requestStack->getMainRequest()) {
|
||||||
return $path;
|
return $path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,6 +9,8 @@ CHANGELOG
|
|||||||
* Deprecate `ArgumentMetadata::getAttribute()`, use `getAttributes()` instead
|
* Deprecate `ArgumentMetadata::getAttribute()`, use `getAttributes()` instead
|
||||||
* Mark the class `Symfony\Component\HttpKernel\EventListener\DebugHandlersListener` as internal
|
* Mark the class `Symfony\Component\HttpKernel\EventListener\DebugHandlersListener` as internal
|
||||||
* Deprecate returning a `ContainerBuilder` from `KernelInterface::registerContainerConfiguration()`
|
* Deprecate returning a `ContainerBuilder` from `KernelInterface::registerContainerConfiguration()`
|
||||||
|
* Deprecate `HttpKernelInterface::MASTER_REQUEST` and add `HttpKernelInterface::MAIN_REQUEST` as replacement
|
||||||
|
* Deprecate `KernelEvent::isMasterRequest()` and add `isMainRequest()` as replacement
|
||||||
|
|
||||||
5.2.0
|
5.2.0
|
||||||
-----
|
-----
|
||||||
|
@ -107,7 +107,7 @@ class DumpDataCollector extends DataCollector implements DataDumperInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Sub-requests and programmatic calls stay in the collected profile.
|
// Sub-requests and programmatic calls stay in the collected profile.
|
||||||
if ($this->dumper || ($this->requestStack && $this->requestStack->getMasterRequest() !== $request) || $request->isXmlHttpRequest() || $request->headers->has('Origin')) {
|
if ($this->dumper || ($this->requestStack && $this->requestStack->getMainRequest() !== $request) || $request->isXmlHttpRequest() || $request->headers->has('Origin')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ class EventDataCollector extends DataCollector implements LateDataCollectorInter
|
|||||||
*/
|
*/
|
||||||
public function collect(Request $request, Response $response, \Throwable $exception = null)
|
public function collect(Request $request, Response $response, \Throwable $exception = null)
|
||||||
{
|
{
|
||||||
$this->currentRequest = $this->requestStack && $this->requestStack->getMasterRequest() !== $request ? $request : null;
|
$this->currentRequest = $this->requestStack && $this->requestStack->getMainRequest() !== $request ? $request : null;
|
||||||
$this->data = [
|
$this->data = [
|
||||||
'called_listeners' => [],
|
'called_listeners' => [],
|
||||||
'not_called_listeners' => [],
|
'not_called_listeners' => [],
|
||||||
|
@ -46,7 +46,7 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte
|
|||||||
*/
|
*/
|
||||||
public function collect(Request $request, Response $response, \Throwable $exception = null)
|
public function collect(Request $request, Response $response, \Throwable $exception = null)
|
||||||
{
|
{
|
||||||
$this->currentRequest = $this->requestStack && $this->requestStack->getMasterRequest() !== $request ? $request : null;
|
$this->currentRequest = $this->requestStack && $this->requestStack->getMainRequest() !== $request ? $request : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -106,7 +106,7 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter
|
|||||||
'session_metadata' => $sessionMetadata,
|
'session_metadata' => $sessionMetadata,
|
||||||
'session_attributes' => $sessionAttributes,
|
'session_attributes' => $sessionAttributes,
|
||||||
'session_usages' => array_values($this->sessionUsages),
|
'session_usages' => array_values($this->sessionUsages),
|
||||||
'stateless_check' => $this->requestStack && $this->requestStack->getMasterRequest()->attributes->get('_stateless', false),
|
'stateless_check' => $this->requestStack && $this->requestStack->getMainRequest()->attributes->get('_stateless', false),
|
||||||
'flashes' => $flashes,
|
'flashes' => $flashes,
|
||||||
'path_info' => $request->getPathInfo(),
|
'path_info' => $request->getPathInfo(),
|
||||||
'controller' => 'n/a',
|
'controller' => 'n/a',
|
||||||
@ -374,7 +374,7 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter
|
|||||||
|
|
||||||
public function onKernelResponse(ResponseEvent $event)
|
public function onKernelResponse(ResponseEvent $event)
|
||||||
{
|
{
|
||||||
if (!$event->isMasterRequest()) {
|
if (!$event->isMainRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ class FileLinkFormatter
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($this->requestStack && $this->baseDir && $this->urlFormat) {
|
if ($this->requestStack && $this->baseDir && $this->urlFormat) {
|
||||||
$request = $this->requestStack->getMasterRequest();
|
$request = $this->requestStack->getMainRequest();
|
||||||
|
|
||||||
if ($request instanceof Request && (!$this->urlFormat instanceof \Closure || $this->urlFormat = ($this->urlFormat)())) {
|
if ($request instanceof Request && (!$this->urlFormat instanceof \Closure || $this->urlFormat = ($this->urlFormat)())) {
|
||||||
return [
|
return [
|
||||||
|
@ -28,7 +28,7 @@ class KernelEvent extends Event
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param int $requestType The request type the kernel is currently processing; one of
|
* @param int $requestType The request type the kernel is currently processing; one of
|
||||||
* HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST
|
* HttpKernelInterface::MAIN_REQUEST or HttpKernelInterface::SUB_REQUEST
|
||||||
*/
|
*/
|
||||||
public function __construct(HttpKernelInterface $kernel, Request $request, ?int $requestType)
|
public function __construct(HttpKernelInterface $kernel, Request $request, ?int $requestType)
|
||||||
{
|
{
|
||||||
@ -60,7 +60,7 @@ class KernelEvent extends Event
|
|||||||
/**
|
/**
|
||||||
* Returns the request type the kernel is currently processing.
|
* Returns the request type the kernel is currently processing.
|
||||||
*
|
*
|
||||||
* @return int One of HttpKernelInterface::MASTER_REQUEST and
|
* @return int One of HttpKernelInterface::MAIN_REQUEST and
|
||||||
* HttpKernelInterface::SUB_REQUEST
|
* HttpKernelInterface::SUB_REQUEST
|
||||||
*/
|
*/
|
||||||
public function getRequestType()
|
public function getRequestType()
|
||||||
@ -68,13 +68,25 @@ class KernelEvent extends Event
|
|||||||
return $this->requestType;
|
return $this->requestType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if this is the main request.
|
||||||
|
*/
|
||||||
|
public function isMainRequest(): bool
|
||||||
|
{
|
||||||
|
return HttpKernelInterface::MAIN_REQUEST === $this->requestType;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if this is a master request.
|
* Checks if this is a master request.
|
||||||
*
|
*
|
||||||
* @return bool True if the request is a master request
|
* @return bool True if the request is a master request
|
||||||
|
*
|
||||||
|
* @deprecated since symfony/http-kernel 5.3, use isMainRequest() instead
|
||||||
*/
|
*/
|
||||||
public function isMasterRequest()
|
public function isMasterRequest()
|
||||||
{
|
{
|
||||||
return HttpKernelInterface::MASTER_REQUEST === $this->requestType;
|
trigger_deprecation('symfony/http-kernel', '5.3', '"%s()" is deprecated, use "isMainRequest()" instead.');
|
||||||
|
|
||||||
|
return $this->isMainRequest();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,8 +18,8 @@ use Symfony\Component\HttpKernel\HttpKernelInterface;
|
|||||||
/**
|
/**
|
||||||
* Allows to execute logic after a response was sent.
|
* Allows to execute logic after a response was sent.
|
||||||
*
|
*
|
||||||
* Since it's only triggered on master requests, the `getRequestType()` method
|
* Since it's only triggered on main requests, the `getRequestType()` method
|
||||||
* will always return the value of `HttpKernelInterface::MASTER_REQUEST`.
|
* will always return the value of `HttpKernelInterface::MAIN_REQUEST`.
|
||||||
*
|
*
|
||||||
* @author Jordi Boggiano <j.boggiano@seld.be>
|
* @author Jordi Boggiano <j.boggiano@seld.be>
|
||||||
*/
|
*/
|
||||||
@ -29,7 +29,7 @@ final class TerminateEvent extends KernelEvent
|
|||||||
|
|
||||||
public function __construct(HttpKernelInterface $kernel, Request $request, Response $response)
|
public function __construct(HttpKernelInterface $kernel, Request $request, Response $response)
|
||||||
{
|
{
|
||||||
parent::__construct($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
|
parent::__construct($kernel, $request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
|
|
||||||
$this->response = $response;
|
$this->response = $response;
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ abstract class AbstractSessionListener implements EventSubscriberInterface
|
|||||||
|
|
||||||
public function onKernelRequest(RequestEvent $event)
|
public function onKernelRequest(RequestEvent $event)
|
||||||
{
|
{
|
||||||
if (!$event->isMasterRequest()) {
|
if (!$event->isMainRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ abstract class AbstractSessionListener implements EventSubscriberInterface
|
|||||||
|
|
||||||
public function onKernelResponse(ResponseEvent $event)
|
public function onKernelResponse(ResponseEvent $event)
|
||||||
{
|
{
|
||||||
if (!$event->isMasterRequest()) {
|
if (!$event->isMainRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,7 +138,7 @@ abstract class AbstractSessionListener implements EventSubscriberInterface
|
|||||||
|
|
||||||
public function onFinishRequest(FinishRequestEvent $event)
|
public function onFinishRequest(FinishRequestEvent $event)
|
||||||
{
|
{
|
||||||
if ($event->isMasterRequest()) {
|
if ($event->isMainRequest()) {
|
||||||
array_pop($this->sessionUsageStack);
|
array_pop($this->sessionUsageStack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ abstract class AbstractTestSessionListener implements EventSubscriberInterface
|
|||||||
|
|
||||||
public function onKernelRequest(RequestEvent $event)
|
public function onKernelRequest(RequestEvent $event)
|
||||||
{
|
{
|
||||||
if (!$event->isMasterRequest()) {
|
if (!$event->isMainRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,12 +59,12 @@ abstract class AbstractTestSessionListener implements EventSubscriberInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if session was initialized and saves if current request is master
|
* Checks if session was initialized and saves if current request is the main request
|
||||||
* Runs on 'kernel.response' in test environment.
|
* Runs on 'kernel.response' in test environment.
|
||||||
*/
|
*/
|
||||||
public function onKernelResponse(ResponseEvent $event)
|
public function onKernelResponse(ResponseEvent $event)
|
||||||
{
|
{
|
||||||
if (!$event->isMasterRequest()) {
|
if (!$event->isMainRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ class DebugHandlersListener implements EventSubscriberInterface
|
|||||||
if ($event instanceof ConsoleEvent && !\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true)) {
|
if ($event instanceof ConsoleEvent && !\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!$event instanceof KernelEvent ? !$this->firstCall : !$event->isMasterRequest()) {
|
if (!$event instanceof KernelEvent ? !$this->firstCall : !$event->isMainRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$this->firstCall = $this->hasTerminatedWithException = false;
|
$this->firstCall = $this->hasTerminatedWithException = false;
|
||||||
|
@ -65,7 +65,7 @@ class FragmentListener implements EventSubscriberInterface
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($event->isMasterRequest()) {
|
if ($event->isMainRequest()) {
|
||||||
$this->validateRequest($request);
|
$this->validateRequest($request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,22 +32,22 @@ class ProfilerListener implements EventSubscriberInterface
|
|||||||
protected $profiler;
|
protected $profiler;
|
||||||
protected $matcher;
|
protected $matcher;
|
||||||
protected $onlyException;
|
protected $onlyException;
|
||||||
protected $onlyMasterRequests;
|
protected $onlyMainRequests;
|
||||||
protected $exception;
|
protected $exception;
|
||||||
protected $profiles;
|
protected $profiles;
|
||||||
protected $requestStack;
|
protected $requestStack;
|
||||||
protected $parents;
|
protected $parents;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param bool $onlyException True if the profiler only collects data when an exception occurs, false otherwise
|
* @param bool $onlyException True if the profiler only collects data when an exception occurs, false otherwise
|
||||||
* @param bool $onlyMasterRequests True if the profiler only collects data when the request is a master request, false otherwise
|
* @param bool $onlyMainRequests True if the profiler only collects data when the request is the main request, false otherwise
|
||||||
*/
|
*/
|
||||||
public function __construct(Profiler $profiler, RequestStack $requestStack, RequestMatcherInterface $matcher = null, bool $onlyException = false, bool $onlyMasterRequests = false)
|
public function __construct(Profiler $profiler, RequestStack $requestStack, RequestMatcherInterface $matcher = null, bool $onlyException = false, bool $onlyMainRequests = false)
|
||||||
{
|
{
|
||||||
$this->profiler = $profiler;
|
$this->profiler = $profiler;
|
||||||
$this->matcher = $matcher;
|
$this->matcher = $matcher;
|
||||||
$this->onlyException = $onlyException;
|
$this->onlyException = $onlyException;
|
||||||
$this->onlyMasterRequests = $onlyMasterRequests;
|
$this->onlyMainRequests = $onlyMainRequests;
|
||||||
$this->profiles = new \SplObjectStorage();
|
$this->profiles = new \SplObjectStorage();
|
||||||
$this->parents = new \SplObjectStorage();
|
$this->parents = new \SplObjectStorage();
|
||||||
$this->requestStack = $requestStack;
|
$this->requestStack = $requestStack;
|
||||||
@ -58,7 +58,7 @@ class ProfilerListener implements EventSubscriberInterface
|
|||||||
*/
|
*/
|
||||||
public function onKernelException(ExceptionEvent $event)
|
public function onKernelException(ExceptionEvent $event)
|
||||||
{
|
{
|
||||||
if ($this->onlyMasterRequests && !$event->isMasterRequest()) {
|
if ($this->onlyMainRequests && !$event->isMainRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,8 +70,7 @@ class ProfilerListener implements EventSubscriberInterface
|
|||||||
*/
|
*/
|
||||||
public function onKernelResponse(ResponseEvent $event)
|
public function onKernelResponse(ResponseEvent $event)
|
||||||
{
|
{
|
||||||
$master = $event->isMasterRequest();
|
if ($this->onlyMainRequests && !$event->isMainRequest()) {
|
||||||
if ($this->onlyMasterRequests && !$master) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ class ResponseListener implements EventSubscriberInterface
|
|||||||
*/
|
*/
|
||||||
public function onKernelResponse(ResponseEvent $event)
|
public function onKernelResponse(ResponseEvent $event)
|
||||||
{
|
{
|
||||||
if (!$event->isMasterRequest()) {
|
if (!$event->isMainRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ use Symfony\Component\HttpKernel\Event\RequestEvent;
|
|||||||
*
|
*
|
||||||
* When the passed container contains a "session_storage" entry which
|
* When the passed container contains a "session_storage" entry which
|
||||||
* holds a NativeSessionStorage instance, the "cookie_secure" option
|
* holds a NativeSessionStorage instance, the "cookie_secure" option
|
||||||
* will be set to true whenever the current master request is secure.
|
* will be set to true whenever the current main request is secure.
|
||||||
*
|
*
|
||||||
* @author Fabien Potencier <fabien@symfony.com>
|
* @author Fabien Potencier <fabien@symfony.com>
|
||||||
*
|
*
|
||||||
@ -38,14 +38,14 @@ class SessionListener extends AbstractSessionListener
|
|||||||
{
|
{
|
||||||
parent::onKernelRequest($event);
|
parent::onKernelRequest($event);
|
||||||
|
|
||||||
if (!$event->isMasterRequest() || !$this->container->has('session')) {
|
if (!$event->isMainRequest() || !$this->container->has('session')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->container->has('session_storage')
|
if ($this->container->has('session_storage')
|
||||||
&& ($storage = $this->container->get('session_storage')) instanceof NativeSessionStorage
|
&& ($storage = $this->container->get('session_storage')) instanceof NativeSessionStorage
|
||||||
&& ($masterRequest = $this->container->get('request_stack')->getMasterRequest())
|
&& ($mainRequest = $this->container->get('request_stack')->getMainRequest())
|
||||||
&& $masterRequest->isSecure()
|
&& $mainRequest->isSecure()
|
||||||
) {
|
) {
|
||||||
$storage->setOptions(['cookie_secure' => true]);
|
$storage->setOptions(['cookie_secure' => true]);
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@ class StreamedResponseListener implements EventSubscriberInterface
|
|||||||
*/
|
*/
|
||||||
public function onKernelResponse(ResponseEvent $event)
|
public function onKernelResponse(ResponseEvent $event)
|
||||||
{
|
{
|
||||||
if (!$event->isMasterRequest()) {
|
if (!$event->isMainRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ class SurrogateListener implements EventSubscriberInterface
|
|||||||
*/
|
*/
|
||||||
public function onKernelResponse(ResponseEvent $event)
|
public function onKernelResponse(ResponseEvent $event)
|
||||||
{
|
{
|
||||||
if (!$event->isMasterRequest()) {
|
if (!$event->isMainRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ class ValidateRequestListener implements EventSubscriberInterface
|
|||||||
*/
|
*/
|
||||||
public function onKernelRequest(RequestEvent $event)
|
public function onKernelRequest(RequestEvent $event)
|
||||||
{
|
{
|
||||||
if (!$event->isMasterRequest()) {
|
if (!$event->isMainRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$request = $event->getRequest();
|
$request = $event->getRequest();
|
||||||
|
@ -66,7 +66,7 @@ class FragmentHandler
|
|||||||
* @return string|null The Response content or null when the Response is streamed
|
* @return string|null The Response content or null when the Response is streamed
|
||||||
*
|
*
|
||||||
* @throws \InvalidArgumentException when the renderer does not exist
|
* @throws \InvalidArgumentException when the renderer does not exist
|
||||||
* @throws \LogicException when no master request is being handled
|
* @throws \LogicException when no main request is being handled
|
||||||
*/
|
*/
|
||||||
public function render($uri, string $renderer = 'inline', array $options = [])
|
public function render($uri, string $renderer = 'inline', array $options = [])
|
||||||
{
|
{
|
||||||
|
@ -44,7 +44,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
|
|||||||
* will try to carry on and deliver a meaningful response.
|
* will try to carry on and deliver a meaningful response.
|
||||||
*
|
*
|
||||||
* * trace_level May be one of 'none', 'short' and 'full'. For 'short', a concise trace of the
|
* * trace_level May be one of 'none', 'short' and 'full'. For 'short', a concise trace of the
|
||||||
* master request will be added as an HTTP header. 'full' will add traces for all
|
* main request will be added as an HTTP header. 'full' will add traces for all
|
||||||
* requests (including ESI subrequests). (default: 'full' if in debug; 'none' otherwise)
|
* requests (including ESI subrequests). (default: 'full' if in debug; 'none' otherwise)
|
||||||
*
|
*
|
||||||
* * trace_header Header name to use for traces. (default: X-Symfony-Cache)
|
* * trace_header Header name to use for traces. (default: X-Symfony-Cache)
|
||||||
@ -156,7 +156,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the Request instance associated with the master request.
|
* Gets the Request instance associated with the main request.
|
||||||
*
|
*
|
||||||
* @return Request A Request instance
|
* @return Request A Request instance
|
||||||
*/
|
*/
|
||||||
@ -190,10 +190,10 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
|
|||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
public function handle(Request $request, int $type = HttpKernelInterface::MASTER_REQUEST, bool $catch = true)
|
public function handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true)
|
||||||
{
|
{
|
||||||
// FIXME: catch exceptions and implement a 500 error page here? -> in Varnish, there is a built-in error page mechanism
|
// FIXME: catch exceptions and implement a 500 error page here? -> in Varnish, there is a built-in error page mechanism
|
||||||
if (HttpKernelInterface::MASTER_REQUEST === $type) {
|
if (HttpKernelInterface::MAIN_REQUEST === $type) {
|
||||||
$this->traces = [];
|
$this->traces = [];
|
||||||
// Keep a clone of the original request for surrogates so they can access it.
|
// Keep a clone of the original request for surrogates so they can access it.
|
||||||
// We must clone here to get a separate instance because the application will modify the request during
|
// We must clone here to get a separate instance because the application will modify the request during
|
||||||
@ -224,12 +224,12 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
|
|||||||
|
|
||||||
$this->restoreResponseBody($request, $response);
|
$this->restoreResponseBody($request, $response);
|
||||||
|
|
||||||
if (HttpKernelInterface::MASTER_REQUEST === $type) {
|
if (HttpKernelInterface::MAIN_REQUEST === $type) {
|
||||||
$this->addTraces($response);
|
$this->addTraces($response);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null !== $this->surrogate) {
|
if (null !== $this->surrogate) {
|
||||||
if (HttpKernelInterface::MASTER_REQUEST === $type) {
|
if (HttpKernelInterface::MAIN_REQUEST === $type) {
|
||||||
$this->surrogateCacheStrategy->update($response);
|
$this->surrogateCacheStrategy->update($response);
|
||||||
} else {
|
} else {
|
||||||
$this->surrogateCacheStrategy->add($response);
|
$this->surrogateCacheStrategy->add($response);
|
||||||
@ -474,7 +474,7 @@ class HttpCache implements HttpKernelInterface, TerminableInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
// always a "master" request (as the real master request can be in cache)
|
// always a "master" request (as the real master request can be in cache)
|
||||||
$response = SubRequestHandler::handle($this->kernel, $request, HttpKernelInterface::MASTER_REQUEST, $catch);
|
$response = SubRequestHandler::handle($this->kernel, $request, HttpKernelInterface::MAIN_REQUEST, $catch);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Support stale-if-error given on Responses or as a config option.
|
* Support stale-if-error given on Responses or as a config option.
|
||||||
|
@ -17,7 +17,7 @@ use Symfony\Component\HttpFoundation\Response;
|
|||||||
* ResponseCacheStrategy knows how to compute the Response cache HTTP header
|
* ResponseCacheStrategy knows how to compute the Response cache HTTP header
|
||||||
* based on the different response cache headers.
|
* based on the different response cache headers.
|
||||||
*
|
*
|
||||||
* This implementation changes the master response TTL to the smallest TTL received
|
* This implementation changes the main response TTL to the smallest TTL received
|
||||||
* or force validation if one of the surrogates has validation cache strategy.
|
* or force validation if one of the surrogates has validation cache strategy.
|
||||||
*
|
*
|
||||||
* @author Fabien Potencier <fabien@symfony.com>
|
* @author Fabien Potencier <fabien@symfony.com>
|
||||||
|
@ -42,7 +42,7 @@ final class HttpClientKernel implements HttpKernelInterface
|
|||||||
$this->client = $client ?? HttpClient::create();
|
$this->client = $client ?? HttpClient::create();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handle(Request $request, int $type = HttpKernelInterface::MASTER_REQUEST, bool $catch = true): Response
|
public function handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true): Response
|
||||||
{
|
{
|
||||||
$headers = $this->getHeaders($request);
|
$headers = $this->getHeaders($request);
|
||||||
$body = '';
|
$body = '';
|
||||||
|
@ -71,7 +71,7 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface
|
|||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
public function handle(Request $request, int $type = HttpKernelInterface::MASTER_REQUEST, bool $catch = true)
|
public function handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true)
|
||||||
{
|
{
|
||||||
$request->headers->set('X-Php-Ob-Level', (string) ob_get_level());
|
$request->headers->set('X-Php-Ob-Level', (string) ob_get_level());
|
||||||
|
|
||||||
@ -104,11 +104,11 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface
|
|||||||
*/
|
*/
|
||||||
public function terminateWithException(\Throwable $exception, Request $request = null)
|
public function terminateWithException(\Throwable $exception, Request $request = null)
|
||||||
{
|
{
|
||||||
if (!$request = $request ?: $this->requestStack->getMasterRequest()) {
|
if (!$request = $request ?: $this->requestStack->getMainRequest()) {
|
||||||
throw $exception;
|
throw $exception;
|
||||||
}
|
}
|
||||||
|
|
||||||
$response = $this->handleThrowable($exception, $request, self::MASTER_REQUEST);
|
$response = $this->handleThrowable($exception, $request, self::MAIN_REQUEST);
|
||||||
|
|
||||||
$response->sendHeaders();
|
$response->sendHeaders();
|
||||||
$response->sendContent();
|
$response->sendContent();
|
||||||
@ -124,7 +124,7 @@ class HttpKernel implements HttpKernelInterface, TerminableInterface
|
|||||||
* @throws \LogicException If one of the listener does not behave as expected
|
* @throws \LogicException If one of the listener does not behave as expected
|
||||||
* @throws NotFoundHttpException When controller cannot be found
|
* @throws NotFoundHttpException When controller cannot be found
|
||||||
*/
|
*/
|
||||||
private function handleRaw(Request $request, int $type = self::MASTER_REQUEST): Response
|
private function handleRaw(Request $request, int $type = self::MAIN_REQUEST): Response
|
||||||
{
|
{
|
||||||
$this->requestStack->push($request);
|
$this->requestStack->push($request);
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ class HttpKernelBrowser extends AbstractBrowser
|
|||||||
*/
|
*/
|
||||||
protected function doRequest($request)
|
protected function doRequest($request)
|
||||||
{
|
{
|
||||||
$response = $this->kernel->handle($request, HttpKernelInterface::MASTER_REQUEST, $this->catchExceptions);
|
$response = $this->kernel->handle($request, HttpKernelInterface::MAIN_REQUEST, $this->catchExceptions);
|
||||||
|
|
||||||
if ($this->kernel instanceof TerminableInterface) {
|
if ($this->kernel instanceof TerminableInterface) {
|
||||||
$this->kernel->terminate($request, $response);
|
$this->kernel->terminate($request, $response);
|
||||||
|
@ -21,9 +21,15 @@ use Symfony\Component\HttpFoundation\Response;
|
|||||||
*/
|
*/
|
||||||
interface HttpKernelInterface
|
interface HttpKernelInterface
|
||||||
{
|
{
|
||||||
public const MASTER_REQUEST = 1;
|
public const MAIN_REQUEST = 1;
|
||||||
public const SUB_REQUEST = 2;
|
public const SUB_REQUEST = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated since symfony/http-kernel 5.3, use MAIN_REQUEST instead.
|
||||||
|
* To ease the migration, this constant won't be removed until Symfony 7.0.
|
||||||
|
*/
|
||||||
|
public const MASTER_REQUEST = self::MAIN_REQUEST;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles a Request to convert it to a Response.
|
* Handles a Request to convert it to a Response.
|
||||||
*
|
*
|
||||||
@ -31,12 +37,12 @@ interface HttpKernelInterface
|
|||||||
* and do its best to convert them to a Response instance.
|
* and do its best to convert them to a Response instance.
|
||||||
*
|
*
|
||||||
* @param int $type The type of the request
|
* @param int $type The type of the request
|
||||||
* (one of HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST)
|
* (one of HttpKernelInterface::MAIN_REQUEST or HttpKernelInterface::SUB_REQUEST)
|
||||||
* @param bool $catch Whether to catch exceptions or not
|
* @param bool $catch Whether to catch exceptions or not
|
||||||
*
|
*
|
||||||
* @return Response A Response instance
|
* @return Response A Response instance
|
||||||
*
|
*
|
||||||
* @throws \Exception When an Exception occurs during processing
|
* @throws \Exception When an Exception occurs during processing
|
||||||
*/
|
*/
|
||||||
public function handle(Request $request, int $type = self::MASTER_REQUEST, bool $catch = true);
|
public function handle(Request $request, int $type = self::MAIN_REQUEST, bool $catch = true);
|
||||||
}
|
}
|
||||||
|
@ -177,7 +177,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
|
|||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
public function handle(Request $request, int $type = HttpKernelInterface::MASTER_REQUEST, bool $catch = true)
|
public function handle(Request $request, int $type = HttpKernelInterface::MAIN_REQUEST, bool $catch = true)
|
||||||
{
|
{
|
||||||
if (!$this->booted) {
|
if (!$this->booted) {
|
||||||
$container = $this->container ?? $this->preBoot();
|
$container = $this->container ?? $this->preBoot();
|
||||||
|
@ -45,11 +45,11 @@ class LoggerDataCollectorTest extends TestCase
|
|||||||
], $compilerLogs['Unknown Compiler Pass']);
|
], $compilerLogs['Unknown Compiler Pass']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testWithMasterRequest()
|
public function testWithMainRequest()
|
||||||
{
|
{
|
||||||
$masterRequest = new Request();
|
$mainRequest = new Request();
|
||||||
$stack = new RequestStack();
|
$stack = new RequestStack();
|
||||||
$stack->push($masterRequest);
|
$stack->push($mainRequest);
|
||||||
|
|
||||||
$logger = $this
|
$logger = $this
|
||||||
->getMockBuilder(DebugLoggerInterface::class)
|
->getMockBuilder(DebugLoggerInterface::class)
|
||||||
@ -60,16 +60,16 @@ class LoggerDataCollectorTest extends TestCase
|
|||||||
|
|
||||||
$c = new LoggerDataCollector($logger, __DIR__.'/', $stack);
|
$c = new LoggerDataCollector($logger, __DIR__.'/', $stack);
|
||||||
|
|
||||||
$c->collect($masterRequest, new Response());
|
$c->collect($mainRequest, new Response());
|
||||||
$c->lateCollect();
|
$c->lateCollect();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testWithSubRequest()
|
public function testWithSubRequest()
|
||||||
{
|
{
|
||||||
$masterRequest = new Request();
|
$mainRequest = new Request();
|
||||||
$subRequest = new Request();
|
$subRequest = new Request();
|
||||||
$stack = new RequestStack();
|
$stack = new RequestStack();
|
||||||
$stack->push($masterRequest);
|
$stack->push($mainRequest);
|
||||||
$stack->push($subRequest);
|
$stack->push($subRequest);
|
||||||
|
|
||||||
$logger = $this
|
$logger = $this
|
||||||
|
@ -210,7 +210,7 @@ class RequestDataCollectorTest extends TestCase
|
|||||||
$kernel = $this->createMock(HttpKernelInterface::class);
|
$kernel = $this->createMock(HttpKernelInterface::class);
|
||||||
|
|
||||||
$c = new RequestDataCollector();
|
$c = new RequestDataCollector();
|
||||||
$c->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, $this->createResponse()));
|
$c->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST, $this->createResponse()));
|
||||||
|
|
||||||
$this->assertTrue($request->attributes->get('_redirected'));
|
$this->assertTrue($request->attributes->get('_redirected'));
|
||||||
}
|
}
|
||||||
@ -374,7 +374,7 @@ class RequestDataCollectorTest extends TestCase
|
|||||||
{
|
{
|
||||||
$resolver = $this->createMock(ControllerResolverInterface::class);
|
$resolver = $this->createMock(ControllerResolverInterface::class);
|
||||||
$httpKernel = new HttpKernel(new EventDispatcher(), $resolver, null, $this->createMock(ArgumentResolverInterface::class));
|
$httpKernel = new HttpKernel(new EventDispatcher(), $resolver, null, $this->createMock(ArgumentResolverInterface::class));
|
||||||
$event = new ControllerEvent($httpKernel, $controller, $request, HttpKernelInterface::MASTER_REQUEST);
|
$event = new ControllerEvent($httpKernel, $controller, $request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
$collector->onKernelController($event);
|
$collector->onKernelController($event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ class DebugHandlersListenerTest extends TestCase
|
|||||||
$event = new KernelEvent(
|
$event = new KernelEvent(
|
||||||
$this->createMock(HttpKernelInterface::class),
|
$this->createMock(HttpKernelInterface::class),
|
||||||
Request::create('/'),
|
Request::create('/'),
|
||||||
HttpKernelInterface::MASTER_REQUEST
|
HttpKernelInterface::MAIN_REQUEST
|
||||||
);
|
);
|
||||||
|
|
||||||
$exception = null;
|
$exception = null;
|
||||||
|
@ -29,7 +29,7 @@ class DisallowRobotsIndexingListenerTest extends TestCase
|
|||||||
$response = new Response(...$responseArgs);
|
$response = new Response(...$responseArgs);
|
||||||
$listener = new DisallowRobotsIndexingListener();
|
$listener = new DisallowRobotsIndexingListener();
|
||||||
|
|
||||||
$event = new ResponseEvent($this->createMock(HttpKernelInterface::class), $this->createMock(Request::class), KernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->createMock(HttpKernelInterface::class), $this->createMock(Request::class), KernelInterface::MAIN_REQUEST, $response);
|
||||||
|
|
||||||
$listener->onResponse($event);
|
$listener->onResponse($event);
|
||||||
|
|
||||||
|
@ -105,8 +105,8 @@ class ErrorListenerTest extends TestCase
|
|||||||
|
|
||||||
$request = new Request();
|
$request = new Request();
|
||||||
$exception = new \Exception('foo');
|
$exception = new \Exception('foo');
|
||||||
$event = new ExceptionEvent(new TestKernel(), $request, HttpKernelInterface::MASTER_REQUEST, $exception);
|
$event = new ExceptionEvent(new TestKernel(), $request, HttpKernelInterface::MAIN_REQUEST, $exception);
|
||||||
$event2 = new ExceptionEvent(new TestKernelThatThrowsException(), $request, HttpKernelInterface::MASTER_REQUEST, $exception);
|
$event2 = new ExceptionEvent(new TestKernelThatThrowsException(), $request, HttpKernelInterface::MAIN_REQUEST, $exception);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
[$event, $event2],
|
[$event, $event2],
|
||||||
@ -125,7 +125,7 @@ class ErrorListenerTest extends TestCase
|
|||||||
$request = Request::create('/');
|
$request = Request::create('/');
|
||||||
$request->setRequestFormat('xml');
|
$request->setRequestFormat('xml');
|
||||||
|
|
||||||
$event = new ExceptionEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, new \Exception('foo'));
|
$event = new ExceptionEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST, new \Exception('foo'));
|
||||||
$listener->onKernelException($event);
|
$listener->onKernelException($event);
|
||||||
|
|
||||||
$response = $event->getResponse();
|
$response = $event->getResponse();
|
||||||
@ -145,13 +145,13 @@ class ErrorListenerTest extends TestCase
|
|||||||
$dispatcher->addSubscriber($listener);
|
$dispatcher->addSubscriber($listener);
|
||||||
|
|
||||||
$request = Request::create('/');
|
$request = Request::create('/');
|
||||||
$event = new ExceptionEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, new \Exception('foo'));
|
$event = new ExceptionEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST, new \Exception('foo'));
|
||||||
$dispatcher->dispatch($event, KernelEvents::EXCEPTION);
|
$dispatcher->dispatch($event, KernelEvents::EXCEPTION);
|
||||||
|
|
||||||
$response = new Response('', 200, ['content-security-policy' => "style-src 'self'"]);
|
$response = new Response('', 200, ['content-security-policy' => "style-src 'self'"]);
|
||||||
$this->assertTrue($response->headers->has('content-security-policy'));
|
$this->assertTrue($response->headers->has('content-security-policy'));
|
||||||
|
|
||||||
$event = new ResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
$dispatcher->dispatch($event, KernelEvents::RESPONSE);
|
$dispatcher->dispatch($event, KernelEvents::RESPONSE);
|
||||||
|
|
||||||
$this->assertFalse($response->headers->has('content-security-policy'), 'CSP header has been removed');
|
$this->assertFalse($response->headers->has('content-security-policy'), 'CSP header has been removed');
|
||||||
@ -174,7 +174,7 @@ class ErrorListenerTest extends TestCase
|
|||||||
return $controller(...$event->getArguments());
|
return $controller(...$event->getArguments());
|
||||||
});
|
});
|
||||||
|
|
||||||
$event = new ExceptionEvent($kernel, Request::create('/'), HttpKernelInterface::MASTER_REQUEST, new \Exception('foo'));
|
$event = new ExceptionEvent($kernel, Request::create('/'), HttpKernelInterface::MAIN_REQUEST, new \Exception('foo'));
|
||||||
$listener->onKernelException($event);
|
$listener->onKernelException($event);
|
||||||
|
|
||||||
$this->assertSame('OK: foo', $event->getResponse()->getContent());
|
$this->assertSame('OK: foo', $event->getResponse()->getContent());
|
||||||
@ -208,7 +208,7 @@ class TestLogger extends Logger implements DebugLoggerInterface
|
|||||||
|
|
||||||
class TestKernel implements HttpKernelInterface
|
class TestKernel implements HttpKernelInterface
|
||||||
{
|
{
|
||||||
public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true): Response
|
public function handle(Request $request, $type = self::MAIN_REQUEST, $catch = true): Response
|
||||||
{
|
{
|
||||||
return new Response('foo');
|
return new Response('foo');
|
||||||
}
|
}
|
||||||
@ -216,7 +216,7 @@ class TestKernel implements HttpKernelInterface
|
|||||||
|
|
||||||
class TestKernelThatThrowsException implements HttpKernelInterface
|
class TestKernelThatThrowsException implements HttpKernelInterface
|
||||||
{
|
{
|
||||||
public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true): Response
|
public function handle(Request $request, $type = self::MAIN_REQUEST, $catch = true): Response
|
||||||
{
|
{
|
||||||
throw new \RuntimeException('bar');
|
throw new \RuntimeException('bar');
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,7 @@ class FragmentListenerTest extends TestCase
|
|||||||
$this->assertFalse($request->query->has('_path'));
|
$this->assertFalse($request->query->has('_path'));
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createRequestEvent(Request $request, $requestType = HttpKernelInterface::MASTER_REQUEST)
|
private function createRequestEvent(Request $request, int $requestType = HttpKernelInterface::MAIN_REQUEST): RequestEvent
|
||||||
{
|
{
|
||||||
return new RequestEvent($this->createMock(HttpKernelInterface::class), $request, $requestType);
|
return new RequestEvent($this->createMock(HttpKernelInterface::class), $request, $requestType);
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ class LocaleAwareListenerTest extends TestCase
|
|||||||
->method('setLocale')
|
->method('setLocale')
|
||||||
->with($this->equalTo('fr'));
|
->with($this->equalTo('fr'));
|
||||||
|
|
||||||
$event = new RequestEvent($this->createMock(HttpKernelInterface::class), $this->createRequest('fr'), HttpKernelInterface::MASTER_REQUEST);
|
$event = new RequestEvent($this->createMock(HttpKernelInterface::class), $this->createRequest('fr'), HttpKernelInterface::MAIN_REQUEST);
|
||||||
$this->listener->onKernelRequest($event);
|
$this->listener->onKernelRequest($event);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ class LocaleAwareListenerTest extends TestCase
|
|||||||
$this->throwException(new \InvalidArgumentException())
|
$this->throwException(new \InvalidArgumentException())
|
||||||
);
|
);
|
||||||
|
|
||||||
$event = new RequestEvent($this->createMock(HttpKernelInterface::class), $this->createRequest('fr'), HttpKernelInterface::MASTER_REQUEST);
|
$event = new RequestEvent($this->createMock(HttpKernelInterface::class), $this->createRequest('fr'), HttpKernelInterface::MAIN_REQUEST);
|
||||||
$this->listener->onKernelRequest($event);
|
$this->listener->onKernelRequest($event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@ class LocaleListenerTest extends TestCase
|
|||||||
|
|
||||||
$this->requestStack->expects($this->once())->method('getParentRequest')->willReturn($parentRequest);
|
$this->requestStack->expects($this->once())->method('getParentRequest')->willReturn($parentRequest);
|
||||||
|
|
||||||
$event = new FinishRequestEvent($this->createMock(HttpKernelInterface::class), new Request(), HttpKernelInterface::MASTER_REQUEST);
|
$event = new FinishRequestEvent($this->createMock(HttpKernelInterface::class), new Request(), HttpKernelInterface::MAIN_REQUEST);
|
||||||
|
|
||||||
$listener = new LocaleListener($this->requestStack, 'fr', $router);
|
$listener = new LocaleListener($this->requestStack, 'fr', $router);
|
||||||
$listener->onKernelFinishRequest($event);
|
$listener->onKernelFinishRequest($event);
|
||||||
@ -119,6 +119,6 @@ class LocaleListenerTest extends TestCase
|
|||||||
|
|
||||||
private function getEvent(Request $request): RequestEvent
|
private function getEvent(Request $request): RequestEvent
|
||||||
{
|
{
|
||||||
return new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST);
|
return new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@ use Symfony\Component\HttpKernel\Profiler\Profiler;
|
|||||||
class ProfilerListenerTest extends TestCase
|
class ProfilerListenerTest extends TestCase
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Test a master and sub request with an exception and `onlyException` profiler option enabled.
|
* Test a main and sub request with an exception and `onlyException` profiler option enabled.
|
||||||
*/
|
*/
|
||||||
public function testKernelTerminate()
|
public function testKernelTerminate()
|
||||||
{
|
{
|
||||||
@ -40,23 +40,23 @@ class ProfilerListenerTest extends TestCase
|
|||||||
->willReturn($profile);
|
->willReturn($profile);
|
||||||
|
|
||||||
$kernel = $this->createMock(HttpKernelInterface::class);
|
$kernel = $this->createMock(HttpKernelInterface::class);
|
||||||
$masterRequest = $this->createMock(Request::class);
|
$mainRequest = $this->createMock(Request::class);
|
||||||
$subRequest = $this->createMock(Request::class);
|
$subRequest = $this->createMock(Request::class);
|
||||||
$response = $this->createMock(Response::class);
|
$response = $this->createMock(Response::class);
|
||||||
|
|
||||||
$requestStack = new RequestStack();
|
$requestStack = new RequestStack();
|
||||||
$requestStack->push($masterRequest);
|
$requestStack->push($mainRequest);
|
||||||
|
|
||||||
$onlyException = true;
|
$onlyException = true;
|
||||||
$listener = new ProfilerListener($profiler, $requestStack, null, $onlyException);
|
$listener = new ProfilerListener($profiler, $requestStack, null, $onlyException);
|
||||||
|
|
||||||
// master request
|
// main request
|
||||||
$listener->onKernelResponse(new ResponseEvent($kernel, $masterRequest, Kernel::MASTER_REQUEST, $response));
|
$listener->onKernelResponse(new ResponseEvent($kernel, $mainRequest, Kernel::MAIN_REQUEST, $response));
|
||||||
|
|
||||||
// sub request
|
// sub request
|
||||||
$listener->onKernelException(new ExceptionEvent($kernel, $subRequest, Kernel::SUB_REQUEST, new HttpException(404)));
|
$listener->onKernelException(new ExceptionEvent($kernel, $subRequest, Kernel::SUB_REQUEST, new HttpException(404)));
|
||||||
$listener->onKernelResponse(new ResponseEvent($kernel, $subRequest, Kernel::SUB_REQUEST, $response));
|
$listener->onKernelResponse(new ResponseEvent($kernel, $subRequest, Kernel::SUB_REQUEST, $response));
|
||||||
|
|
||||||
$listener->onKernelTerminate(new TerminateEvent($kernel, $masterRequest, $response));
|
$listener->onKernelTerminate(new TerminateEvent($kernel, $mainRequest, $response));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ class ResponseListenerTest extends TestCase
|
|||||||
|
|
||||||
$response = new Response('foo');
|
$response = new Response('foo');
|
||||||
|
|
||||||
$event = new ResponseEvent($this->kernel, Request::create('/'), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->kernel, Request::create('/'), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
$this->dispatcher->dispatch($event, KernelEvents::RESPONSE);
|
$this->dispatcher->dispatch($event, KernelEvents::RESPONSE);
|
||||||
|
|
||||||
$this->assertEquals('ISO-8859-15', $response->getCharset());
|
$this->assertEquals('ISO-8859-15', $response->getCharset());
|
||||||
@ -72,7 +72,7 @@ class ResponseListenerTest extends TestCase
|
|||||||
$response = new Response('foo');
|
$response = new Response('foo');
|
||||||
$response->setCharset('ISO-8859-1');
|
$response->setCharset('ISO-8859-1');
|
||||||
|
|
||||||
$event = new ResponseEvent($this->kernel, Request::create('/'), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->kernel, Request::create('/'), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
$this->dispatcher->dispatch($event, KernelEvents::RESPONSE);
|
$this->dispatcher->dispatch($event, KernelEvents::RESPONSE);
|
||||||
|
|
||||||
$this->assertEquals('ISO-8859-1', $response->getCharset());
|
$this->assertEquals('ISO-8859-1', $response->getCharset());
|
||||||
@ -87,7 +87,7 @@ class ResponseListenerTest extends TestCase
|
|||||||
$request = Request::create('/');
|
$request = Request::create('/');
|
||||||
$request->setRequestFormat('application/json');
|
$request->setRequestFormat('application/json');
|
||||||
|
|
||||||
$event = new ResponseEvent($this->kernel, $request, HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($this->kernel, $request, HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
$this->dispatcher->dispatch($event, KernelEvents::RESPONSE);
|
$this->dispatcher->dispatch($event, KernelEvents::RESPONSE);
|
||||||
|
|
||||||
$this->assertEquals('ISO-8859-15', $response->getCharset());
|
$this->assertEquals('ISO-8859-15', $response->getCharset());
|
||||||
|
@ -83,7 +83,7 @@ class RouterListenerTest extends TestCase
|
|||||||
$request = Request::create($uri);
|
$request = Request::create($uri);
|
||||||
$request->attributes->set('_controller', null); // Prevents going in to routing process
|
$request->attributes->set('_controller', null); // Prevents going in to routing process
|
||||||
|
|
||||||
return new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
|
return new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testInvalidMatcher()
|
public function testInvalidMatcher()
|
||||||
@ -96,7 +96,7 @@ class RouterListenerTest extends TestCase
|
|||||||
{
|
{
|
||||||
$kernel = $this->createMock(HttpKernelInterface::class);
|
$kernel = $this->createMock(HttpKernelInterface::class);
|
||||||
$request = Request::create('http://localhost/');
|
$request = Request::create('http://localhost/');
|
||||||
$event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
|
$event = new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
|
|
||||||
$requestMatcher = $this->createMock(RequestMatcherInterface::class);
|
$requestMatcher = $this->createMock(RequestMatcherInterface::class);
|
||||||
$requestMatcher->expects($this->once())
|
$requestMatcher->expects($this->once())
|
||||||
@ -112,7 +112,7 @@ class RouterListenerTest extends TestCase
|
|||||||
{
|
{
|
||||||
$kernel = $this->createMock(HttpKernelInterface::class);
|
$kernel = $this->createMock(HttpKernelInterface::class);
|
||||||
$request = Request::create('http://localhost/', 'post');
|
$request = Request::create('http://localhost/', 'post');
|
||||||
$event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
|
$event = new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
|
|
||||||
$requestMatcher = $this->createMock(RequestMatcherInterface::class);
|
$requestMatcher = $this->createMock(RequestMatcherInterface::class);
|
||||||
$requestMatcher->expects($this->any())
|
$requestMatcher->expects($this->any())
|
||||||
@ -154,7 +154,7 @@ class RouterListenerTest extends TestCase
|
|||||||
$request = Request::create('http://localhost/');
|
$request = Request::create('http://localhost/');
|
||||||
|
|
||||||
$listener = new RouterListener($requestMatcher, $this->requestStack, new RequestContext(), $logger);
|
$listener = new RouterListener($requestMatcher, $this->requestStack, new RequestContext(), $logger);
|
||||||
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getLoggingParameterData()
|
public function getLoggingParameterData()
|
||||||
@ -214,7 +214,7 @@ class RouterListenerTest extends TestCase
|
|||||||
$this->expectException(BadRequestHttpException::class);
|
$this->expectException(BadRequestHttpException::class);
|
||||||
$kernel = $this->createMock(HttpKernelInterface::class);
|
$kernel = $this->createMock(HttpKernelInterface::class);
|
||||||
$request = Request::create('http://bad host %22/');
|
$request = Request::create('http://bad host %22/');
|
||||||
$event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
|
$event = new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
|
|
||||||
$requestMatcher = $this->createMock(RequestMatcherInterface::class);
|
$requestMatcher = $this->createMock(RequestMatcherInterface::class);
|
||||||
|
|
||||||
@ -243,7 +243,7 @@ class RouterListenerTest extends TestCase
|
|||||||
$request = Request::create('https://www.symfony.com/path');
|
$request = Request::create('https://www.symfony.com/path');
|
||||||
$request->headers->set('referer', 'https://www.google.com');
|
$request->headers->set('referer', 'https://www.google.com');
|
||||||
|
|
||||||
$event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
|
$event = new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
|
|
||||||
$listener = new RouterListener($urlMatcher, $this->requestStack);
|
$listener = new RouterListener($urlMatcher, $this->requestStack);
|
||||||
$listener->onKernelRequest($event);
|
$listener->onKernelRequest($event);
|
||||||
@ -269,7 +269,7 @@ class RouterListenerTest extends TestCase
|
|||||||
$kernel = $this->createMock(HttpKernelInterface::class);
|
$kernel = $this->createMock(HttpKernelInterface::class);
|
||||||
$request = Request::create('https://www.symfony.com/path');
|
$request = Request::create('https://www.symfony.com/path');
|
||||||
|
|
||||||
$event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
|
$event = new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
|
|
||||||
$listener = new RouterListener($urlMatcher, $this->requestStack);
|
$listener = new RouterListener($urlMatcher, $this->requestStack);
|
||||||
$listener->onKernelRequest($event);
|
$listener->onKernelRequest($event);
|
||||||
|
@ -32,11 +32,11 @@ use Symfony\Component\HttpKernel\KernelInterface;
|
|||||||
|
|
||||||
class SessionListenerTest extends TestCase
|
class SessionListenerTest extends TestCase
|
||||||
{
|
{
|
||||||
public function testOnlyTriggeredOnMasterRequest()
|
public function testOnlyTriggeredOnMainRequest()
|
||||||
{
|
{
|
||||||
$listener = $this->getMockForAbstractClass(AbstractSessionListener::class);
|
$listener = $this->getMockForAbstractClass(AbstractSessionListener::class);
|
||||||
$event = $this->createMock(RequestEvent::class);
|
$event = $this->createMock(RequestEvent::class);
|
||||||
$event->expects($this->once())->method('isMasterRequest')->willReturn(false);
|
$event->expects($this->once())->method('isMainRequest')->willReturn(false);
|
||||||
$event->expects($this->never())->method('getRequest');
|
$event->expects($this->never())->method('getRequest');
|
||||||
|
|
||||||
// sub request
|
// sub request
|
||||||
@ -48,7 +48,7 @@ class SessionListenerTest extends TestCase
|
|||||||
$session = $this->createMock(Session::class);
|
$session = $this->createMock(Session::class);
|
||||||
|
|
||||||
$requestStack = $this->createMock(RequestStack::class);
|
$requestStack = $this->createMock(RequestStack::class);
|
||||||
$requestStack->expects($this->once())->method('getMasterRequest')->willReturn(null);
|
$requestStack->expects($this->once())->method('getMainRequest')->willReturn(null);
|
||||||
|
|
||||||
$sessionStorage = $this->createMock(NativeSessionStorage::class);
|
$sessionStorage = $this->createMock(NativeSessionStorage::class);
|
||||||
$sessionStorage->expects($this->never())->method('setOptions')->with(['cookie_secure' => true]);
|
$sessionStorage->expects($this->never())->method('setOptions')->with(['cookie_secure' => true]);
|
||||||
@ -62,7 +62,7 @@ class SessionListenerTest extends TestCase
|
|||||||
$listener = new SessionListener($container);
|
$listener = new SessionListener($container);
|
||||||
|
|
||||||
$event = $this->createMock(RequestEvent::class);
|
$event = $this->createMock(RequestEvent::class);
|
||||||
$event->expects($this->exactly(2))->method('isMasterRequest')->willReturn(true);
|
$event->expects($this->exactly(2))->method('isMainRequest')->willReturn(true);
|
||||||
$event->expects($this->once())->method('getRequest')->willReturn($request);
|
$event->expects($this->once())->method('getRequest')->willReturn($request);
|
||||||
|
|
||||||
$listener->onKernelRequest($event);
|
$listener->onKernelRequest($event);
|
||||||
@ -83,10 +83,10 @@ class SessionListenerTest extends TestCase
|
|||||||
$kernel = $this->createMock(HttpKernelInterface::class);
|
$kernel = $this->createMock(HttpKernelInterface::class);
|
||||||
|
|
||||||
$request = new Request();
|
$request = new Request();
|
||||||
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
|
|
||||||
$response = new Response();
|
$response = new Response();
|
||||||
$listener->onKernelResponse(new ResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, $response));
|
$listener->onKernelResponse(new ResponseEvent($kernel, new Request(), HttpKernelInterface::MAIN_REQUEST, $response));
|
||||||
|
|
||||||
$this->assertTrue($response->headers->has('Expires'));
|
$this->assertTrue($response->headers->has('Expires'));
|
||||||
$this->assertTrue($response->headers->hasCacheControlDirective('private'));
|
$this->assertTrue($response->headers->hasCacheControlDirective('private'));
|
||||||
@ -108,12 +108,12 @@ class SessionListenerTest extends TestCase
|
|||||||
$kernel = $this->createMock(HttpKernelInterface::class);
|
$kernel = $this->createMock(HttpKernelInterface::class);
|
||||||
|
|
||||||
$request = new Request();
|
$request = new Request();
|
||||||
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
|
|
||||||
$response = new Response();
|
$response = new Response();
|
||||||
$response->setSharedMaxAge(60);
|
$response->setSharedMaxAge(60);
|
||||||
$response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER, 'true');
|
$response->headers->set(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER, 'true');
|
||||||
$listener->onKernelResponse(new ResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, $response));
|
$listener->onKernelResponse(new ResponseEvent($kernel, new Request(), HttpKernelInterface::MAIN_REQUEST, $response));
|
||||||
|
|
||||||
$this->assertTrue($response->headers->hasCacheControlDirective('public'));
|
$this->assertTrue($response->headers->hasCacheControlDirective('public'));
|
||||||
$this->assertFalse($response->headers->has('Expires'));
|
$this->assertFalse($response->headers->has('Expires'));
|
||||||
@ -135,7 +135,7 @@ class SessionListenerTest extends TestCase
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
$listener = new SessionListener($container);
|
$listener = new SessionListener($container);
|
||||||
$listener->onKernelResponse(new ResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, $response));
|
$listener->onKernelResponse(new ResponseEvent($kernel, new Request(), HttpKernelInterface::MAIN_REQUEST, $response));
|
||||||
$this->assertFalse($response->headers->has('Expires'));
|
$this->assertFalse($response->headers->has('Expires'));
|
||||||
$this->assertTrue($response->headers->hasCacheControlDirective('public'));
|
$this->assertTrue($response->headers->hasCacheControlDirective('public'));
|
||||||
$this->assertFalse($response->headers->hasCacheControlDirective('private'));
|
$this->assertFalse($response->headers->hasCacheControlDirective('private'));
|
||||||
@ -144,7 +144,7 @@ class SessionListenerTest extends TestCase
|
|||||||
$this->assertFalse($response->headers->has(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER));
|
$this->assertFalse($response->headers->has(AbstractSessionListener::NO_AUTO_CACHE_CONTROL_HEADER));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSurrogateMasterRequestIsPublic()
|
public function testSurrogateMainRequestIsPublic()
|
||||||
{
|
{
|
||||||
$session = $this->createMock(Session::class);
|
$session = $this->createMock(Session::class);
|
||||||
$session->expects($this->exactly(4))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1, 1, 1));
|
$session->expects($this->exactly(4))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1, 1, 1));
|
||||||
@ -159,21 +159,21 @@ class SessionListenerTest extends TestCase
|
|||||||
$request = new Request();
|
$request = new Request();
|
||||||
$response = new Response();
|
$response = new Response();
|
||||||
$response->setCache(['public' => true, 'max_age' => '30']);
|
$response->setCache(['public' => true, 'max_age' => '30']);
|
||||||
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
$this->assertTrue($request->hasSession());
|
$this->assertTrue($request->hasSession());
|
||||||
|
|
||||||
$subRequest = clone $request;
|
$subRequest = clone $request;
|
||||||
$this->assertSame($request->getSession(), $subRequest->getSession());
|
$this->assertSame($request->getSession(), $subRequest->getSession());
|
||||||
$listener->onKernelRequest(new RequestEvent($kernel, $subRequest, HttpKernelInterface::MASTER_REQUEST));
|
$listener->onKernelRequest(new RequestEvent($kernel, $subRequest, HttpKernelInterface::MAIN_REQUEST));
|
||||||
$listener->onKernelResponse(new ResponseEvent($kernel, $subRequest, HttpKernelInterface::MASTER_REQUEST, $response));
|
$listener->onKernelResponse(new ResponseEvent($kernel, $subRequest, HttpKernelInterface::MAIN_REQUEST, $response));
|
||||||
$listener->onFinishRequest(new FinishRequestEvent($kernel, $subRequest, HttpKernelInterface::MASTER_REQUEST));
|
$listener->onFinishRequest(new FinishRequestEvent($kernel, $subRequest, HttpKernelInterface::MAIN_REQUEST));
|
||||||
|
|
||||||
$this->assertFalse($response->headers->has('Expires'));
|
$this->assertFalse($response->headers->has('Expires'));
|
||||||
$this->assertFalse($response->headers->hasCacheControlDirective('private'));
|
$this->assertFalse($response->headers->hasCacheControlDirective('private'));
|
||||||
$this->assertFalse($response->headers->hasCacheControlDirective('must-revalidate'));
|
$this->assertFalse($response->headers->hasCacheControlDirective('must-revalidate'));
|
||||||
$this->assertSame('30', $response->headers->getCacheControlDirective('max-age'));
|
$this->assertSame('30', $response->headers->getCacheControlDirective('max-age'));
|
||||||
|
|
||||||
$listener->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, $response));
|
$listener->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST, $response));
|
||||||
|
|
||||||
$this->assertTrue($response->headers->hasCacheControlDirective('private'));
|
$this->assertTrue($response->headers->hasCacheControlDirective('private'));
|
||||||
$this->assertTrue($response->headers->hasCacheControlDirective('must-revalidate'));
|
$this->assertTrue($response->headers->hasCacheControlDirective('must-revalidate'));
|
||||||
@ -194,14 +194,14 @@ class SessionListenerTest extends TestCase
|
|||||||
->with(['cookie_secure' => true]);
|
->with(['cookie_secure' => true]);
|
||||||
|
|
||||||
$requestStack = new RequestStack();
|
$requestStack = new RequestStack();
|
||||||
$requestStack->push($masterRequest = new Request([], [], [], [], [], ['HTTPS' => 'on']));
|
$requestStack->push($mainRequest = new Request([], [], [], [], [], ['HTTPS' => 'on']));
|
||||||
|
|
||||||
$container = new Container();
|
$container = new Container();
|
||||||
$container->set('session_storage', $sessionStorage);
|
$container->set('session_storage', $sessionStorage);
|
||||||
$container->set('session', $session);
|
$container->set('session', $session);
|
||||||
$container->set('request_stack', $requestStack);
|
$container->set('request_stack', $requestStack);
|
||||||
|
|
||||||
$event = new RequestEvent($kernel, $masterRequest, HttpKernelInterface::MASTER_REQUEST);
|
$event = new RequestEvent($kernel, $mainRequest, HttpKernelInterface::MAIN_REQUEST);
|
||||||
|
|
||||||
$listener = new SessionListener($container);
|
$listener = new SessionListener($container);
|
||||||
$listener->onKernelRequest($event);
|
$listener->onKernelRequest($event);
|
||||||
@ -210,10 +210,10 @@ class SessionListenerTest extends TestCase
|
|||||||
$container->set('session_storage', null);
|
$container->set('session_storage', null);
|
||||||
$sessionStorage = null;
|
$sessionStorage = null;
|
||||||
|
|
||||||
$subRequest = $masterRequest->duplicate();
|
$subRequest = $mainRequest->duplicate();
|
||||||
// at this point both master and subrequest have a closure to build the session
|
// at this point both main and subrequest have a closure to build the session
|
||||||
|
|
||||||
$masterRequest->getSession();
|
$mainRequest->getSession();
|
||||||
|
|
||||||
// calling the factory on the subRequest should not trigger a second call to storage->setOptions()
|
// calling the factory on the subRequest should not trigger a second call to storage->setOptions()
|
||||||
$subRequest->getSession();
|
$subRequest->getSession();
|
||||||
@ -232,10 +232,10 @@ class SessionListenerTest extends TestCase
|
|||||||
|
|
||||||
$request = new Request();
|
$request = new Request();
|
||||||
$request->attributes->set('_stateless', true);
|
$request->attributes->set('_stateless', true);
|
||||||
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
|
|
||||||
$this->expectException(UnexpectedSessionUsageException::class);
|
$this->expectException(UnexpectedSessionUsageException::class);
|
||||||
$listener->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, new Response()));
|
$listener->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST, new Response()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSessionUsageLogIfStatelessAndSessionUsed()
|
public function testSessionUsageLogIfStatelessAndSessionUsed()
|
||||||
@ -255,9 +255,9 @@ class SessionListenerTest extends TestCase
|
|||||||
|
|
||||||
$request = new Request();
|
$request = new Request();
|
||||||
$request->attributes->set('_stateless', true);
|
$request->attributes->set('_stateless', true);
|
||||||
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
|
|
||||||
$listener->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, new Response()));
|
$listener->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST, new Response()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSessionIsSavedWhenUnexpectedSessionExceptionThrown()
|
public function testSessionIsSavedWhenUnexpectedSessionExceptionThrown()
|
||||||
@ -276,11 +276,11 @@ class SessionListenerTest extends TestCase
|
|||||||
$request = new Request();
|
$request = new Request();
|
||||||
$request->attributes->set('_stateless', true);
|
$request->attributes->set('_stateless', true);
|
||||||
|
|
||||||
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
|
|
||||||
$response = new Response();
|
$response = new Response();
|
||||||
$this->expectException(UnexpectedSessionUsageException::class);
|
$this->expectException(UnexpectedSessionUsageException::class);
|
||||||
$listener->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, $response));
|
$listener->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST, $response));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSessionUsageCallbackWhenDebugAndStateless()
|
public function testSessionUsageCallbackWhenDebugAndStateless()
|
||||||
|
@ -45,7 +45,7 @@ class SurrogateListenerTest extends TestCase
|
|||||||
$listener = new SurrogateListener(new Esi());
|
$listener = new SurrogateListener(new Esi());
|
||||||
|
|
||||||
$dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse']);
|
$dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse']);
|
||||||
$event = new ResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($kernel, new Request(), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
$dispatcher->dispatch($event, KernelEvents::RESPONSE);
|
$dispatcher->dispatch($event, KernelEvents::RESPONSE);
|
||||||
|
|
||||||
$this->assertEquals('content="ESI/1.0"', $event->getResponse()->headers->get('Surrogate-Control'));
|
$this->assertEquals('content="ESI/1.0"', $event->getResponse()->headers->get('Surrogate-Control'));
|
||||||
@ -59,7 +59,7 @@ class SurrogateListenerTest extends TestCase
|
|||||||
$listener = new SurrogateListener(new Esi());
|
$listener = new SurrogateListener(new Esi());
|
||||||
|
|
||||||
$dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse']);
|
$dispatcher->addListener(KernelEvents::RESPONSE, [$listener, 'onKernelResponse']);
|
||||||
$event = new ResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, $response);
|
$event = new ResponseEvent($kernel, new Request(), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
$dispatcher->dispatch($event, KernelEvents::RESPONSE);
|
$dispatcher->dispatch($event, KernelEvents::RESPONSE);
|
||||||
|
|
||||||
$this->assertEquals('', $event->getResponse()->headers->get('Surrogate-Control'));
|
$this->assertEquals('', $event->getResponse()->headers->get('Surrogate-Control'));
|
||||||
|
@ -51,7 +51,7 @@ class TestSessionListenerTest extends TestCase
|
|||||||
->willReturn($this->session);
|
->willReturn($this->session);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testShouldSaveMasterRequestSession()
|
public function testShouldSaveMainRequestSession()
|
||||||
{
|
{
|
||||||
$this->sessionHasBeenStarted();
|
$this->sessionHasBeenStarted();
|
||||||
$this->sessionMustBeSaved();
|
$this->sessionMustBeSaved();
|
||||||
@ -72,7 +72,7 @@ class TestSessionListenerTest extends TestCase
|
|||||||
|
|
||||||
@ini_set('session.cookie_lifetime', 0);
|
@ini_set('session.cookie_lifetime', 0);
|
||||||
|
|
||||||
$response = $this->filterResponse(new Request(), HttpKernelInterface::MASTER_REQUEST);
|
$response = $this->filterResponse(new Request(), HttpKernelInterface::MAIN_REQUEST);
|
||||||
$cookies = $response->headers->getCookies();
|
$cookies = $response->headers->getCookies();
|
||||||
|
|
||||||
$this->assertEquals(0, reset($cookies)->getExpiresTime());
|
$this->assertEquals(0, reset($cookies)->getExpiresTime());
|
||||||
@ -86,7 +86,7 @@ class TestSessionListenerTest extends TestCase
|
|||||||
$this->sessionHasBeenStarted();
|
$this->sessionHasBeenStarted();
|
||||||
$this->sessionIsEmpty();
|
$this->sessionIsEmpty();
|
||||||
|
|
||||||
$response = $this->filterResponse(new Request(), HttpKernelInterface::MASTER_REQUEST);
|
$response = $this->filterResponse(new Request(), HttpKernelInterface::MAIN_REQUEST);
|
||||||
|
|
||||||
$this->assertSame([], $response->headers->getCookies());
|
$this->assertSame([], $response->headers->getCookies());
|
||||||
}
|
}
|
||||||
@ -99,10 +99,10 @@ class TestSessionListenerTest extends TestCase
|
|||||||
|
|
||||||
$kernel = $this->createMock(HttpKernelInterface::class);
|
$kernel = $this->createMock(HttpKernelInterface::class);
|
||||||
$request = Request::create('/', 'GET', [], ['MOCKSESSID' => '123']);
|
$request = Request::create('/', 'GET', [], ['MOCKSESSID' => '123']);
|
||||||
$event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
|
$event = new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
$this->listener->onKernelRequest($event);
|
$this->listener->onKernelRequest($event);
|
||||||
|
|
||||||
$response = $this->filterResponse(new Request(), HttpKernelInterface::MASTER_REQUEST);
|
$response = $this->filterResponse(new Request(), HttpKernelInterface::MAIN_REQUEST);
|
||||||
|
|
||||||
$this->assertNotEmpty($response->headers->getCookies());
|
$this->assertNotEmpty($response->headers->getCookies());
|
||||||
}
|
}
|
||||||
@ -118,12 +118,12 @@ class TestSessionListenerTest extends TestCase
|
|||||||
|
|
||||||
$kernel = $this->createMock(HttpKernelInterface::class);
|
$kernel = $this->createMock(HttpKernelInterface::class);
|
||||||
$request = Request::create('/', 'GET', [], ['MOCKSESSID' => '123']);
|
$request = Request::create('/', 'GET', [], ['MOCKSESSID' => '123']);
|
||||||
$event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
|
$event = new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
$this->listener->onKernelRequest($event);
|
$this->listener->onKernelRequest($event);
|
||||||
|
|
||||||
$response = new Response('', 200, ['Set-Cookie' => $existing]);
|
$response = new Response('', 200, ['Set-Cookie' => $existing]);
|
||||||
|
|
||||||
$response = $this->filterResponse(new Request(), HttpKernelInterface::MASTER_REQUEST, $response);
|
$response = $this->filterResponse(new Request(), HttpKernelInterface::MAIN_REQUEST, $response);
|
||||||
|
|
||||||
$this->assertSame($expected, $response->headers->all()['set-cookie']);
|
$this->assertSame($expected, $response->headers->all()['set-cookie']);
|
||||||
}
|
}
|
||||||
@ -148,14 +148,14 @@ class TestSessionListenerTest extends TestCase
|
|||||||
public function testDoesNotThrowIfRequestDoesNotHaveASession()
|
public function testDoesNotThrowIfRequestDoesNotHaveASession()
|
||||||
{
|
{
|
||||||
$kernel = $this->createMock(HttpKernelInterface::class);
|
$kernel = $this->createMock(HttpKernelInterface::class);
|
||||||
$event = new ResponseEvent($kernel, new Request(), HttpKernelInterface::MASTER_REQUEST, new Response());
|
$event = new ResponseEvent($kernel, new Request(), HttpKernelInterface::MAIN_REQUEST, new Response());
|
||||||
|
|
||||||
$this->listener->onKernelResponse($event);
|
$this->listener->onKernelResponse($event);
|
||||||
|
|
||||||
$this->assertTrue(true);
|
$this->assertTrue(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function filterResponse(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, Response $response = null)
|
private function filterResponse(Request $request, $type = HttpKernelInterface::MAIN_REQUEST, Response $response = null)
|
||||||
{
|
{
|
||||||
$request->setSession($this->session);
|
$request->setSession($this->session);
|
||||||
$response = $response ?: new Response();
|
$response = $response ?: new Response();
|
||||||
|
@ -27,7 +27,7 @@ class ValidateRequestListenerTest extends TestCase
|
|||||||
Request::setTrustedProxies([], -1);
|
Request::setTrustedProxies([], -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testListenerThrowsWhenMasterRequestHasInconsistentClientIps()
|
public function testListenerThrowsWhenMainRequestHasInconsistentClientIps()
|
||||||
{
|
{
|
||||||
$this->expectException(ConflictingHeadersException::class);
|
$this->expectException(ConflictingHeadersException::class);
|
||||||
$dispatcher = new EventDispatcher();
|
$dispatcher = new EventDispatcher();
|
||||||
@ -40,7 +40,7 @@ class ValidateRequestListenerTest extends TestCase
|
|||||||
$request->headers->set('X_FORWARDED_FOR', '3.3.3.3');
|
$request->headers->set('X_FORWARDED_FOR', '3.3.3.3');
|
||||||
|
|
||||||
$dispatcher->addListener(KernelEvents::REQUEST, [new ValidateRequestListener(), 'onKernelRequest']);
|
$dispatcher->addListener(KernelEvents::REQUEST, [new ValidateRequestListener(), 'onKernelRequest']);
|
||||||
$event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST);
|
$event = new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
|
|
||||||
$dispatcher->dispatch($event, KernelEvents::REQUEST);
|
$dispatcher->dispatch($event, KernelEvents::REQUEST);
|
||||||
}
|
}
|
||||||
|
@ -1209,7 +1209,7 @@ class HttpCacheTest extends HttpCacheTestCase
|
|||||||
$responses = [
|
$responses = [
|
||||||
[
|
[
|
||||||
'status' => 200,
|
'status' => 200,
|
||||||
'body' => 'I am a long-lived master response, but I embed a short-lived resource: <esi:include src="/foo" />',
|
'body' => 'I am a long-lived main response, but I embed a short-lived resource: <esi:include src="/foo" />',
|
||||||
'headers' => [
|
'headers' => [
|
||||||
'Cache-Control' => 's-maxage=300',
|
'Cache-Control' => 's-maxage=300',
|
||||||
'Surrogate-Control' => 'content="ESI/1.0"',
|
'Surrogate-Control' => 'content="ESI/1.0"',
|
||||||
@ -1267,7 +1267,7 @@ class HttpCacheTest extends HttpCacheTestCase
|
|||||||
$responses = [
|
$responses = [
|
||||||
[
|
[
|
||||||
'status' => 200,
|
'status' => 200,
|
||||||
'body' => 'I am the master response and use expiration caching, but I embed another resource: <esi:include src="/foo" />',
|
'body' => 'I am the main response and use expiration caching, but I embed another resource: <esi:include src="/foo" />',
|
||||||
'headers' => [
|
'headers' => [
|
||||||
'Cache-Control' => 's-maxage=300',
|
'Cache-Control' => 's-maxage=300',
|
||||||
'Surrogate-Control' => 'content="ESI/1.0"',
|
'Surrogate-Control' => 'content="ESI/1.0"',
|
||||||
@ -1511,7 +1511,7 @@ class HttpCacheTest extends HttpCacheTestCase
|
|||||||
$request->server->set('REMOTE_ADDR', '10.0.0.1');
|
$request->server->set('REMOTE_ADDR', '10.0.0.1');
|
||||||
|
|
||||||
// Main request
|
// Main request
|
||||||
$cache->handle($request, HttpKernelInterface::MASTER_REQUEST);
|
$cache->handle($request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
|
|
||||||
// Main request was now modified by HttpCache
|
// Main request was now modified by HttpCache
|
||||||
// The surrogate will ask for the request using $this->cache->getRequest()
|
// The surrogate will ask for the request using $this->cache->getRequest()
|
||||||
@ -1734,7 +1734,7 @@ class TestKernel implements HttpKernelInterface
|
|||||||
$this->terminateCalled = true;
|
$this->terminateCalled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true): Response
|
public function handle(Request $request, $type = self::MAIN_REQUEST, $catch = true): Response
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -131,7 +131,7 @@ class HttpCacheTestCase extends TestCase
|
|||||||
$this->request = Request::create($uri, $method, [], $cookies, [], $server);
|
$this->request = Request::create($uri, $method, [], $cookies, [], $server);
|
||||||
$this->request->headers->add($headers);
|
$this->request->headers->add($headers);
|
||||||
|
|
||||||
$this->response = $this->cache->handle($this->request, HttpKernelInterface::MASTER_REQUEST, $this->catch);
|
$this->response = $this->cache->handle($this->request, HttpKernelInterface::MAIN_REQUEST, $this->catch);
|
||||||
|
|
||||||
$this->responses[] = $this->response;
|
$this->responses[] = $this->response;
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ class ResponseCacheStrategyTest extends TestCase
|
|||||||
$this->assertFalse($response->headers->hasCacheControlDirective('s-maxage'));
|
$this->assertFalse($response->headers->hasCacheControlDirective('s-maxage'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSharedMaxAgeNotSetIfNotSetInMasterRequest()
|
public function testSharedMaxAgeNotSetIfNotSetInMainRequest()
|
||||||
{
|
{
|
||||||
$cacheStrategy = new ResponseCacheStrategy();
|
$cacheStrategy = new ResponseCacheStrategy();
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ class ResponseCacheStrategyTest extends TestCase
|
|||||||
$this->assertFalse($response->headers->hasCacheControlDirective('s-maxage'));
|
$this->assertFalse($response->headers->hasCacheControlDirective('s-maxage'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMasterResponseNotCacheableWhenEmbeddedResponseRequiresValidation()
|
public function testMainResponseNotCacheableWhenEmbeddedResponseRequiresValidation()
|
||||||
{
|
{
|
||||||
$cacheStrategy = new ResponseCacheStrategy();
|
$cacheStrategy = new ResponseCacheStrategy();
|
||||||
|
|
||||||
@ -84,66 +84,66 @@ class ResponseCacheStrategyTest extends TestCase
|
|||||||
$embeddedResponse->setLastModified(new \DateTime());
|
$embeddedResponse->setLastModified(new \DateTime());
|
||||||
$cacheStrategy->add($embeddedResponse);
|
$cacheStrategy->add($embeddedResponse);
|
||||||
|
|
||||||
$masterResponse = new Response();
|
$mainResponse = new Response();
|
||||||
$masterResponse->setSharedMaxAge(3600);
|
$mainResponse->setSharedMaxAge(3600);
|
||||||
$cacheStrategy->update($masterResponse);
|
$cacheStrategy->update($mainResponse);
|
||||||
|
|
||||||
$this->assertTrue($masterResponse->headers->hasCacheControlDirective('no-cache'));
|
$this->assertTrue($mainResponse->headers->hasCacheControlDirective('no-cache'));
|
||||||
$this->assertTrue($masterResponse->headers->hasCacheControlDirective('must-revalidate'));
|
$this->assertTrue($mainResponse->headers->hasCacheControlDirective('must-revalidate'));
|
||||||
$this->assertFalse($masterResponse->isFresh());
|
$this->assertFalse($mainResponse->isFresh());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testValidationOnMasterResponseIsNotPossibleWhenItContainsEmbeddedResponses()
|
public function testValidationOnMainResponseIsNotPossibleWhenItContainsEmbeddedResponses()
|
||||||
{
|
{
|
||||||
$cacheStrategy = new ResponseCacheStrategy();
|
$cacheStrategy = new ResponseCacheStrategy();
|
||||||
|
|
||||||
// This master response uses the "validation" model
|
// This main response uses the "validation" model
|
||||||
$masterResponse = new Response();
|
$mainResponse = new Response();
|
||||||
$masterResponse->setLastModified(new \DateTime());
|
$mainResponse->setLastModified(new \DateTime());
|
||||||
$masterResponse->setEtag('foo');
|
$mainResponse->setEtag('foo');
|
||||||
|
|
||||||
// Embedded response uses "expiry" model
|
// Embedded response uses "expiry" model
|
||||||
$embeddedResponse = new Response();
|
$embeddedResponse = new Response();
|
||||||
$masterResponse->setSharedMaxAge(3600);
|
$mainResponse->setSharedMaxAge(3600);
|
||||||
$cacheStrategy->add($embeddedResponse);
|
$cacheStrategy->add($embeddedResponse);
|
||||||
|
|
||||||
$cacheStrategy->update($masterResponse);
|
$cacheStrategy->update($mainResponse);
|
||||||
|
|
||||||
$this->assertFalse($masterResponse->isValidateable());
|
$this->assertFalse($mainResponse->isValidateable());
|
||||||
$this->assertFalse($masterResponse->headers->has('Last-Modified'));
|
$this->assertFalse($mainResponse->headers->has('Last-Modified'));
|
||||||
$this->assertFalse($masterResponse->headers->has('ETag'));
|
$this->assertFalse($mainResponse->headers->has('ETag'));
|
||||||
$this->assertTrue($masterResponse->headers->hasCacheControlDirective('no-cache'));
|
$this->assertTrue($mainResponse->headers->hasCacheControlDirective('no-cache'));
|
||||||
$this->assertTrue($masterResponse->headers->hasCacheControlDirective('must-revalidate'));
|
$this->assertTrue($mainResponse->headers->hasCacheControlDirective('must-revalidate'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMasterResponseWithValidationIsUnchangedWhenThereIsNoEmbeddedResponse()
|
public function testMainResponseWithValidationIsUnchangedWhenThereIsNoEmbeddedResponse()
|
||||||
{
|
{
|
||||||
$cacheStrategy = new ResponseCacheStrategy();
|
$cacheStrategy = new ResponseCacheStrategy();
|
||||||
|
|
||||||
$masterResponse = new Response();
|
$mainResponse = new Response();
|
||||||
$masterResponse->setLastModified(new \DateTime());
|
$mainResponse->setLastModified(new \DateTime());
|
||||||
$cacheStrategy->update($masterResponse);
|
$cacheStrategy->update($mainResponse);
|
||||||
|
|
||||||
$this->assertTrue($masterResponse->isValidateable());
|
$this->assertTrue($mainResponse->isValidateable());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMasterResponseWithExpirationIsUnchangedWhenThereIsNoEmbeddedResponse()
|
public function testMainResponseWithExpirationIsUnchangedWhenThereIsNoEmbeddedResponse()
|
||||||
{
|
{
|
||||||
$cacheStrategy = new ResponseCacheStrategy();
|
$cacheStrategy = new ResponseCacheStrategy();
|
||||||
|
|
||||||
$masterResponse = new Response();
|
$mainResponse = new Response();
|
||||||
$masterResponse->setSharedMaxAge(3600);
|
$mainResponse->setSharedMaxAge(3600);
|
||||||
$cacheStrategy->update($masterResponse);
|
$cacheStrategy->update($mainResponse);
|
||||||
|
|
||||||
$this->assertTrue($masterResponse->isFresh());
|
$this->assertTrue($mainResponse->isFresh());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMasterResponseIsNotCacheableWhenEmbeddedResponseIsNotCacheable()
|
public function testMainResponseIsNotCacheableWhenEmbeddedResponseIsNotCacheable()
|
||||||
{
|
{
|
||||||
$cacheStrategy = new ResponseCacheStrategy();
|
$cacheStrategy = new ResponseCacheStrategy();
|
||||||
|
|
||||||
$masterResponse = new Response();
|
$mainResponse = new Response();
|
||||||
$masterResponse->setSharedMaxAge(3600); // Public, cacheable
|
$mainResponse->setSharedMaxAge(3600); // Public, cacheable
|
||||||
|
|
||||||
/* This response has no validation or expiration information.
|
/* This response has no validation or expiration information.
|
||||||
That makes it uncacheable, it is always stale.
|
That makes it uncacheable, it is always stale.
|
||||||
@ -152,19 +152,19 @@ class ResponseCacheStrategyTest extends TestCase
|
|||||||
$this->assertFalse($embeddedResponse->isFresh()); // not fresh, as no lifetime is provided
|
$this->assertFalse($embeddedResponse->isFresh()); // not fresh, as no lifetime is provided
|
||||||
|
|
||||||
$cacheStrategy->add($embeddedResponse);
|
$cacheStrategy->add($embeddedResponse);
|
||||||
$cacheStrategy->update($masterResponse);
|
$cacheStrategy->update($mainResponse);
|
||||||
|
|
||||||
$this->assertTrue($masterResponse->headers->hasCacheControlDirective('no-cache'));
|
$this->assertTrue($mainResponse->headers->hasCacheControlDirective('no-cache'));
|
||||||
$this->assertTrue($masterResponse->headers->hasCacheControlDirective('must-revalidate'));
|
$this->assertTrue($mainResponse->headers->hasCacheControlDirective('must-revalidate'));
|
||||||
$this->assertFalse($masterResponse->isFresh());
|
$this->assertFalse($mainResponse->isFresh());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEmbeddingPrivateResponseMakesMainResponsePrivate()
|
public function testEmbeddingPrivateResponseMakesMainResponsePrivate()
|
||||||
{
|
{
|
||||||
$cacheStrategy = new ResponseCacheStrategy();
|
$cacheStrategy = new ResponseCacheStrategy();
|
||||||
|
|
||||||
$masterResponse = new Response();
|
$mainResponse = new Response();
|
||||||
$masterResponse->setSharedMaxAge(3600); // public, cacheable
|
$mainResponse->setSharedMaxAge(3600); // public, cacheable
|
||||||
|
|
||||||
// The embedded response might for example contain per-user data that remains valid for 60 seconds
|
// The embedded response might for example contain per-user data that remains valid for 60 seconds
|
||||||
$embeddedResponse = new Response();
|
$embeddedResponse = new Response();
|
||||||
@ -172,29 +172,29 @@ class ResponseCacheStrategyTest extends TestCase
|
|||||||
$embeddedResponse->setMaxAge(60); // this would implicitly set "private" as well, but let's be explicit
|
$embeddedResponse->setMaxAge(60); // this would implicitly set "private" as well, but let's be explicit
|
||||||
|
|
||||||
$cacheStrategy->add($embeddedResponse);
|
$cacheStrategy->add($embeddedResponse);
|
||||||
$cacheStrategy->update($masterResponse);
|
$cacheStrategy->update($mainResponse);
|
||||||
|
|
||||||
$this->assertTrue($masterResponse->headers->hasCacheControlDirective('private'));
|
$this->assertTrue($mainResponse->headers->hasCacheControlDirective('private'));
|
||||||
$this->assertFalse($masterResponse->headers->hasCacheControlDirective('public'));
|
$this->assertFalse($mainResponse->headers->hasCacheControlDirective('public'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEmbeddingPublicResponseDoesNotMakeMainResponsePublic()
|
public function testEmbeddingPublicResponseDoesNotMakeMainResponsePublic()
|
||||||
{
|
{
|
||||||
$cacheStrategy = new ResponseCacheStrategy();
|
$cacheStrategy = new ResponseCacheStrategy();
|
||||||
|
|
||||||
$masterResponse = new Response();
|
$mainResponse = new Response();
|
||||||
$masterResponse->setPrivate(); // this is the default, but let's be explicit
|
$mainResponse->setPrivate(); // this is the default, but let's be explicit
|
||||||
$masterResponse->setMaxAge(100);
|
$mainResponse->setMaxAge(100);
|
||||||
|
|
||||||
$embeddedResponse = new Response();
|
$embeddedResponse = new Response();
|
||||||
$embeddedResponse->setPublic();
|
$embeddedResponse->setPublic();
|
||||||
$embeddedResponse->setSharedMaxAge(100);
|
$embeddedResponse->setSharedMaxAge(100);
|
||||||
|
|
||||||
$cacheStrategy->add($embeddedResponse);
|
$cacheStrategy->add($embeddedResponse);
|
||||||
$cacheStrategy->update($masterResponse);
|
$cacheStrategy->update($mainResponse);
|
||||||
|
|
||||||
$this->assertTrue($masterResponse->headers->hasCacheControlDirective('private'));
|
$this->assertTrue($mainResponse->headers->hasCacheControlDirective('private'));
|
||||||
$this->assertFalse($masterResponse->headers->hasCacheControlDirective('public'));
|
$this->assertFalse($mainResponse->headers->hasCacheControlDirective('public'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testResponseIsExiprableWhenEmbeddedResponseCombinesExpiryAndValidation()
|
public function testResponseIsExiprableWhenEmbeddedResponseCombinesExpiryAndValidation()
|
||||||
@ -206,36 +206,36 @@ class ResponseCacheStrategyTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
$cacheStrategy = new ResponseCacheStrategy();
|
$cacheStrategy = new ResponseCacheStrategy();
|
||||||
|
|
||||||
$masterResponse = new Response();
|
$mainResponse = new Response();
|
||||||
$masterResponse->setSharedMaxAge(3600);
|
$mainResponse->setSharedMaxAge(3600);
|
||||||
|
|
||||||
$embeddedResponse = new Response();
|
$embeddedResponse = new Response();
|
||||||
$embeddedResponse->setSharedMaxAge(60);
|
$embeddedResponse->setSharedMaxAge(60);
|
||||||
$embeddedResponse->setEtag('foo');
|
$embeddedResponse->setEtag('foo');
|
||||||
|
|
||||||
$cacheStrategy->add($embeddedResponse);
|
$cacheStrategy->add($embeddedResponse);
|
||||||
$cacheStrategy->update($masterResponse);
|
$cacheStrategy->update($mainResponse);
|
||||||
|
|
||||||
$this->assertEqualsWithDelta(60, (int) $masterResponse->headers->getCacheControlDirective('s-maxage'), 1);
|
$this->assertEqualsWithDelta(60, (int) $mainResponse->headers->getCacheControlDirective('s-maxage'), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testResponseIsExpirableButNotValidateableWhenMasterResponseCombinesExpirationAndValidation()
|
public function testResponseIsExpirableButNotValidateableWhenMainResponseCombinesExpirationAndValidation()
|
||||||
{
|
{
|
||||||
$cacheStrategy = new ResponseCacheStrategy();
|
$cacheStrategy = new ResponseCacheStrategy();
|
||||||
|
|
||||||
$masterResponse = new Response();
|
$mainResponse = new Response();
|
||||||
$masterResponse->setSharedMaxAge(3600);
|
$mainResponse->setSharedMaxAge(3600);
|
||||||
$masterResponse->setEtag('foo');
|
$mainResponse->setEtag('foo');
|
||||||
$masterResponse->setLastModified(new \DateTime());
|
$mainResponse->setLastModified(new \DateTime());
|
||||||
|
|
||||||
$embeddedResponse = new Response();
|
$embeddedResponse = new Response();
|
||||||
$embeddedResponse->setSharedMaxAge(60);
|
$embeddedResponse->setSharedMaxAge(60);
|
||||||
|
|
||||||
$cacheStrategy->add($embeddedResponse);
|
$cacheStrategy->add($embeddedResponse);
|
||||||
$cacheStrategy->update($masterResponse);
|
$cacheStrategy->update($mainResponse);
|
||||||
|
|
||||||
$this->assertSame('60', $masterResponse->headers->getCacheControlDirective('s-maxage'));
|
$this->assertSame('60', $mainResponse->headers->getCacheControlDirective('s-maxage'));
|
||||||
$this->assertFalse($masterResponse->isValidateable());
|
$this->assertFalse($mainResponse->isValidateable());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -51,7 +51,7 @@ class SubRequestHandlerTest extends TestCase
|
|||||||
$this->assertSame('https', $request->headers->get('X-Forwarded-Proto'));
|
$this->assertSame('https', $request->headers->get('X-Forwarded-Proto'));
|
||||||
});
|
});
|
||||||
|
|
||||||
SubRequestHandler::handle($kernel, $request, HttpKernelInterface::MASTER_REQUEST, true);
|
SubRequestHandler::handle($kernel, $request, HttpKernelInterface::MAIN_REQUEST, true);
|
||||||
|
|
||||||
$this->assertSame($globalState, $this->getGlobalState());
|
$this->assertSame($globalState, $this->getGlobalState());
|
||||||
}
|
}
|
||||||
@ -75,7 +75,7 @@ class SubRequestHandlerTest extends TestCase
|
|||||||
$this->assertSame('for="10.0.0.1";host="localhost";proto=http', $request->headers->get('Forwarded'));
|
$this->assertSame('for="10.0.0.1";host="localhost";proto=http', $request->headers->get('Forwarded'));
|
||||||
});
|
});
|
||||||
|
|
||||||
SubRequestHandler::handle($kernel, $request, HttpKernelInterface::MASTER_REQUEST, true);
|
SubRequestHandler::handle($kernel, $request, HttpKernelInterface::MAIN_REQUEST, true);
|
||||||
|
|
||||||
$this->assertSame(self::$globalState, $this->getGlobalState());
|
$this->assertSame(self::$globalState, $this->getGlobalState());
|
||||||
}
|
}
|
||||||
@ -97,7 +97,7 @@ class SubRequestHandlerTest extends TestCase
|
|||||||
$this->assertSame(1234, $request->getPort());
|
$this->assertSame(1234, $request->getPort());
|
||||||
});
|
});
|
||||||
|
|
||||||
SubRequestHandler::handle($kernel, $request, HttpKernelInterface::MASTER_REQUEST, true);
|
SubRequestHandler::handle($kernel, $request, HttpKernelInterface::MAIN_REQUEST, true);
|
||||||
|
|
||||||
$this->assertSame($globalState, $this->getGlobalState());
|
$this->assertSame($globalState, $this->getGlobalState());
|
||||||
}
|
}
|
||||||
@ -120,7 +120,7 @@ class SubRequestHandlerTest extends TestCase
|
|||||||
$this->assertSame('https', $request->getScheme());
|
$this->assertSame('https', $request->getScheme());
|
||||||
});
|
});
|
||||||
|
|
||||||
SubRequestHandler::handle($kernel, $request, HttpKernelInterface::MASTER_REQUEST, true);
|
SubRequestHandler::handle($kernel, $request, HttpKernelInterface::MAIN_REQUEST, true);
|
||||||
|
|
||||||
$this->assertSame($globalState, $this->getGlobalState());
|
$this->assertSame($globalState, $this->getGlobalState());
|
||||||
}
|
}
|
||||||
@ -143,7 +143,7 @@ class TestSubRequestHandlerKernel implements HttpKernelInterface
|
|||||||
$this->assertCallback = $assertCallback;
|
$this->assertCallback = $assertCallback;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true): Response
|
public function handle(Request $request, $type = self::MAIN_REQUEST, $catch = true): Response
|
||||||
{
|
{
|
||||||
$assertCallback = $this->assertCallback;
|
$assertCallback = $this->assertCallback;
|
||||||
$assertCallback($request, $type, $catch);
|
$assertCallback($request, $type, $catch);
|
||||||
|
@ -54,7 +54,7 @@ class TestHttpKernel extends HttpKernel implements ControllerResolverInterface,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = false): Response
|
public function handle(Request $request, $type = HttpKernelInterface::MAIN_REQUEST, $catch = false): Response
|
||||||
{
|
{
|
||||||
$this->catch = $catch;
|
$this->catch = $catch;
|
||||||
$this->backendRequest = [Request::getTrustedProxies(), Request::getTrustedHeaderSet(), $request];
|
$this->backendRequest = [Request::getTrustedProxies(), Request::getTrustedHeaderSet(), $request];
|
||||||
|
@ -43,7 +43,7 @@ class TestMultipleHttpKernel extends HttpKernel implements ControllerResolverInt
|
|||||||
return $this->backendRequest;
|
return $this->backendRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = false): Response
|
public function handle(Request $request, $type = HttpKernelInterface::MAIN_REQUEST, $catch = false): Response
|
||||||
{
|
{
|
||||||
$this->backendRequest = $request;
|
$this->backendRequest = $request;
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ class HttpKernelTest extends TestCase
|
|||||||
$this->expectException(\RuntimeException::class);
|
$this->expectException(\RuntimeException::class);
|
||||||
$kernel = $this->getHttpKernel(new EventDispatcher(), function () { throw new \RuntimeException(); });
|
$kernel = $this->getHttpKernel(new EventDispatcher(), function () { throw new \RuntimeException(); });
|
||||||
|
|
||||||
$kernel->handle(new Request(), HttpKernelInterface::MASTER_REQUEST, true);
|
$kernel->handle(new Request(), HttpKernelInterface::MAIN_REQUEST, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testHandleWhenControllerThrowsAnExceptionAndCatchIsFalseAndNoListenerIsRegistered()
|
public function testHandleWhenControllerThrowsAnExceptionAndCatchIsFalseAndNoListenerIsRegistered()
|
||||||
@ -45,7 +45,7 @@ class HttpKernelTest extends TestCase
|
|||||||
$this->expectException(\RuntimeException::class);
|
$this->expectException(\RuntimeException::class);
|
||||||
$kernel = $this->getHttpKernel(new EventDispatcher(), function () { throw new \RuntimeException(); });
|
$kernel = $this->getHttpKernel(new EventDispatcher(), function () { throw new \RuntimeException(); });
|
||||||
|
|
||||||
$kernel->handle(new Request(), HttpKernelInterface::MASTER_REQUEST, false);
|
$kernel->handle(new Request(), HttpKernelInterface::MAIN_REQUEST, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testHandleWhenControllerThrowsAnExceptionAndCatchIsTrueWithAHandlingListener()
|
public function testHandleWhenControllerThrowsAnExceptionAndCatchIsTrueWithAHandlingListener()
|
||||||
@ -56,7 +56,7 @@ class HttpKernelTest extends TestCase
|
|||||||
});
|
});
|
||||||
|
|
||||||
$kernel = $this->getHttpKernel($dispatcher, function () { throw new \RuntimeException('foo'); });
|
$kernel = $this->getHttpKernel($dispatcher, function () { throw new \RuntimeException('foo'); });
|
||||||
$response = $kernel->handle(new Request(), HttpKernelInterface::MASTER_REQUEST, true);
|
$response = $kernel->handle(new Request(), HttpKernelInterface::MAIN_REQUEST, true);
|
||||||
|
|
||||||
$this->assertEquals('500', $response->getStatusCode());
|
$this->assertEquals('500', $response->getStatusCode());
|
||||||
$this->assertEquals('foo', $response->getContent());
|
$this->assertEquals('foo', $response->getContent());
|
||||||
@ -74,7 +74,7 @@ class HttpKernelTest extends TestCase
|
|||||||
$kernel = $this->getHttpKernel($dispatcher, function () use ($exception) { throw $exception; });
|
$kernel = $this->getHttpKernel($dispatcher, function () use ($exception) { throw $exception; });
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$kernel->handle(new Request(), HttpKernelInterface::MASTER_REQUEST, true);
|
$kernel->handle(new Request(), HttpKernelInterface::MAIN_REQUEST, true);
|
||||||
$this->fail('LogicException expected');
|
$this->fail('LogicException expected');
|
||||||
} catch (\RuntimeException $e) {
|
} catch (\RuntimeException $e) {
|
||||||
$this->assertSame($exception, $e);
|
$this->assertSame($exception, $e);
|
||||||
@ -313,10 +313,10 @@ class HttpKernelTest extends TestCase
|
|||||||
$dispatcher = new EventDispatcher();
|
$dispatcher = new EventDispatcher();
|
||||||
$kernel = $this->getHttpKernel($dispatcher, null, $stack);
|
$kernel = $this->getHttpKernel($dispatcher, null, $stack);
|
||||||
|
|
||||||
$kernel->handle($request, HttpKernelInterface::MASTER_REQUEST);
|
$kernel->handle($request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testInconsistentClientIpsOnMasterRequests()
|
public function testInconsistentClientIpsOnMainRequests()
|
||||||
{
|
{
|
||||||
$this->expectException(BadRequestHttpException::class);
|
$this->expectException(BadRequestHttpException::class);
|
||||||
$request = new Request();
|
$request = new Request();
|
||||||
@ -331,7 +331,7 @@ class HttpKernelTest extends TestCase
|
|||||||
});
|
});
|
||||||
|
|
||||||
$kernel = $this->getHttpKernel($dispatcher);
|
$kernel = $this->getHttpKernel($dispatcher);
|
||||||
$kernel->handle($request, $kernel::MASTER_REQUEST, false);
|
$kernel->handle($request, $kernel::MAIN_REQUEST, false);
|
||||||
|
|
||||||
Request::setTrustedProxies([], -1);
|
Request::setTrustedProxies([], -1);
|
||||||
}
|
}
|
||||||
|
@ -190,7 +190,7 @@ class KernelTest extends TestCase
|
|||||||
|
|
||||||
public function testHandleCallsHandleOnHttpKernel()
|
public function testHandleCallsHandleOnHttpKernel()
|
||||||
{
|
{
|
||||||
$type = HttpKernelInterface::MASTER_REQUEST;
|
$type = HttpKernelInterface::MAIN_REQUEST;
|
||||||
$catch = true;
|
$catch = true;
|
||||||
$request = new Request();
|
$request = new Request();
|
||||||
|
|
||||||
@ -212,7 +212,7 @@ class KernelTest extends TestCase
|
|||||||
|
|
||||||
public function testHandleBootsTheKernel()
|
public function testHandleBootsTheKernel()
|
||||||
{
|
{
|
||||||
$type = HttpKernelInterface::MASTER_REQUEST;
|
$type = HttpKernelInterface::MAIN_REQUEST;
|
||||||
$catch = true;
|
$catch = true;
|
||||||
$request = new Request();
|
$request = new Request();
|
||||||
|
|
||||||
@ -678,7 +678,7 @@ class TestKernel implements HttpKernelInterface
|
|||||||
$this->terminateCalled = true;
|
$this->terminateCalled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handle(Request $request, int $type = self::MASTER_REQUEST, bool $catch = true): Response
|
public function handle(Request $request, int $type = self::MAIN_REQUEST, bool $catch = true): Response
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
"symfony/error-handler": "^4.4|^5.0",
|
"symfony/error-handler": "^4.4|^5.0",
|
||||||
"symfony/event-dispatcher": "^5.0",
|
"symfony/event-dispatcher": "^5.0",
|
||||||
"symfony/http-client-contracts": "^1.1|^2",
|
"symfony/http-client-contracts": "^1.1|^2",
|
||||||
"symfony/http-foundation": "^4.4|^5.0",
|
"symfony/http-foundation": "^5.3",
|
||||||
"symfony/polyfill-ctype": "^1.8",
|
"symfony/polyfill-ctype": "^1.8",
|
||||||
"symfony/polyfill-php73": "^1.9",
|
"symfony/polyfill-php73": "^1.9",
|
||||||
"symfony/polyfill-php80": "^1.15",
|
"symfony/polyfill-php80": "^1.15",
|
||||||
|
@ -34,7 +34,7 @@ class CsrfTokenManager implements CsrfTokenManagerInterface
|
|||||||
* @param string|RequestStack|callable|null $namespace
|
* @param string|RequestStack|callable|null $namespace
|
||||||
* * null: generates a namespace using $_SERVER['HTTPS']
|
* * null: generates a namespace using $_SERVER['HTTPS']
|
||||||
* * string: uses the given string
|
* * string: uses the given string
|
||||||
* * RequestStack: generates a namespace using the current master request
|
* * RequestStack: generates a namespace using the current main request
|
||||||
* * callable: uses the result of this callable (must return a string)
|
* * callable: uses the result of this callable (must return a string)
|
||||||
*/
|
*/
|
||||||
public function __construct(TokenGeneratorInterface $generator = null, TokenStorageInterface $storage = null, $namespace = null)
|
public function __construct(TokenGeneratorInterface $generator = null, TokenStorageInterface $storage = null, $namespace = null)
|
||||||
@ -50,7 +50,7 @@ class CsrfTokenManager implements CsrfTokenManagerInterface
|
|||||||
$this->namespace = $superGlobalNamespaceGenerator;
|
$this->namespace = $superGlobalNamespaceGenerator;
|
||||||
} elseif ($namespace instanceof RequestStack) {
|
} elseif ($namespace instanceof RequestStack) {
|
||||||
$this->namespace = function () use ($namespace, $superGlobalNamespaceGenerator) {
|
$this->namespace = function () use ($namespace, $superGlobalNamespaceGenerator) {
|
||||||
if ($request = $namespace->getMasterRequest()) {
|
if ($request = $namespace->getMainRequest()) {
|
||||||
return $request->isSecure() ? 'https-' : '';
|
return $request->isSecure() ? 'https-' : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,11 +66,20 @@ final class LazyResponseEvent extends RequestEvent
|
|||||||
return $this->event->getRequestType();
|
return $this->event->getRequestType();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function isMainRequest(): bool
|
||||||
|
{
|
||||||
|
return $this->event->isMainRequest();
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* {@inheritdoc}
|
* {@inheritdoc}
|
||||||
*/
|
*/
|
||||||
public function isMasterRequest(): bool
|
public function isMasterRequest(): bool
|
||||||
{
|
{
|
||||||
return $this->event->isMasterRequest();
|
trigger_deprecation('symfony/security-http', '5.3', '"%s()" is deprecated, use "isMainRequest()" instead.');
|
||||||
|
|
||||||
|
return $this->event->isMainRequest();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ final class LoginThrottlingListener implements EventSubscriberInterface
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$request = $this->requestStack->getMasterRequest();
|
$request = $this->requestStack->getMainRequest();
|
||||||
$request->attributes->set(Security::LAST_USERNAME, $passport->getBadge(UserBadge::class)->getUserIdentifier());
|
$request->attributes->set(Security::LAST_USERNAME, $passport->getBadge(UserBadge::class)->getUserIdentifier());
|
||||||
|
|
||||||
$limit = $this->limiter->consume($request);
|
$limit = $this->limiter->consume($request);
|
||||||
|
@ -43,7 +43,7 @@ class Firewall implements EventSubscriberInterface
|
|||||||
|
|
||||||
public function onKernelRequest(RequestEvent $event)
|
public function onKernelRequest(RequestEvent $event)
|
||||||
{
|
{
|
||||||
if (!$event->isMasterRequest()) {
|
if (!$event->isMainRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ class ContextListener extends AbstractListener
|
|||||||
*/
|
*/
|
||||||
public function authenticate(RequestEvent $event)
|
public function authenticate(RequestEvent $event)
|
||||||
{
|
{
|
||||||
if (!$this->registered && null !== $this->dispatcher && $event->isMasterRequest()) {
|
if (!$this->registered && null !== $this->dispatcher && $event->isMainRequest()) {
|
||||||
$this->dispatcher->addListener(KernelEvents::RESPONSE, [$this, 'onKernelResponse']);
|
$this->dispatcher->addListener(KernelEvents::RESPONSE, [$this, 'onKernelResponse']);
|
||||||
$this->registered = true;
|
$this->registered = true;
|
||||||
}
|
}
|
||||||
@ -153,7 +153,7 @@ class ContextListener extends AbstractListener
|
|||||||
*/
|
*/
|
||||||
public function onKernelResponse(ResponseEvent $event)
|
public function onKernelResponse(ResponseEvent $event)
|
||||||
{
|
{
|
||||||
if (!$event->isMasterRequest()) {
|
if (!$event->isMainRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ class ResponseListener implements EventSubscriberInterface
|
|||||||
{
|
{
|
||||||
public function onKernelResponse(ResponseEvent $event)
|
public function onKernelResponse(ResponseEvent $event)
|
||||||
{
|
{
|
||||||
if (!$event->isMasterRequest()) {
|
if (!$event->isMainRequest()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ class AccessListenerTest extends TestCase
|
|||||||
$this->createMock(AuthenticationManagerInterface::class)
|
$this->createMock(AuthenticationManagerInterface::class)
|
||||||
);
|
);
|
||||||
|
|
||||||
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testHandleWhenTheTokenIsNotAuthenticated()
|
public function testHandleWhenTheTokenIsNotAuthenticated()
|
||||||
@ -138,7 +138,7 @@ class AccessListenerTest extends TestCase
|
|||||||
$authManager
|
$authManager
|
||||||
);
|
);
|
||||||
|
|
||||||
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testHandleWhenThereIsNoAccessMapEntryMatchingTheRequest()
|
public function testHandleWhenThereIsNoAccessMapEntryMatchingTheRequest()
|
||||||
@ -173,7 +173,7 @@ class AccessListenerTest extends TestCase
|
|||||||
$this->createMock(AuthenticationManagerInterface::class)
|
$this->createMock(AuthenticationManagerInterface::class)
|
||||||
);
|
);
|
||||||
|
|
||||||
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testHandleWhenAccessMapReturnsEmptyAttributes()
|
public function testHandleWhenAccessMapReturnsEmptyAttributes()
|
||||||
@ -201,7 +201,7 @@ class AccessListenerTest extends TestCase
|
|||||||
$this->createMock(AuthenticationManagerInterface::class)
|
$this->createMock(AuthenticationManagerInterface::class)
|
||||||
);
|
);
|
||||||
|
|
||||||
$event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST);
|
$event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
|
|
||||||
$listener(new LazyResponseEvent($event));
|
$listener(new LazyResponseEvent($event));
|
||||||
}
|
}
|
||||||
@ -233,7 +233,7 @@ class AccessListenerTest extends TestCase
|
|||||||
$this->createMock(AuthenticationManagerInterface::class)
|
$this->createMock(AuthenticationManagerInterface::class)
|
||||||
);
|
);
|
||||||
|
|
||||||
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testHandleWhenTheSecurityTokenStorageHasNoTokenAndExceptionOnTokenIsFalse()
|
public function testHandleWhenTheSecurityTokenStorageHasNoTokenAndExceptionOnTokenIsFalse()
|
||||||
@ -263,7 +263,7 @@ class AccessListenerTest extends TestCase
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testHandleWhenPublicAccessIsAllowedAndExceptionOnTokenIsFalse()
|
public function testHandleWhenPublicAccessIsAllowedAndExceptionOnTokenIsFalse()
|
||||||
@ -292,7 +292,7 @@ class AccessListenerTest extends TestCase
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testHandleWhenPublicAccessWhileAuthenticated()
|
public function testHandleWhenPublicAccessWhileAuthenticated()
|
||||||
@ -323,7 +323,7 @@ class AccessListenerTest extends TestCase
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testHandleMWithultipleAttributesShouldBeHandledAsAnd()
|
public function testHandleMWithultipleAttributesShouldBeHandledAsAnd()
|
||||||
@ -363,6 +363,6 @@ class AccessListenerTest extends TestCase
|
|||||||
$this->createMock(AuthenticationManagerInterface::class)
|
$this->createMock(AuthenticationManagerInterface::class)
|
||||||
);
|
);
|
||||||
|
|
||||||
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ class AnonymousAuthenticationListenerTest extends TestCase
|
|||||||
;
|
;
|
||||||
|
|
||||||
$listener = new AnonymousAuthenticationListener($tokenStorage, 'TheSecret', null, $authenticationManager);
|
$listener = new AnonymousAuthenticationListener($tokenStorage, 'TheSecret', null, $authenticationManager);
|
||||||
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), new Request(), HttpKernelInterface::MASTER_REQUEST));
|
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), new Request(), HttpKernelInterface::MAIN_REQUEST));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testHandleWithTokenStorageHavingNoToken()
|
public function testHandleWithTokenStorageHavingNoToken()
|
||||||
@ -75,7 +75,7 @@ class AnonymousAuthenticationListenerTest extends TestCase
|
|||||||
;
|
;
|
||||||
|
|
||||||
$listener = new AnonymousAuthenticationListener($tokenStorage, 'TheSecret', null, $authenticationManager);
|
$listener = new AnonymousAuthenticationListener($tokenStorage, 'TheSecret', null, $authenticationManager);
|
||||||
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), new Request(), HttpKernelInterface::MASTER_REQUEST));
|
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), new Request(), HttpKernelInterface::MAIN_REQUEST));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testHandledEventIsLogged()
|
public function testHandledEventIsLogged()
|
||||||
@ -90,6 +90,6 @@ class AnonymousAuthenticationListenerTest extends TestCase
|
|||||||
$authenticationManager = $this->createMock(AuthenticationManagerInterface::class);
|
$authenticationManager = $this->createMock(AuthenticationManagerInterface::class);
|
||||||
|
|
||||||
$listener = new AnonymousAuthenticationListener($tokenStorage, 'TheSecret', $logger, $authenticationManager);
|
$listener = new AnonymousAuthenticationListener($tokenStorage, 'TheSecret', $logger, $authenticationManager);
|
||||||
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), new Request(), HttpKernelInterface::MASTER_REQUEST));
|
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), new Request(), HttpKernelInterface::MAIN_REQUEST));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,7 @@ class ContextListenerTest extends TestCase
|
|||||||
$event = new ResponseEvent(
|
$event = new ResponseEvent(
|
||||||
$this->createMock(HttpKernelInterface::class),
|
$this->createMock(HttpKernelInterface::class),
|
||||||
$request,
|
$request,
|
||||||
HttpKernelInterface::MASTER_REQUEST,
|
HttpKernelInterface::MAIN_REQUEST,
|
||||||
new Response()
|
new Response()
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -131,7 +131,7 @@ class ContextListenerTest extends TestCase
|
|||||||
$event = new ResponseEvent(
|
$event = new ResponseEvent(
|
||||||
$this->createMock(HttpKernelInterface::class),
|
$this->createMock(HttpKernelInterface::class),
|
||||||
$request,
|
$request,
|
||||||
HttpKernelInterface::MASTER_REQUEST,
|
HttpKernelInterface::MAIN_REQUEST,
|
||||||
new Response()
|
new Response()
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -192,7 +192,7 @@ class ContextListenerTest extends TestCase
|
|||||||
$listener = new ContextListener($tokenStorage, [], 'key123', null, $dispatcher);
|
$listener = new ContextListener($tokenStorage, [], 'key123', null, $dispatcher);
|
||||||
|
|
||||||
$event->expects($this->any())
|
$event->expects($this->any())
|
||||||
->method('isMasterRequest')
|
->method('isMainRequest')
|
||||||
->willReturn(true);
|
->willReturn(true);
|
||||||
$event->expects($this->any())
|
$event->expects($this->any())
|
||||||
->method('getRequest')
|
->method('getRequest')
|
||||||
@ -221,7 +221,7 @@ class ContextListenerTest extends TestCase
|
|||||||
->method('getSession')
|
->method('getSession')
|
||||||
->willReturn($session);
|
->willReturn($session);
|
||||||
|
|
||||||
$event = new ResponseEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST, new Response());
|
$event = new ResponseEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST, new Response());
|
||||||
|
|
||||||
$dispatcher->expects($this->once())
|
$dispatcher->expects($this->once())
|
||||||
->method('removeListener')
|
->method('removeListener')
|
||||||
@ -334,7 +334,7 @@ class ContextListenerTest extends TestCase
|
|||||||
});
|
});
|
||||||
|
|
||||||
$listener = new ContextListener($tokenStorage, [new NotSupportingUserProvider(true), new NotSupportingUserProvider(false), new SupportingUserProvider($refreshedUser)], 'context_key', null, $eventDispatcher);
|
$listener = new ContextListener($tokenStorage, [new NotSupportingUserProvider(true), new NotSupportingUserProvider(false), new SupportingUserProvider($refreshedUser)], 'context_key', null, $eventDispatcher);
|
||||||
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
|
|
||||||
$this->assertNull($tokenStorage->getToken());
|
$this->assertNull($tokenStorage->getToken());
|
||||||
}
|
}
|
||||||
@ -351,7 +351,7 @@ class ContextListenerTest extends TestCase
|
|||||||
|
|
||||||
$tokenStorage = new TokenStorage();
|
$tokenStorage = new TokenStorage();
|
||||||
$listener = new ContextListener($tokenStorage, [], 'context_key', null, null, null, [$tokenStorage, 'getToken']);
|
$listener = new ContextListener($tokenStorage, [], 'context_key', null, null, null, [$tokenStorage, 'getToken']);
|
||||||
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
|
|
||||||
$this->assertSame($usageIndex, $session->getUsageIndex());
|
$this->assertSame($usageIndex, $session->getUsageIndex());
|
||||||
}
|
}
|
||||||
@ -370,7 +370,7 @@ class ContextListenerTest extends TestCase
|
|||||||
$tokenStorage = new TokenStorage();
|
$tokenStorage = new TokenStorage();
|
||||||
|
|
||||||
$listener = new ContextListener($tokenStorage, [], 'context_key', null, null, null, [$tokenStorage, 'getToken']);
|
$listener = new ContextListener($tokenStorage, [], 'context_key', null, null, null, [$tokenStorage, 'getToken']);
|
||||||
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function runSessionOnKernelResponse($newToken, $original = null)
|
protected function runSessionOnKernelResponse($newToken, $original = null)
|
||||||
@ -402,7 +402,7 @@ class ContextListenerTest extends TestCase
|
|||||||
$event = new ResponseEvent(
|
$event = new ResponseEvent(
|
||||||
$this->createMock(HttpKernelInterface::class),
|
$this->createMock(HttpKernelInterface::class),
|
||||||
$request,
|
$request,
|
||||||
HttpKernelInterface::MASTER_REQUEST,
|
HttpKernelInterface::MAIN_REQUEST,
|
||||||
new Response()
|
new Response()
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -452,7 +452,7 @@ class ContextListenerTest extends TestCase
|
|||||||
if ($rememberMeServices) {
|
if ($rememberMeServices) {
|
||||||
$listener->setRememberMeServices($rememberMeServices);
|
$listener->setRememberMeServices($rememberMeServices);
|
||||||
}
|
}
|
||||||
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST));
|
$listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST));
|
||||||
|
|
||||||
if (null !== $user) {
|
if (null !== $user) {
|
||||||
++$usageIndex;
|
++$usageIndex;
|
||||||
|
@ -203,7 +203,7 @@ class ExceptionListenerTest extends TestCase
|
|||||||
$kernel = $this->createMock(HttpKernelInterface::class);
|
$kernel = $this->createMock(HttpKernelInterface::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new ExceptionEvent($kernel, Request::create('/'), HttpKernelInterface::MASTER_REQUEST, $exception);
|
return new ExceptionEvent($kernel, Request::create('/'), HttpKernelInterface::MAIN_REQUEST, $exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createExceptionListener(TokenStorageInterface $tokenStorage = null, AuthenticationTrustResolverInterface $trustResolver = null, HttpUtils $httpUtils = null, AuthenticationEntryPointInterface $authenticationEntryPoint = null, $errorPage = null, AccessDeniedHandlerInterface $accessDeniedHandler = null)
|
private function createExceptionListener(TokenStorageInterface $tokenStorage = null, AuthenticationTrustResolverInterface $trustResolver = null, HttpUtils $httpUtils = null, AuthenticationEntryPointInterface $authenticationEntryPoint = null, $errorPage = null, AccessDeniedHandlerInterface $accessDeniedHandler = null)
|
||||||
|
@ -352,7 +352,7 @@ class RememberMeListenerTest extends TestCase
|
|||||||
$request = $request ?? new Request();
|
$request = $request ?? new Request();
|
||||||
|
|
||||||
$event = $this->getMockBuilder(RequestEvent::class)
|
$event = $this->getMockBuilder(RequestEvent::class)
|
||||||
->setConstructorArgs([$this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST])
|
->setConstructorArgs([$this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST])
|
||||||
->getMock();
|
->getMock();
|
||||||
$event
|
$event
|
||||||
->expects($this->any())
|
->expects($this->any())
|
||||||
|
@ -53,7 +53,7 @@ class SwitchUserListenerTest extends TestCase
|
|||||||
$this->userChecker = $this->createMock(UserCheckerInterface::class);
|
$this->userChecker = $this->createMock(UserCheckerInterface::class);
|
||||||
$this->accessDecisionManager = $this->createMock(AccessDecisionManagerInterface::class);
|
$this->accessDecisionManager = $this->createMock(AccessDecisionManagerInterface::class);
|
||||||
$this->request = new Request();
|
$this->request = new Request();
|
||||||
$this->event = new RequestEvent($this->createMock(HttpKernelInterface::class), $this->request, HttpKernelInterface::MASTER_REQUEST);
|
$this->event = new RequestEvent($this->createMock(HttpKernelInterface::class), $this->request, HttpKernelInterface::MAIN_REQUEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testFirewallNameIsRequired()
|
public function testFirewallNameIsRequired()
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user