diff --git a/ProcessMaker/Http/Controllers/Api/SecurityLogController.php b/ProcessMaker/Http/Controllers/Api/SecurityLogController.php index ea1b6ccccf..7491b94cbb 100644 --- a/ProcessMaker/Http/Controllers/Api/SecurityLogController.php +++ b/ProcessMaker/Http/Controllers/Api/SecurityLogController.php @@ -81,9 +81,16 @@ public function index(Request $request) $query->pmql($pmql); } + // Get total + $totalCount = $query->count(); + + // Always paginate using query object instead "ApiCollection" class + $query->paginate($request->input('per_page', 10)); + + // Get records $response = $query->get(); - return new ApiCollection($response); + return new ApiCollection($response, $totalCount); } /** diff --git a/tests/Feature/Api/SecurityLogControllerTest.php b/tests/Feature/Api/SecurityLogControllerTest.php new file mode 100644 index 0000000000..c29d2e5f0c --- /dev/null +++ b/tests/Feature/Api/SecurityLogControllerTest.php @@ -0,0 +1,54 @@ +create([ + 'status' => 'ACTIVE', + 'is_administrator' => true, + ]); + + // Create 20 records + SecurityLog::factory()->count(20)->create([ + 'event' => 'login', + 'user_id' => $user->id, + 'meta' => [ + 'os' => [ + 'name' => 'OS X', + ], + 'browser' => [ + 'name' => 'Firefox', + ], + ], + ]); + + // Get 10 items (default per page) + $response = $this->apiCall('GET', route('api.security-logs.index')); + $response->assertStatus(200); + $response->assertJsonCount(10, 'data'); + + // Get 2 items, page 1 + $response = $this->apiCall('GET', route('api.security-logs.index'), ['per_page' => 2]); + $response->assertStatus(200); + $response->assertJsonCount(2, 'data'); + $response->assertJsonFragment(['total_pages' => 10]); + $response->assertJsonFragment(['current_page' => 1]); + + // Get 2 items, page 2 + $response = $this->apiCall('GET', route('api.security-logs.index'), ['per_page' => 2, 'page' => 2]); + $response->assertStatus(200); + $response->assertJsonCount(2, 'data'); + $response->assertJsonFragment(['total_pages' => 10]); + $response->assertJsonFragment(['current_page' => 2]); + } +}