You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.7 KiB
PHP
56 lines
1.7 KiB
PHP
<?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());
|
|
}
|
|
}
|