Files
coolify/tests/Feature/TeamAuditLogWithoutSessionTeamTest.php
Andras Bacsai babe43da32 fix(audit): return 403 on the audit log without a session team
When the user had no session team (for example after removal from the
team), the audit log page threw an error and returned 500.

- Return 403 when there is no session team or the user is not an admin
2026-10-05 21:23:36 +02:00

49 lines
1.6 KiB
PHP

<?php
use App\Livewire\Team\AuditLog;
use App\Models\InstanceSettings;
use App\Models\Team;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Livewire\Livewire;
uses(RefreshDatabase::class);
beforeEach(function () {
InstanceSettings::unguarded(fn () => InstanceSettings::updateOrCreate(['id' => 0], ['id' => 0]));
$this->team = Team::factory()->create();
$this->secondTeam = Team::factory()->create();
$this->user = User::factory()->create();
$this->team->members()->attach($this->user->id, ['role' => 'admin']);
$this->secondTeam->members()->attach($this->user->id, ['role' => 'owner']);
$this->actingAs($this->user);
session(['currentTeam' => $this->team]);
});
test('the audit log is forbidden when the session has no team', function () {
session()->forget('currentTeam');
Livewire::test(AuditLog::class)->assertForbidden();
});
test('an open audit log is forbidden after the session team is removed from the user', function () {
$component = Livewire::test(AuditLog::class)->assertOk();
$this->team->members()->detach($this->user->id);
auth()->setUser($this->user->fresh());
$component->set('search', 'deployment')->assertForbidden();
});
test('team admins can still open the audit log', function () {
Livewire::test(AuditLog::class)->assertOk();
});
test('team members cannot open the audit log', function () {
$this->team->members()->updateExistingPivot($this->user->id, ['role' => 'member']);
auth()->setUser($this->user->fresh());
Livewire::test(AuditLog::class)->assertForbidden();
});