Files
osint/tests/Unit/Osint/RunnerRegistryTest.php
T
cedry2k1992andClaude Sonnet 5 dc4388eabf Add OpenCorporates collector for org targets, gated on an API token
Closes the last coverage gap for org (person remains intentionally
unaddressed — no good free/non-scraping option exists). Unlike the
other 8 sources, OpenCorporates now requires an API token even on its
free tier (confirmed: keyless request gets 401). RunnerRegistry::has()
checks services.opencorporates.token is configured before exposing the
source as runnable, so it degrades to "not yet integrated" in the UI
rather than a broken Run button, until OPENCORPORATES_API_TOKEN is set.

Also fixes a real bug hit while building this: a RunnerRegistry::REQUIRES
class constant mapping source key to a closure crashed on file load
(PHP class constants can't hold closures) — inlined the one check
instead of building an abstraction for a single case.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-20 12:10:27 +03:00

35 lines
980 B
PHP

<?php
namespace Tests\Unit\Osint;
use App\Osint\RunnerRegistry;
use Tests\TestCase;
class RunnerRegistryTest extends TestCase
{
public function test_opencorporates_is_hidden_without_a_configured_token(): void
{
config(['services.opencorporates.token' => null]);
$this->assertFalse((new RunnerRegistry)->has('opencorporates'));
}
public function test_opencorporates_is_available_once_a_token_is_configured(): void
{
config(['services.opencorporates.token' => 'test-token']);
$this->assertTrue((new RunnerRegistry)->has('opencorporates'));
}
public function test_unconditional_runners_are_always_available(): void
{
$this->assertTrue((new RunnerRegistry)->has('sherlock'));
$this->assertTrue((new RunnerRegistry)->has('dns'));
}
public function test_unknown_source_key_is_never_available(): void
{
$this->assertFalse((new RunnerRegistry)->has('not-a-real-source'));
}
}