From ed90173ec920f0b7b0ea9c3a3320d3fd1040afa0 Mon Sep 17 00:00:00 2001 From: Peter Papp Date: Wed, 10 Mar 2021 17:22:40 +0100 Subject: [PATCH] added guest_get_navigator_tree test --- .../Sharing/FileSharingController.php | 33 ++++--- tests/Feature/Share/ShareEditorTest.php | 89 +++++++++++++++++++ 2 files changed, 105 insertions(+), 17 deletions(-) diff --git a/app/Http/Controllers/Sharing/FileSharingController.php b/app/Http/Controllers/Sharing/FileSharingController.php index 49d70058..0d92f399 100644 --- a/app/Http/Controllers/Sharing/FileSharingController.php +++ b/app/Http/Controllers/Sharing/FileSharingController.php @@ -34,11 +34,11 @@ class FileSharingController extends Controller $shared = Share::whereToken($token) ->first(); - if (! $shared) { + if (!$shared) { return response() ->view('index', [ - 'settings' => null, - 'legal' => null, + 'settings' => null, + 'legal' => null, 'installation' => null, ], 404); } @@ -47,14 +47,14 @@ class FileSharingController extends Controller Cookie::queue('shared_access_token', '', -1); // Set cookies - if ((int) $shared->is_protected) { + if ((int)$shared->is_protected) { // Set shared token Cookie::queue('shared_token', $token, 43200); } // Check if shared is image file and then show it - if ($shared->type === 'file' && ! (int) $shared->is_protected) { + if ($shared->type === 'file' && !(int)$shared->is_protected) { $image = File::where('user_id', $shared->user_id) ->where('type', 'image') @@ -64,7 +64,7 @@ class FileSharingController extends Controller if ($image) { // Store user download size - User::find($shared->user_id)->record_download((int) $image->getRawOriginal('filesize')); + User::find($shared->user_id)->record_download((int)$image->getRawOriginal('filesize')); return $this->show_image($image); } @@ -173,7 +173,7 @@ class FileSharingController extends Controller $shared = get_shared($token); // Abort if folder is protected - if ((int) $shared->is_protected) { + if ((int)$shared->is_protected) { abort(403, "Sorry, you don't have permission"); } @@ -205,7 +205,7 @@ class FileSharingController extends Controller ->firstOrFail(); // Abort if file is protected - if ((int) $shared->is_protected) { + if ((int)$shared->is_protected) { abort(403, "Sorry, you don't have permission"); } @@ -278,25 +278,24 @@ class FileSharingController extends Controller public function get_public_navigation_tree($token) { // Get sharing record - $shared = Share::where('token', $token)->firstOrFail(); + $shared = get_shared($token); // Check if user can get directory Guardian::check_item_access($shared->item_id, $shared); // Get folders - $folders = Folder::with('folders:id,parent_id,unique_id,name') + $folders = Folder::with('folders:id,parent_id,name') ->where('parent_id', $shared->item_id) ->where('user_id', $shared->user_id) ->sortable() - ->get(['id', 'parent_id', 'unique_id', 'name']); + ->get(['id', 'parent_id', 'id', 'name']); - // Return folder tree return [ [ - 'unique_id' => $shared->item_id, - 'name' => __('vuefilemanager.home'), - 'location' => 'public', - 'folders' => $folders, + 'id' => $shared->item_id, + 'name' => __('vuefilemanager.home'), + 'location' => 'public', + 'folders' => $folders, ] ]; } @@ -357,7 +356,7 @@ class FileSharingController extends Controller $shared = get_shared($token); // Abort if folder is protected - if ((int) $shared->is_protected) { + if ((int)$shared->is_protected) { abort(403, "Sorry, you don't have permission"); } diff --git a/tests/Feature/Share/ShareEditorTest.php b/tests/Feature/Share/ShareEditorTest.php index 30870338..02be9b7e 100644 --- a/tests/Feature/Share/ShareEditorTest.php +++ b/tests/Feature/Share/ShareEditorTest.php @@ -596,4 +596,93 @@ class ShareEditorTest extends TestCase ] ]); } + + /** + * @test + */ + public function guest_get_navigator_tree() + { + $user = User::factory(User::class) + ->create(); + + $folder_level_1 = Folder::factory(Folder::class) + ->create([ + 'name' => 'level 1', + 'user_scope' => 'master', + 'user_id' => $user->id, + ]); + + $share = Share::factory(Share::class) + ->create([ + 'item_id' => $folder_level_1->id, + 'user_id' => $user->id, + 'type' => 'folder', + 'is_protected' => false, + 'permission' => 'editor', + ]); + + $folder_level_2 = Folder::factory(Folder::class) + ->create([ + 'name' => 'level 2', + 'parent_id' => $folder_level_1->id, + 'user_scope' => 'master', + 'user_id' => $user->id, + ]); + + $folder_level_3 = Folder::factory(Folder::class) + ->create([ + 'name' => 'level 3', + 'parent_id' => $folder_level_2->id, + 'user_scope' => 'master', + 'user_id' => $user->id, + ]); + + $folder_level_2_sibling = Folder::factory(Folder::class) + ->create([ + 'name' => 'level 2 Sibling', + 'parent_id' => $folder_level_1->id, + 'user_scope' => 'master', + 'user_id' => $user->id, + ]); + + $this->getJson("/api/browse/navigation/public/$share->token") + ->assertStatus(200) + ->assertExactJson([ + [ + 'id' => $share->item_id, + "name" => "Home", + "location" => "public", + "folders" => [ + [ + "id" => $folder_level_2->id, + "parent_id" => $folder_level_1->id, + "name" => "level 2", + "items" => 1, + "trashed_items" => 1, + "type" => "folder", + "folders" => [ + [ + "id" => $folder_level_3->id, + "parent_id" => $folder_level_2->id, + "name" => "level 3", + "items" => 0, + "trashed_items" => 0, + "type" => "folder", + "folders" => [], + ], + ], + ], + [ + "id" => $folder_level_2_sibling->id, + "parent_id" => $folder_level_1->id, + "name" => "level 2 Sibling", + "items" => 0, + "trashed_items" => 0, + "type" => "folder", + "folders" => [] + ] + ] + ] + ]); + } }