create(); $token = $user->createToken('test')->plainTextToken; $readResponses = collect(range(1, 25))->map( fn () => $this->withHeader('Authorization', "Bearer {$token}")->getJson('/api/v1/companies') ); expect($readResponses->every(fn ($response) => $response->status() !== 429))->toBeTrue(); $writeResponses = collect(range(1, 25))->map( fn () => $this->withHeader('Authorization', "Bearer {$token}")->postJson('/api/v1/bookings', []) ); expect($writeResponses->contains(fn ($response) => $response->status() === 429))->toBeTrue(); }); test('a rate-limited api request gets a 429 JSON envelope', function () { $user = User::factory()->create(); $token = $user->createToken('test')->plainTextToken; $responses = collect(range(1, 25))->map( fn () => $this->withHeader('Authorization', "Bearer {$token}")->postJson('/api/v1/bookings', []) ); $limited = $responses->first(fn ($response) => $response->status() === 429); expect($limited)->not->toBeNull(); $limited->assertJsonStructure(['message']); });