engelsystem/tests/Unit/Controllers/Api/UsesAuthTest.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());
}
}