From a6fb6909ca3fb327d4158931a4d77c06d1f680da Mon Sep 17 00:00:00 2001 From: Stefano Arlandini Date: Wed, 13 Jul 2022 23:15:57 +0200 Subject: [PATCH] Rearrange test cases to make clearer which Symfony versions they belong to --- tests/EventListener/RequestListenerTest.php | 130 +++++++++++++++----- 1 file changed, 97 insertions(+), 33 deletions(-) diff --git a/tests/EventListener/RequestListenerTest.php b/tests/EventListener/RequestListenerTest.php index d6226ed7..9ee2803a 100644 --- a/tests/EventListener/RequestListenerTest.php +++ b/tests/EventListener/RequestListenerTest.php @@ -53,8 +53,8 @@ protected function setUp(): void /** * @dataProvider handleKernelRequestEventDataProvider * @dataProvider handleKernelRequestEventForSymfonyVersionLowerThan54DataProvider + * @dataProvider handleKernelRequestEventForSymfonyVersionEqualTo54DataProvider * @dataProvider handleKernelRequestEventForSymfonyVersionGreaterThan54DataProvider - * @dataProvider handleKernelRequestEventForSymfonyVersionLowerThan60DataProvider */ public function testHandleKernelRequestEvent(RequestEvent $requestEvent, ?ClientInterface $client, ?TokenInterface $token, ?UserDataBag $expectedUser): void { @@ -120,6 +120,27 @@ public function handleKernelRequestEventDataProvider(): \Generator UserDataBag::createFromUserIpAddress('127.0.0.1'), ]; + yield 'request.clientIp IS NULL' => [ + new RequestEvent( + $this->createMock(HttpKernelInterface::class), + new Request(), + HttpKernelInterface::MASTER_REQUEST + ), + $this->getMockedClientWithOptions(new Options(['send_default_pii' => true])), + null, + new UserDataBag(), + ]; + } + + /** + * @return \Generator + */ + public function handleKernelRequestEventForSymfonyVersionLowerThan54DataProvider(): \Generator + { + if (version_compare(Kernel::VERSION, '5.4.0', '>=')) { + return; + } + yield 'token.authenticated = FALSE' => [ new RequestEvent( $this->createMock(HttpKernelInterface::class), @@ -142,37 +163,43 @@ public function handleKernelRequestEventDataProvider(): \Generator UserDataBag::createFromUserIpAddress('127.0.0.1'), ]; - yield 'token.authenticated = TRUE && token.user INSTANCEOF UserInterface && getUserIdentifier() method EXISTS' => [ + yield 'token.authenticated = TRUE && token.user INSTANCEOF string' => [ new RequestEvent( $this->createMock(HttpKernelInterface::class), new Request([], [], [], [], [], ['REMOTE_ADDR' => '127.0.0.1']), HttpKernelInterface::MASTER_REQUEST ), $this->getMockedClientWithOptions(new Options(['send_default_pii' => true])), - new AuthenticatedTokenStub(new UserWithIdentifierStub()), + new AuthenticatedTokenStub('foo_user'), new UserDataBag(null, null, '127.0.0.1', 'foo_user'), ]; - yield 'request.clientIp IS NULL' => [ + yield 'token.authenticated = TRUE && token.user INSTANCEOF UserInterface && getUserIdentifier() method DOES NOT EXISTS' => [ new RequestEvent( $this->createMock(HttpKernelInterface::class), - new Request(), + new Request([], [], [], [], [], ['REMOTE_ADDR' => '127.0.0.1']), HttpKernelInterface::MASTER_REQUEST ), $this->getMockedClientWithOptions(new Options(['send_default_pii' => true])), - null, - new UserDataBag(), + new AuthenticatedTokenStub(new UserWithoutIdentifierStub()), + new UserDataBag(null, null, '127.0.0.1', 'foo_user'), ]; - } - /** - * @return \Generator - */ - public function handleKernelRequestEventForSymfonyVersionLowerThan54DataProvider(): \Generator - { - if (version_compare(Kernel::VERSION, '5.4.0', '>=')) { - return; - } + yield 'token.authenticated = TRUE && token.user INSTANCEOF object && __toString() method EXISTS' => [ + new RequestEvent( + $this->createMock(HttpKernelInterface::class), + new Request([], [], [], [], [], ['REMOTE_ADDR' => '127.0.0.1']), + HttpKernelInterface::MASTER_REQUEST + ), + $this->getMockedClientWithOptions(new Options(['send_default_pii' => true])), + new AuthenticatedTokenStub(new class() implements \Stringable { + public function __toString(): string + { + return 'foo_user'; + } + }), + new UserDataBag(null, null, '127.0.0.1', 'foo_user'), + ]; yield 'token.authenticated = TRUE && token INSTANCEOF SwitchUserToken' => [ new RequestEvent( @@ -199,12 +226,45 @@ public function handleKernelRequestEventForSymfonyVersionLowerThan54DataProvider /** * @return \Generator */ - public function handleKernelRequestEventForSymfonyVersionGreaterThan54DataProvider(): \Generator + public function handleKernelRequestEventForSymfonyVersionEqualTo54DataProvider(): \Generator { - if (version_compare(Kernel::VERSION, '5.4.0', '<')) { + if (version_compare(Kernel::VERSION, '5.4.0', '!=')) { return; } + yield 'token.authenticated = FALSE' => [ + new RequestEvent( + $this->createMock(HttpKernelInterface::class), + new Request([], [], [], [], [], ['REMOTE_ADDR' => '127.0.0.1']), + HttpKernelInterface::MASTER_REQUEST + ), + $this->getMockedClientWithOptions(new Options(['send_default_pii' => true])), + new UnauthenticatedTokenStub(), + UserDataBag::createFromUserIpAddress('127.0.0.1'), + ]; + + yield 'token.authenticated = TRUE && token.user IS NULL' => [ + new RequestEvent( + $this->createMock(HttpKernelInterface::class), + new Request([], [], [], [], [], ['REMOTE_ADDR' => '127.0.0.1']), + HttpKernelInterface::MASTER_REQUEST + ), + $this->getMockedClientWithOptions(new Options(['send_default_pii' => true])), + new AuthenticatedTokenStub(null), + UserDataBag::createFromUserIpAddress('127.0.0.1'), + ]; + + yield 'token.authenticated = TRUE && token.user INSTANCEOF UserInterface && getUserIdentifier() method EXISTS' => [ + new RequestEvent( + $this->createMock(HttpKernelInterface::class), + new Request([], [], [], [], [], ['REMOTE_ADDR' => '127.0.0.1']), + HttpKernelInterface::MASTER_REQUEST + ), + $this->getMockedClientWithOptions(new Options(['send_default_pii' => true])), + new AuthenticatedTokenStub(new UserWithIdentifierStub()), + new UserDataBag(null, null, '127.0.0.1', 'foo_user'), + ]; + yield 'token.authenticated = TRUE && token INSTANCEOF SwitchUserToken' => [ new RequestEvent( $this->createMock(HttpKernelInterface::class), @@ -229,48 +289,52 @@ public function handleKernelRequestEventForSymfonyVersionGreaterThan54DataProvid /** * @return \Generator */ - public function handleKernelRequestEventForSymfonyVersionLowerThan60DataProvider(): \Generator + public function handleKernelRequestEventForSymfonyVersionGreaterThan54DataProvider(): \Generator { - if (version_compare(Kernel::VERSION, '6.0.0', '>=')) { + if (version_compare(Kernel::VERSION, '5.4.0', '<')) { return; } - yield 'token.authenticated = TRUE && token.user INSTANCEOF string' => [ + yield 'token.user IS NULL' => [ new RequestEvent( $this->createMock(HttpKernelInterface::class), new Request([], [], [], [], [], ['REMOTE_ADDR' => '127.0.0.1']), HttpKernelInterface::MASTER_REQUEST ), $this->getMockedClientWithOptions(new Options(['send_default_pii' => true])), - new AuthenticatedTokenStub('foo_user'), - new UserDataBag(null, null, '127.0.0.1', 'foo_user'), + new AuthenticatedTokenStub(null), + UserDataBag::createFromUserIpAddress('127.0.0.1'), ]; - yield 'token.authenticated = TRUE && token.user INSTANCEOF UserInterface && getUserIdentifier() method DOES NOT EXISTS' => [ + yield 'token.user INSTANCEOF UserInterface' => [ new RequestEvent( $this->createMock(HttpKernelInterface::class), new Request([], [], [], [], [], ['REMOTE_ADDR' => '127.0.0.1']), HttpKernelInterface::MASTER_REQUEST ), $this->getMockedClientWithOptions(new Options(['send_default_pii' => true])), - new AuthenticatedTokenStub(new UserWithoutIdentifierStub()), + new AuthenticatedTokenStub(new UserWithIdentifierStub()), new UserDataBag(null, null, '127.0.0.1', 'foo_user'), ]; - yield 'token.authenticated = TRUE && token.user INSTANCEOF object && __toString() method EXISTS' => [ + yield 'token INSTANCEOF SwitchUserToken' => [ new RequestEvent( $this->createMock(HttpKernelInterface::class), new Request([], [], [], [], [], ['REMOTE_ADDR' => '127.0.0.1']), HttpKernelInterface::MASTER_REQUEST ), $this->getMockedClientWithOptions(new Options(['send_default_pii' => true])), - new AuthenticatedTokenStub(new class() implements \Stringable { - public function __toString(): string - { - return 'foo_user'; - } - }), - new UserDataBag(null, null, '127.0.0.1', 'foo_user'), + new SwitchUserToken( + new UserWithIdentifierStub(), + 'main', + ['ROLE_USER'], + new AuthenticatedTokenStub(new UserWithIdentifierStub('foo_user_impersonator')) + ), + UserDataBag::createFromArray([ + 'ip_address' => '127.0.0.1', + 'username' => 'foo_user', + 'impersonator_username' => 'foo_user_impersonator', + ]), ]; }