null]); $target = new Target(['type' => 'org', 'value' => 'Acme Inc']); $this->expectException(RunnerException::class); $this->expectExceptionMessage('API token not configured'); (new OpenCorporatesRunner)->run($target); } public function test_parses_search_results_into_matches(): void { config(['services.opencorporates.token' => 'test-token']); Http::fake([ 'api.opencorporates.com/*' => Http::response([ 'results' => [ 'companies' => [ [ 'company' => [ 'name' => 'Acme Inc', 'jurisdiction_code' => 'us_de', 'current_status' => 'Active', 'opencorporates_url' => 'https://opencorporates.com/companies/us_de/123', ], ], ], ], ]), ]); $target = new Target(['type' => 'org', 'value' => 'Acme Inc']); $result = (new OpenCorporatesRunner)->run($target); $this->assertCount(1, $result->raw['matches']); $this->assertSame('Acme Inc (us_de, Active)', $result->raw['matches'][0]['name']); $this->assertSame('https://opencorporates.com/companies/us_de/123', $result->raw['matches'][0]['url']); $this->assertStringContainsString('Found 1 company', $result->summary); } public function test_reports_no_companies_found(): void { config(['services.opencorporates.token' => 'test-token']); Http::fake([ 'api.opencorporates.com/*' => Http::response(['results' => ['companies' => []]]), ]); $target = new Target(['type' => 'org', 'value' => 'Nonexistent Org XYZ']); $result = (new OpenCorporatesRunner)->run($target); $this->assertSame([], $result->raw['matches']); $this->assertStringContainsString('No companies found', $result->summary); } public function test_rejects_non_org_targets(): void { config(['services.opencorporates.token' => 'test-token']); $target = new Target(['type' => 'domain', 'value' => 'example.com']); $this->expectException(RunnerException::class); (new OpenCorporatesRunner)->run($target); } public function test_throws_on_http_failure(): void { config(['services.opencorporates.token' => 'test-token']); Http::fake(['api.opencorporates.com/*' => Http::response('', 401)]); $target = new Target(['type' => 'org', 'value' => 'Acme Inc']); $this->expectException(RunnerException::class); (new OpenCorporatesRunner)->run($target); } }