Goal-Calibration/tests/Unit/Auth/FakeSessionRepositoryTest.php

68 lines
1.9 KiB
PHP

<?php
namespace Tests\Unit\Auth;
use App\Auth\CreateSessionDto;
use App\Auth\Session;
use DateTimeImmutable;
use PHPUnit\Framework\TestCase;
use Tests\Fakes\FakeSessionRepository;
class FakeSessionRepositoryTest extends TestCase
{
private FakeSessionRepository $sessionRepo;
public function setUp(): void
{
$this->sessionRepo = new FakeSessionRepository();
}
public function test_create_and_find_by_token(): void
{
$this->sessionRepo->create(new CreateSessionDto(
token: 'abc123',
userId: 0,
createdAt: new DateTimeImmutable('2025-01-01'),
expiresAt: new DateTimeImmutable('2025-01-08'),
));
$session = $this->sessionRepo->findByToken('abc123');
$this->assertInstanceOf(Session::class, $session);
$this->assertEquals('abc123', $session->getToken());
$this->assertEquals(0, $session->getUserId());
}
public function test_find_by_token_returns_null_when_missing(): void
{
$this->assertNull($this->sessionRepo->findByToken('nope'));
}
public function test_find_by_token_returns_fresh_instance(): void
{
$created = $this->sessionRepo->create(new CreateSessionDto(
token: 'abc123',
userId: 0,
createdAt: new DateTimeImmutable('2025-01-01'),
expiresAt: new DateTimeImmutable('2025-01-08'),
));
$fetched = $this->sessionRepo->findByToken('abc123');
$this->assertNotSame($created, $fetched);
}
public function test_delete_by_token(): void
{
$this->sessionRepo->create(new CreateSessionDto(
token: 'abc123',
userId: 0,
createdAt: new DateTimeImmutable('2025-01-01'),
expiresAt: new DateTimeImmutable('2025-01-08'),
));
$this->sessionRepo->deleteByToken('abc123');
$this->assertNull($this->sessionRepo->findByToken('abc123'));
}
}