Files
toolbox/tests/Feature/HostAccessTest.php
T
2026-08-12 18:00:09 +08:00

66 lines
1.6 KiB
PHP

<?php
namespace Tests\Feature;
use Tests\TestCase;
class HostAccessTest extends TestCase
{
protected function setUp(): void
{
parent::setUp();
config(['toolbox.admin_host' => 'toolbox.local']);
}
public function test_admin_host_can_open_the_toolbox_menu(): void
{
$response = $this->get('http://toolbox.local/');
$response->assertOk();
$response->assertSee('<admin-dashboard>', false);
}
public function test_ip_host_gets_the_standalone_production_diagnosis_page(): void
{
$response = $this->get('http://192.168.1.20/production-diagnosis');
$response->assertOk();
$response->assertSee('<production-diagnosis>', false);
$response->assertDontSee('<admin-dashboard>', false);
}
public function test_ip_host_cannot_open_other_toolbox_pages(): void
{
$this
->get('http://192.168.1.20/')
->assertNotFound();
$this
->get('http://192.168.1.20/env')
->assertNotFound();
$this
->get('http://192.168.1.20/settings')
->assertNotFound();
}
public function test_ip_host_can_only_call_the_production_diagnosis_api(): void
{
$this
->postJson('http://192.168.1.20/api/production-diagnosis/diagnose', [])
->assertUnprocessable();
$this
->getJson('http://192.168.1.20/api/admin/meta')
->assertNotFound();
}
public function test_unconfigured_hostname_is_rejected(): void
{
$this
->get('http://attacker.example/production-diagnosis')
->assertNotFound();
}
}