73 lines
1.9 KiB
PHP
73 lines
1.9 KiB
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace Engelsystem\Test\Unit\Controllers\Api;
|
||
|
|
||
|
use Engelsystem\Helpers\Authenticator;
|
||
|
use Engelsystem\Http\Response;
|
||
|
use Engelsystem\Models\User\User;
|
||
|
use Engelsystem\Test\Unit\Controllers\Api\Stub\UsesAuthImplementation;
|
||
|
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||
|
use PHPUnit\Framework\MockObject\MockObject;
|
||
|
|
||
|
class UsesAuthTest extends ApiBaseControllerTest
|
||
|
{
|
||
|
/**
|
||
|
* @covers \Engelsystem\Controllers\Api\UsesAuth::getUser
|
||
|
*/
|
||
|
public function testGetUserNoAuthNotFound(): void
|
||
|
{
|
||
|
$usesAuth = $this->createInstance();
|
||
|
|
||
|
$this->expectException(ModelNotFoundException::class);
|
||
|
$usesAuth->user('self');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers \Engelsystem\Controllers\Api\UsesAuth::getUser
|
||
|
*/
|
||
|
public function testGetUserNotFound(): void
|
||
|
{
|
||
|
$usesAuth = $this->createInstance();
|
||
|
|
||
|
$this->expectException(ModelNotFoundException::class);
|
||
|
$usesAuth->user(42);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers \Engelsystem\Controllers\Api\UsesAuth::getUser
|
||
|
*/
|
||
|
public function testGetUserWithoutAuth(): void
|
||
|
{
|
||
|
$user = User::factory()->create();
|
||
|
|
||
|
$usesAuth = $this->createInstance();
|
||
|
|
||
|
$this->assertInstanceOf(User::class, $usesAuth->user($user->id));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @covers \Engelsystem\Controllers\Api\UsesAuth::setAuth
|
||
|
* @covers \Engelsystem\Controllers\Api\UsesAuth::getUser
|
||
|
*/
|
||
|
public function testGetUser(): void
|
||
|
{
|
||
|
$user = User::factory()->create();
|
||
|
|
||
|
/** @var Authenticator|MockObject $auth */
|
||
|
$auth = $this->createMock(Authenticator::class);
|
||
|
$this->setExpects($auth, 'user', null, $user);
|
||
|
|
||
|
$usesAuth = $this->createInstance();
|
||
|
$usesAuth->setAuth($auth);
|
||
|
|
||
|
$this->assertEquals($user, $usesAuth->user('self'));
|
||
|
}
|
||
|
|
||
|
protected function createInstance(): object
|
||
|
{
|
||
|
return new UsesAuthImplementation(new Response());
|
||
|
}
|
||
|
}
|