diff --git a/backend/tests/Unit/Auth/UseCases/LogoutTest.php b/backend/tests/Unit/Auth/UseCases/LogoutTest.php new file mode 100644 index 0000000..c98c582 --- /dev/null +++ b/backend/tests/Unit/Auth/UseCases/LogoutTest.php @@ -0,0 +1,58 @@ +now = new DateTimeImmutable( + '2026-05-06T12:00:00', + new DateTimeZone('UTC') + ); + $this->sessionRepo = new FakeSessionRepository; + $this->useCase = new Logout($this->sessionRepo); + } + + public function test_existing_token_session_is_removed(): void + { + $user = new User( + id: 7, + email: new EmailAddress('user@example.com'), + passwordHash: 'hashed:irrelevant', + isAdmin: false, + ); + $this->sessionRepo->create(new CreateSessionDto( + token: 'token-abc', + user: $user, + createdAt: $this->now, + expiresAt: $this->now->modify('+7 days'), + )); + + $this->useCase->execute('token-abc'); + + $this->assertNull($this->sessionRepo->findByToken('token-abc')); + } + + public function test_unknown_token_does_not_throw(): void + { + $this->useCase->execute('unknown-token'); + + $this->assertNull($this->sessionRepo->findByToken('unknown-token')); + } +}