diff options
Diffstat (limited to 'tests/Unit/Helpers/AuthenticatorTest.php')
-rw-r--r-- | tests/Unit/Helpers/AuthenticatorTest.php | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/tests/Unit/Helpers/AuthenticatorTest.php b/tests/Unit/Helpers/AuthenticatorTest.php index 085887c4..2c03b968 100644 --- a/tests/Unit/Helpers/AuthenticatorTest.php +++ b/tests/Unit/Helpers/AuthenticatorTest.php @@ -7,6 +7,7 @@ use Engelsystem\Models\User\User; use Engelsystem\Test\Unit\Helpers\Stub\UserModelImplementation; use Engelsystem\Test\Unit\ServiceProviderTest; use PHPUnit\Framework\MockObject\MockObject; +use Psr\Http\Message\ServerRequestInterface; use Symfony\Component\HttpFoundation\Session\Session; class AuthenticatorTest extends ServiceProviderTest @@ -17,6 +18,8 @@ class AuthenticatorTest extends ServiceProviderTest */ public function testUser() { + /** @var ServerRequestInterface|MockObject $request */ + $request = $this->getMockForAbstractClass(ServerRequestInterface::class); /** @var Session|MockObject $session */ $session = $this->createMock(Session::class); /** @var UserModelImplementation|MockObject $userRepository */ @@ -33,7 +36,7 @@ class AuthenticatorTest extends ServiceProviderTest 1337 ); - $auth = new Authenticator($session, $userRepository); + $auth = new Authenticator($request, $session, $userRepository); // Not in session $this->assertEquals(null, $auth->user()); @@ -52,4 +55,48 @@ class AuthenticatorTest extends ServiceProviderTest UserModelImplementation::$user = null; $this->assertEquals($user, $auth->user()); } + + /** + * @covers \Engelsystem\Helpers\Authenticator::apiUser + */ + public function testApiUser() + { + /** @var ServerRequestInterface|MockObject $request */ + $request = $this->getMockForAbstractClass(ServerRequestInterface::class); + /** @var Session|MockObject $session */ + $session = $this->createMock(Session::class); + /** @var UserModelImplementation|MockObject $userRepository */ + $userRepository = new UserModelImplementation(); + /** @var User|MockObject $user */ + $user = $this->createMock(User::class); + + $request->expects($this->exactly(3)) + ->method('getQueryParams') + ->with() + ->willReturnOnConsecutiveCalls( + [], + ['api_key' => 'iMaNot3xiSt1nGAp1Key!'], + ['foo_key' => 'SomeSecretApiKey'] + ); + + /** @var Authenticator|MockObject $auth */ + $auth = new Authenticator($request, $session, $userRepository); + + // No key + $this->assertEquals(null, $auth->apiUser()); + + // Unknown user + UserModelImplementation::$apiKey = 'iMaNot3xiSt1nGAp1Key!'; + $this->assertEquals(null, $auth->apiUser()); + + // User found + UserModelImplementation::$apiKey = 'SomeSecretApiKey'; + UserModelImplementation::$user = $user; + $this->assertEquals($user, $auth->apiUser('foo_key')); + + // User cached + UserModelImplementation::$apiKey = null; + UserModelImplementation::$user = null; + $this->assertEquals($user, $auth->apiUser()); + } } |