Files
osint/tests/Feature/SearchTest.php
T
cedry2k1992andClaude Sonnet 5 873699e23e Initial commit: Laravel OSINT platform
Multi-user OSINT investigation tool with owner-controlled per-user and
per-group access grants. Includes Sherlock, theHarvester, crt.sh, WHOIS,
and ip-api.com collectors wired through a pluggable Runner/queue pipeline,
investigation search, and printable/CSV/JSON reporting.

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

54 lines
1.9 KiB
PHP

<?php
namespace Tests\Feature;
use App\Models\Investigation;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class SearchTest extends TestCase
{
use RefreshDatabase;
public function test_finds_accessible_investigation_by_name(): void
{
$user = User::factory()->create();
$mine = Investigation::factory()->for($user, 'owner')->create(['name' => 'Operation Nightingale']);
$other = Investigation::factory()->create(['name' => 'Operation Nightowl']);
$response = $this->actingAs($user)->get(route('search.index', ['q' => 'Nightingale']));
$response->assertOk();
$response->assertSee('Operation Nightingale');
$response->assertDontSee('Operation Nightowl');
}
public function test_finds_target_by_value_only_within_accessible_investigations(): void
{
$user = User::factory()->create();
$mine = Investigation::factory()->for($user, 'owner')->create();
$mine->targets()->create(['type' => 'username', 'value' => 'unique_search_handle', 'created_by' => $user->id]);
$stranger = User::factory()->create();
$notMine = Investigation::factory()->for($stranger, 'owner')->create();
$notMine->targets()->create(['type' => 'username', 'value' => 'unique_search_handle_2', 'created_by' => $stranger->id]);
$response = $this->actingAs($user)->get(route('search.index', ['q' => 'unique_search_handle']));
$response->assertOk();
$response->assertSee('unique_search_handle', false);
$response->assertDontSee('unique_search_handle_2');
}
public function test_empty_query_shows_no_results_section(): void
{
$user = User::factory()->create();
$response = $this->actingAs($user)->get(route('search.index'));
$response->assertOk();
$response->assertDontSee(__('Investigations') . ' (');
}
}