2024-05-05 22:44:58 +08:00
|
|
|
<?php
|
|
|
|
|
2024-10-26 19:24:49 +08:00
|
|
|
namespace Tests\Activity;
|
2024-05-05 22:44:58 +08:00
|
|
|
|
|
|
|
use BookStack\Activity\ActivityType;
|
|
|
|
use BookStack\Facades\Activity;
|
|
|
|
use Tests\Api\TestsApi;
|
|
|
|
use Tests\TestCase;
|
|
|
|
|
|
|
|
class AuditLogApiTest extends TestCase
|
|
|
|
{
|
|
|
|
use TestsApi;
|
|
|
|
|
|
|
|
public function test_user_and_settings_manage_permissions_needed()
|
|
|
|
{
|
|
|
|
$editor = $this->users->editor();
|
|
|
|
|
|
|
|
$assertPermissionErrorOnCall = function () use ($editor) {
|
|
|
|
$resp = $this->actingAsForApi($editor)->getJson('/api/audit-log');
|
|
|
|
$resp->assertStatus(403);
|
|
|
|
$resp->assertJson($this->permissionErrorResponse());
|
|
|
|
};
|
|
|
|
|
|
|
|
$assertPermissionErrorOnCall();
|
|
|
|
$this->permissions->grantUserRolePermissions($editor, ['users-manage']);
|
|
|
|
$assertPermissionErrorOnCall();
|
|
|
|
$this->permissions->removeUserRolePermissions($editor, ['users-manage']);
|
|
|
|
$this->permissions->grantUserRolePermissions($editor, ['settings-manage']);
|
|
|
|
$assertPermissionErrorOnCall();
|
|
|
|
|
|
|
|
$this->permissions->grantUserRolePermissions($editor, ['settings-manage', 'users-manage']);
|
|
|
|
$resp = $this->actingAsForApi($editor)->getJson('/api/audit-log');
|
|
|
|
$resp->assertOk();
|
|
|
|
}
|
|
|
|
|
|
|
|
public function test_index_endpoint_returns_expected_data()
|
|
|
|
{
|
|
|
|
$page = $this->entities->page();
|
|
|
|
$admin = $this->users->admin();
|
|
|
|
$this->actingAsForApi($admin);
|
|
|
|
Activity::add(ActivityType::PAGE_UPDATE, $page);
|
|
|
|
|
|
|
|
$resp = $this->get("/api/audit-log?filter[loggable_id]={$page->id}");
|
|
|
|
$resp->assertJson(['data' => [
|
|
|
|
[
|
|
|
|
'type' => 'page_update',
|
|
|
|
'detail' => "({$page->id}) {$page->name}",
|
|
|
|
'user_id' => $admin->id,
|
|
|
|
'loggable_id' => $page->id,
|
|
|
|
'loggable_type' => 'page',
|
|
|
|
'ip' => '127.0.0.1',
|
|
|
|
'user' => [
|
|
|
|
'id' => $admin->id,
|
|
|
|
'name' => $admin->name,
|
|
|
|
'slug' => $admin->slug,
|
|
|
|
],
|
|
|
|
]
|
|
|
|
]]);
|
|
|
|
}
|
|
|
|
}
|