61 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
		
		
			
		
	
	
			61 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace Activity; | ||
|  | 
 | ||
|  | 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, | ||
|  |                 ], | ||
|  |             ] | ||
|  |         ]]); | ||
|  |     } | ||
|  | } |