get() ->filter(fn (Client $client) => $client->hasGrantType('personal_access')) ->count(); } public function test_ensure_command_creates_the_personal_access_client_once(): void { $this->assertSame(0, $this->personalClients()); $this->artisan('passport:ensure-personal-client')->assertSuccessful(); $this->artisan('passport:ensure-personal-client')->assertSuccessful(); $this->assertSame(1, $this->personalClients()); } public function test_users_can_create_personal_access_tokens_once_the_client_exists(): void { $this->artisan('passport:ensure-personal-client')->assertSuccessful(); $user = User::factory()->approved()->create(); $response = $this->actingAs($user)->postJson('/web-api/personal-access-tokens', [ 'name' => 'MCP TaskStream', 'scopes' => ['users:read'], ]); $response->assertCreated()->assertJsonStructure(['access_token']); $this->actingAs($user)->getJson('/web-api/personal-access-tokens') ->assertOk() ->assertJsonFragment(['name' => 'MCP TaskStream']); } }