Adjust join token expiry for event dates
This commit is contained in:
@@ -11,21 +11,90 @@ class EventJoinTokenTtlPolicyTest extends TenantTestCase
|
||||
{
|
||||
Carbon::setTestNow(Carbon::parse('2026-01-05 12:00:00'));
|
||||
|
||||
$eventDate = Carbon::parse('2026-06-15');
|
||||
|
||||
$event = Event::factory()
|
||||
->for($this->tenant)
|
||||
->create([
|
||||
'name' => ['de' => 'Token TTL Test', 'en' => 'Token TTL Test'],
|
||||
'slug' => 'token-ttl-test',
|
||||
'date' => $eventDate,
|
||||
]);
|
||||
|
||||
$response = $this->authenticatedRequest('POST', "/api/v1/tenant/events/{$event->slug}/join-tokens");
|
||||
|
||||
$response->assertCreated();
|
||||
|
||||
$expectedExpiry = now()->addDays(7)->toIso8601String();
|
||||
$expectedExpiry = $eventDate->copy()
|
||||
->endOfDay()
|
||||
->addDays(7)
|
||||
->toIso8601String();
|
||||
|
||||
$this->assertSame($expectedExpiry, $response->json('data.expires_at'));
|
||||
|
||||
Carbon::setTestNow();
|
||||
}
|
||||
|
||||
public function test_join_tokens_extend_when_event_date_moves_forward(): void
|
||||
{
|
||||
Carbon::setTestNow(Carbon::parse('2026-01-05 12:00:00'));
|
||||
|
||||
$event = Event::factory()
|
||||
->for($this->tenant)
|
||||
->create([
|
||||
'name' => ['de' => 'Token Update Test', 'en' => 'Token Update Test'],
|
||||
'slug' => 'token-update-test',
|
||||
'date' => Carbon::parse('2026-01-10'),
|
||||
]);
|
||||
|
||||
$token = $event->joinTokens()->firstOrFail();
|
||||
|
||||
$newDate = Carbon::parse('2026-04-20');
|
||||
$response = $this->authenticatedRequest('PUT', "/api/v1/tenant/events/{$event->slug}", [
|
||||
'event_date' => $newDate->toDateString(),
|
||||
]);
|
||||
|
||||
$response->assertOk();
|
||||
|
||||
$token->refresh();
|
||||
|
||||
$expectedExpiry = $newDate->copy()
|
||||
->endOfDay()
|
||||
->addDays(7);
|
||||
|
||||
$this->assertSame(
|
||||
$expectedExpiry->toIso8601String(),
|
||||
$token->expires_at?->toIso8601String()
|
||||
);
|
||||
|
||||
Carbon::setTestNow();
|
||||
}
|
||||
|
||||
public function test_join_token_expiry_must_not_be_before_event_minimum(): void
|
||||
{
|
||||
Carbon::setTestNow(Carbon::parse('2026-01-05 12:00:00'));
|
||||
|
||||
$eventDate = Carbon::parse('2026-06-15');
|
||||
|
||||
$event = Event::factory()
|
||||
->for($this->tenant)
|
||||
->create([
|
||||
'name' => ['de' => 'Token Expiry Guard', 'en' => 'Token Expiry Guard'],
|
||||
'slug' => 'token-expiry-guard',
|
||||
'date' => $eventDate,
|
||||
]);
|
||||
|
||||
$invalidExpiry = $eventDate->copy()
|
||||
->endOfDay()
|
||||
->addDay();
|
||||
|
||||
$response = $this->authenticatedRequest('POST', "/api/v1/tenant/events/{$event->slug}/join-tokens", [
|
||||
'expires_at' => $invalidExpiry->toDateTimeString(),
|
||||
]);
|
||||
|
||||
$response->assertUnprocessable();
|
||||
$response->assertInvalid(['expires_at']);
|
||||
|
||||
Carbon::setTestNow();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user