Skip to content

Commit

Permalink
Rearrange test cases to make clearer which Symfony versions they belo…
Browse files Browse the repository at this point in the history
…ng to
  • Loading branch information
ste93cry committed Jul 13, 2022
1 parent eb454a8 commit 01350f0
Showing 1 changed file with 62 additions and 51 deletions.
113 changes: 62 additions & 51 deletions tests/EventListener/RequestListenerTest.php
Expand Up @@ -54,7 +54,6 @@ protected function setUp(): void
* @dataProvider handleKernelRequestEventDataProvider
* @dataProvider handleKernelRequestEventForSymfonyVersionLowerThan54DataProvider
* @dataProvider handleKernelRequestEventForSymfonyVersionGreaterThan54DataProvider
* @dataProvider handleKernelRequestEventForSymfonyVersionLowerThan60DataProvider
*/
public function testHandleKernelRequestEvent(RequestEvent $requestEvent, ?ClientInterface $client, ?TokenInterface $token, ?UserDataBag $expectedUser): void
{
Expand Down Expand Up @@ -120,6 +119,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<mixed>
*/
public function handleKernelRequestEventForSymfonyVersionLowerThan54DataProvider(): \Generator
{
if (version_compare(Kernel::VERSION, '5.4.0', '>=')) {
return;
}

yield 'token.authenticated = FALSE' => [
new RequestEvent(
$this->createMock(HttpKernelInterface::class),
Expand All @@ -142,37 +162,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<mixed>
*/
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(
Expand Down Expand Up @@ -205,72 +231,57 @@ public function handleKernelRequestEventForSymfonyVersionGreaterThan54DataProvid
return;
}

yield 'token.authenticated = TRUE && token INSTANCEOF SwitchUserToken' => [
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 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',
]),
new UnauthenticatedTokenStub(),
UserDataBag::createFromUserIpAddress('127.0.0.1'),
];
}

/**
* @return \Generator<mixed>
*/
public function handleKernelRequestEventForSymfonyVersionLowerThan60DataProvider(): \Generator
{
if (version_compare(Kernel::VERSION, '6.0.0', '>=')) {
return;
}

yield 'token.authenticated = TRUE && token.user INSTANCEOF string' => [
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('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.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 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.authenticated = TRUE && 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',
]),
];
}

Expand Down

0 comments on commit 01350f0

Please sign in to comment.