summaryrefslogtreecommitdiff
path: root/tests/Unit/Helpers/AuthenticatorTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Unit/Helpers/AuthenticatorTest.php')
-rw-r--r--tests/Unit/Helpers/AuthenticatorTest.php55
1 files changed, 55 insertions, 0 deletions
diff --git a/tests/Unit/Helpers/AuthenticatorTest.php b/tests/Unit/Helpers/AuthenticatorTest.php
new file mode 100644
index 00000000..085887c4
--- /dev/null
+++ b/tests/Unit/Helpers/AuthenticatorTest.php
@@ -0,0 +1,55 @@
+<?php
+
+namespace Engelsystem\Test\Unit\Helpers;
+
+use Engelsystem\Helpers\Authenticator;
+use Engelsystem\Models\User\User;
+use Engelsystem\Test\Unit\Helpers\Stub\UserModelImplementation;
+use Engelsystem\Test\Unit\ServiceProviderTest;
+use PHPUnit\Framework\MockObject\MockObject;
+use Symfony\Component\HttpFoundation\Session\Session;
+
+class AuthenticatorTest extends ServiceProviderTest
+{
+ /**
+ * @covers \Engelsystem\Helpers\Authenticator::__construct(
+ * @covers \Engelsystem\Helpers\Authenticator::user
+ */
+ public function testUser()
+ {
+ /** @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);
+
+ $session->expects($this->exactly(3))
+ ->method('get')
+ ->with('uid')
+ ->willReturnOnConsecutiveCalls(
+ null,
+ 42,
+ 1337
+ );
+
+ $auth = new Authenticator($session, $userRepository);
+
+ // Not in session
+ $this->assertEquals(null, $auth->user());
+
+ // Unknown user
+ UserModelImplementation::$id = 42;
+ $this->assertEquals(null, $auth->user());
+
+ // User found
+ UserModelImplementation::$id = 1337;
+ UserModelImplementation::$user = $user;
+ $this->assertEquals($user, $auth->user());
+
+ // User cached
+ UserModelImplementation::$id = null;
+ UserModelImplementation::$user = null;
+ $this->assertEquals($user, $auth->user());
+ }
+}