utc('2026-07-31T12:00:00'); $expiresAt = $this->utc('2026-08-07T12:00:00'); $session = new Session( token: 'session-token', user: $user, createdAt: $createdAt, expiresAt: $expiresAt, ); $this->assertSame('session-token', $session->getToken()); $this->assertSame($user, $session->getUser()); $this->assertSame($createdAt, $session->getCreatedAt()); $this->assertSame($expiresAt, $session->getExpiresAt()); } public function test_it_expires_at_the_expiry_time(): void { $expiresAt = $this->utc('2026-08-07T12:00:00'); $session = new Session( token: 'session-token', user: new User( id: 7, email: new EmailAddress('user@example.com'), ), createdAt: $this->utc('2026-07-31T12:00:00'), expiresAt: $expiresAt, ); $this->assertFalse( $session->isExpired($expiresAt->modify('-1 second')), ); $this->assertTrue($session->isExpired($expiresAt)); $this->assertTrue( $session->isExpired($expiresAt->modify('+1 second')), ); } private function utc(string $time): DateTimeImmutable { return new DateTimeImmutable($time, new DateTimeZone('UTC')); } }