49 lines
1.2 KiB
PHP
49 lines
1.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Tests\State;
|
|
|
|
use ApiPlatform\Metadata\Operation;
|
|
use App\Entity\User;
|
|
use App\State\MeProvider;
|
|
use PHPUnit\Framework\TestCase;
|
|
use Symfony\Bundle\SecurityBundle\Security;
|
|
use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
|
|
|
|
/**
|
|
* @internal
|
|
*/
|
|
final class MeProviderTest extends TestCase
|
|
{
|
|
public function testProvideReturnUser(): void
|
|
{
|
|
$user = new User();
|
|
|
|
$security = $this->createStub(Security::class);
|
|
$security->method('getUser')->willReturn($user);
|
|
|
|
$provider = new MeProvider($security);
|
|
|
|
$result = $provider->provide($this->createStub(Operation::class));
|
|
|
|
self::assertSame($user, $result);
|
|
self::assertInstanceOf(User::class, $result);
|
|
}
|
|
|
|
public function testProvideThrowAccessDeniedException(): void
|
|
{
|
|
$user = null;
|
|
|
|
$security = $this->createStub(Security::class);
|
|
$security->method('getUser')->willReturn($user);
|
|
|
|
$provider = new MeProvider($security);
|
|
|
|
$this->expectException(AccessDeniedException::class);
|
|
$this->expectExceptionMessage('User not authenticated.');
|
|
|
|
$provider->provide($this->createStub(Operation::class));
|
|
}
|
|
}
|