79 lines
2.2 KiB
PHP
79 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace Tests\Feature;
|
|
|
|
use App\Livewire\Help\Index;
|
|
use App\Models\User;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Livewire\Livewire;
|
|
use PHPUnit\Framework\Attributes\DataProvider;
|
|
use Tests\TestCase;
|
|
|
|
class HelpPageTest extends TestCase
|
|
{
|
|
use RefreshDatabase;
|
|
|
|
private function actAsAdmin(): void
|
|
{
|
|
$this->actingAs(User::factory()->create(['must_change_password' => false]));
|
|
}
|
|
|
|
public function test_help_route_loads_for_an_authenticated_admin(): void
|
|
{
|
|
$this->actAsAdmin();
|
|
$this->get('/help')->assertOk();
|
|
}
|
|
|
|
public function test_default_topic_is_overview(): void
|
|
{
|
|
$this->actAsAdmin();
|
|
Livewire::test(Index::class)
|
|
->assertSet('topic', 'overview')
|
|
->assertSee(__('help.topic_overview'));
|
|
}
|
|
|
|
public function test_unknown_topic_falls_back_to_overview(): void
|
|
{
|
|
$this->actAsAdmin();
|
|
Livewire::test(Index::class, ['topic' => 'bogus'])->assertSet('topic', 'overview');
|
|
}
|
|
|
|
public function test_domain_tls_topic_has_the_reverse_proxy_guide(): void
|
|
{
|
|
$this->actAsAdmin();
|
|
Livewire::test(Index::class)
|
|
->set('topic', 'domain-tls')
|
|
->assertSee('X-Forwarded-Proto')
|
|
->assertSee('TRUSTED_PROXY_CIDR')
|
|
->assertDontSee('Zoraxy'); // generic — no product names
|
|
}
|
|
|
|
public function test_security_topic_explains_the_2fa_access_paths(): void
|
|
{
|
|
$this->actAsAdmin();
|
|
Livewire::test(Index::class)
|
|
->set('topic', 'security')
|
|
->assertSee('Backup-Code')
|
|
->assertSee('TOTP');
|
|
}
|
|
|
|
#[DataProvider('topicProvider')]
|
|
public function test_each_topic_renders_its_own_partial(string $topic, string $marker): void
|
|
{
|
|
$this->actAsAdmin();
|
|
Livewire::test(Index::class)->set('topic', $topic)->assertSee($marker);
|
|
}
|
|
|
|
public static function topicProvider(): array
|
|
{
|
|
return [
|
|
['updates', 'update.sh'],
|
|
['servers', 'SSH'],
|
|
['sessions', 'Sitzung'],
|
|
['email', 'SMTP'],
|
|
['audit', 'Audit'],
|
|
['recovery', 'clusev:reset-admin'],
|
|
];
|
|
}
|
|
}
|