create(['email' => 'lisa@test.nl']); $response = $this->postJson('/api/v1/public/check-email', [ 'email' => 'lisa@test.nl', ]); $response->assertOk(); $response->assertJson(['exists' => true]); } public function test_unknown_email_returns_exists_false(): void { $response = $this->postJson('/api/v1/public/check-email', [ 'email' => 'nobody@test.nl', ]); $response->assertOk(); $response->assertJson(['exists' => false]); } public function test_email_check_is_case_insensitive(): void { User::factory()->create(['email' => 'lisa@test.nl']); $response = $this->postJson('/api/v1/public/check-email', [ 'email' => 'LISA@TEST.NL', ]); $response->assertOk(); $response->assertJson(['exists' => true]); } public function test_rate_limiting_returns_429(): void { for ($i = 0; $i < 10; $i++) { $this->postJson('/api/v1/public/check-email', [ 'email' => 'test@test.nl', ])->assertOk(); } $response = $this->postJson('/api/v1/public/check-email', [ 'email' => 'test@test.nl', ]); $response->assertStatus(429); } public function test_invalid_email_returns_422(): void { $response = $this->postJson('/api/v1/public/check-email', [ 'email' => 'not-an-email', ]); $response->assertStatus(422); $response->assertJsonValidationErrors('email'); } public function test_missing_email_returns_422(): void { $response = $this->postJson('/api/v1/public/check-email', []); $response->assertStatus(422); $response->assertJsonValidationErrors('email'); } }