From 73798463d8a2ef63e2c223593335f00162041ac6 Mon Sep 17 00:00:00 2001 From: Arunas Skirius Date: Fri, 22 Sep 2023 10:54:02 +0300 Subject: [PATCH 1/3] fix JsonResource::withoutWrapping usage spilling outside the package --- routes/api.php | 6 +++- src/Http/Controllers/FilesController.php | 3 -- src/Http/Controllers/FoldersController.php | 3 -- .../JsonResourceWithoutWrappingMiddleware.php | 23 +++++++++++++ tests/Feature/LogFilesControllerTest.php | 32 +++++++++++++++++++ tests/Feature/LogFoldersControllerTest.php | 22 +++++++++++++ 6 files changed, 82 insertions(+), 7 deletions(-) create mode 100644 src/Http/Middleware/JsonResourceWithoutWrappingMiddleware.php create mode 100644 tests/Feature/LogFilesControllerTest.php create mode 100644 tests/Feature/LogFoldersControllerTest.php diff --git a/routes/api.php b/routes/api.php index b20699e9..9a028b41 100644 --- a/routes/api.php +++ b/routes/api.php @@ -2,10 +2,14 @@ use Illuminate\Support\Facades\Route; use Opcodes\LogViewer\Http\Middleware\ForwardRequestToHostMiddleware; +use Opcodes\LogViewer\Http\Middleware\JsonResourceWithoutWrappingMiddleware; Route::get('hosts', 'HostsController@index')->name('log-viewer.hosts'); -Route::middleware(ForwardRequestToHostMiddleware::class)->group(function () { +Route::middleware([ + ForwardRequestToHostMiddleware::class, + JsonResourceWithoutWrappingMiddleware::class +])->group(function () { Route::get('folders', 'FoldersController@index')->name('log-viewer.folders'); Route::get('folders/{folderIdentifier}/download', 'FoldersController@download')->name('log-viewer.folders.download'); Route::post('folders/{folderIdentifier}/clear-cache', 'FoldersController@clearCache')->name('log-viewer.folders.clear-cache'); diff --git a/src/Http/Controllers/FilesController.php b/src/Http/Controllers/FilesController.php index 9835c518..e634d058 100644 --- a/src/Http/Controllers/FilesController.php +++ b/src/Http/Controllers/FilesController.php @@ -3,7 +3,6 @@ namespace Opcodes\LogViewer\Http\Controllers; use Illuminate\Http\Request; -use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Support\Facades\Gate; use Opcodes\LogViewer\Facades\LogViewer; use Opcodes\LogViewer\Http\Resources\LogFileResource; @@ -12,8 +11,6 @@ class FilesController { public function index(Request $request) { - JsonResource::withoutWrapping(); - $files = LogViewer::getFiles(); if ($request->query('direction', 'desc') === 'asc') { diff --git a/src/Http/Controllers/FoldersController.php b/src/Http/Controllers/FoldersController.php index aed4966c..fec6cef0 100644 --- a/src/Http/Controllers/FoldersController.php +++ b/src/Http/Controllers/FoldersController.php @@ -3,7 +3,6 @@ namespace Opcodes\LogViewer\Http\Controllers; use Illuminate\Http\Request; -use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Support\Facades\Gate; use Opcodes\LogViewer\Facades\LogViewer; use Opcodes\LogViewer\Http\Resources\LogFolderResource; @@ -13,8 +12,6 @@ class FoldersController { public function index(Request $request) { - JsonResource::withoutWrapping(); - $folders = LogViewer::getFilesGroupedByFolder(); if ($request->query('direction', 'desc') === 'asc') { diff --git a/src/Http/Middleware/JsonResourceWithoutWrappingMiddleware.php b/src/Http/Middleware/JsonResourceWithoutWrappingMiddleware.php new file mode 100644 index 00000000..c69ea52f --- /dev/null +++ b/src/Http/Middleware/JsonResourceWithoutWrappingMiddleware.php @@ -0,0 +1,23 @@ + ['*.log']]); +}); + +it('can get the log files', function () { + $files = generateLogFiles([ + '1.one.log', + '2.two.log', + '3.three.log', + ], randomContent: true); + + $response = getJson(route('log-viewer.files')); + + expect($response->json())->not->toHaveKey('data'); + $response->assertJsonCount(count($files)) + ->assertJsonFragment([ + 'name' => $files[0]->name, + 'size' => $files[0]->size(), + ]) + ->assertJsonFragment([ + 'name' => $files[1]->name, + 'size' => $files[1]->size(), + ]) + ->assertJsonFragment([ + 'name' => $files[2]->name, + 'size' => $files[2]->size(), + ]); +}); diff --git a/tests/Feature/LogFoldersControllerTest.php b/tests/Feature/LogFoldersControllerTest.php new file mode 100644 index 00000000..987b914d --- /dev/null +++ b/tests/Feature/LogFoldersControllerTest.php @@ -0,0 +1,22 @@ + ['*/**.log']]); +}); + +it('can get the log files', function () { + generateLogFiles([ + 'one/1.one.log', + 'one/2.two.log', + 'two/3.three.log', + ], randomContent: true); + + $response = getJson(route('log-viewer.folders')); + + expect($response->json())->not->toHaveKey('data'); + $response->assertJsonCount(2) + ->assertJsonFragment(['clean_path' => 'root/one']) + ->assertJsonFragment(['clean_path' => 'root/two']); +}); From aedc5725eb87057ccca0702eaf68b2dde6744397 Mon Sep 17 00:00:00 2001 From: arukompas Date: Fri, 22 Sep 2023 07:54:37 +0000 Subject: [PATCH 2/3] Fix styling --- routes/api.php | 2 +- src/LogFile.php | 2 +- src/LogIndex.php | 2 +- src/Readers/BaseLogReader.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/routes/api.php b/routes/api.php index 9a028b41..e46e0aed 100644 --- a/routes/api.php +++ b/routes/api.php @@ -8,7 +8,7 @@ Route::middleware([ ForwardRequestToHostMiddleware::class, - JsonResourceWithoutWrappingMiddleware::class + JsonResourceWithoutWrappingMiddleware::class, ])->group(function () { Route::get('folders', 'FoldersController@index')->name('log-viewer.folders'); Route::get('folders/{folderIdentifier}/download', 'FoldersController@download')->name('log-viewer.folders.download'); diff --git a/src/LogFile.php b/src/LogFile.php index b1b2525d..093dd5a3 100644 --- a/src/LogFile.php +++ b/src/LogFile.php @@ -14,8 +14,8 @@ class LogFile { - use Concerns\LogFile\HasMetadata; use Concerns\LogFile\CanCacheData; + use Concerns\LogFile\HasMetadata; public string $path; public string $name; diff --git a/src/LogIndex.php b/src/LogIndex.php index 85934732..22753f76 100644 --- a/src/LogIndex.php +++ b/src/LogIndex.php @@ -8,11 +8,11 @@ class LogIndex { - use Concerns\LogIndex\HasMetadata; use Concerns\LogIndex\CanCacheIndex; use Concerns\LogIndex\CanFilterIndex; use Concerns\LogIndex\CanIterateIndex; use Concerns\LogIndex\CanSplitIndexIntoChunks; + use Concerns\LogIndex\HasMetadata; use Concerns\LogIndex\PreservesIndexingProgress; const DEFAULT_CHUNK_SIZE = 50_000; diff --git a/src/Readers/BaseLogReader.php b/src/Readers/BaseLogReader.php index 142eded0..0d0981ac 100644 --- a/src/Readers/BaseLogReader.php +++ b/src/Readers/BaseLogReader.php @@ -9,8 +9,8 @@ abstract class BaseLogReader { - use Concerns\LogReader\KeepsInstances; use Concerns\LogReader\KeepsFileHandle; + use Concerns\LogReader\KeepsInstances; protected LogFile $file; From 8fd4e227977a346b4d1461404fe8ae7e2bfef956 Mon Sep 17 00:00:00 2001 From: Arunas Skirius Date: Fri, 22 Sep 2023 10:58:46 +0300 Subject: [PATCH 3/3] fix broken test --- tests/Feature/LogFoldersControllerTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Feature/LogFoldersControllerTest.php b/tests/Feature/LogFoldersControllerTest.php index 987b914d..ee9b59a2 100644 --- a/tests/Feature/LogFoldersControllerTest.php +++ b/tests/Feature/LogFoldersControllerTest.php @@ -17,6 +17,6 @@ expect($response->json())->not->toHaveKey('data'); $response->assertJsonCount(2) - ->assertJsonFragment(['clean_path' => 'root/one']) - ->assertJsonFragment(['clean_path' => 'root/two']); + ->assertJsonFragment(['clean_path' => 'root'.DIRECTORY_SEPARATOR.'one']) + ->assertJsonFragment(['clean_path' => 'root'.DIRECTORY_SEPARATOR.'two']); });