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 0d8e254
Showing 1 changed file with 97 additions and 33 deletions.
130 changes: 97 additions & 33 deletions tests/EventListener/RequestListenerTest.php
Expand Up @@ -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
{
Expand Down Expand Up @@ -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<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 +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<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 All @@ -199,12 +226,45 @@ public function handleKernelRequestEventForSymfonyVersionLowerThan54DataProvider
/**
* @return \Generator<mixed>
*/
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),
Expand All @@ -229,48 +289,52 @@ public function handleKernelRequestEventForSymfonyVersionGreaterThan54DataProvid
/**
* @return \Generator<mixed>
*/
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',
]),
];
}

Expand Down

0 comments on commit 0d8e254

Please sign in to comment.