From 30e97864c8cc0e4b2d1d3bcc9b8a4aecb2847b84 Mon Sep 17 00:00:00 2001 From: yisroel Date: Wed, 6 May 2026 15:15:46 +0300 Subject: [PATCH] test Logout use case 2 cases: existing token's session gets removed; unknown token is a no-op (deleteByToken stays idempotent). --- .../tests/Unit/Auth/UseCases/LogoutTest.php | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 backend/tests/Unit/Auth/UseCases/LogoutTest.php 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')); + } +}