diff options
Diffstat (limited to 'tests/Unit/Helpers/AuthenticatorTest.php')
-rw-r--r-- | tests/Unit/Helpers/AuthenticatorTest.php | 55 |
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()); + } +} |