5 use BookStack\Activity\ActivityType;
6 use BookStack\Facades\Activity;
7 use Tests\Api\TestsApi;
10 class AuditLogApiTest extends TestCase
14 public function test_user_and_settings_manage_permissions_needed()
16 $editor = $this->users->editor();
18 $assertPermissionErrorOnCall = function () use ($editor) {
19 $resp = $this->actingAsForApi($editor)->getJson('/api/audit-log');
20 $resp->assertStatus(403);
21 $resp->assertJson($this->permissionErrorResponse());
24 $assertPermissionErrorOnCall();
25 $this->permissions->grantUserRolePermissions($editor, ['users-manage']);
26 $assertPermissionErrorOnCall();
27 $this->permissions->removeUserRolePermissions($editor, ['users-manage']);
28 $this->permissions->grantUserRolePermissions($editor, ['settings-manage']);
29 $assertPermissionErrorOnCall();
31 $this->permissions->grantUserRolePermissions($editor, ['settings-manage', 'users-manage']);
32 $resp = $this->actingAsForApi($editor)->getJson('/api/audit-log');
36 public function test_index_endpoint_returns_expected_data()
38 $page = $this->entities->page();
39 $admin = $this->users->admin();
40 $this->actingAsForApi($admin);
41 Activity::add(ActivityType::PAGE_UPDATE, $page);
43 $resp = $this->get("/api/audit-log?filter[loggable_id]={$page->id}");
44 $resp->assertJson(['data' => [
46 'type' => 'page_update',
47 'detail' => "({$page->id}) {$page->name}",
48 'user_id' => $admin->id,
49 'loggable_id' => $page->id,
50 'loggable_type' => 'page',
54 'name' => $admin->name,
55 'slug' => $admin->slug,