added it_rename_shared_file test

This commit is contained in:
Peter Papp
2021-03-10 11:02:05 +01:00
parent 8a4ffd03c6
commit 1126a45524
5 changed files with 76 additions and 16 deletions
@@ -144,10 +144,12 @@ class EditItemsController extends Controller
} }
// Check shared permission // Check shared permission
if (!is_editor($shared)) abort(403); if (is_visitor($shared)) {
abort(403);
}
// Get file|folder item // Get file|folder item
$item = get_item($request->type, $id, $shared->user_id); $item = get_item($request->type, $id);
// Check access to requested item // Check access to requested item
if ($request->type === 'folder') { if ($request->type === 'folder') {
@@ -158,8 +160,7 @@ class EditItemsController extends Controller
// If request have a change folder icon values set the folder icon // If request have a change folder icon values set the folder icon
if ($request->type === 'folder' && $request->filled('icon')) { if ($request->type === 'folder' && $request->filled('icon')) {
Editor::set_folder_icon($request, $id);
Editor::set_folder_icon($request->icon, $id, $shared);
} }
// Rename item // Rename item
+12
View File
@@ -220,6 +220,17 @@ function is_editor($shared)
return $shared->permission === 'editor'; return $shared->permission === 'editor';
} }
/**
* Check if shared permission is visitor
*
* @param $shared
* @return bool
*/
function is_visitor($shared)
{
return $shared->permission === 'visitor';
}
/** /**
* Store user avatar to storage * Store user avatar to storage
* *
@@ -419,6 +430,7 @@ function appeared_once($arr)
/** /**
* @param $folders * @param $folders
* @param string $by_column
* @return array * @return array
*/ */
function filter_folders_ids($folders, $by_column = 'id') function filter_folders_ids($folders, $by_column = 'id')
+1 -1
View File
@@ -18,7 +18,7 @@ class Guardian
public static function check_item_access($requested_id, $shared) public static function check_item_access($requested_id, $shared)
{ {
// Get all children folders // Get all children folders
$foldersIds = Folder::with('folders:id,parent_id,unique_id,name') $foldersIds = Folder::with('folders:id,parent_id,id,name')
->where('user_id', $shared->user_id) ->where('user_id', $shared->user_id)
->where('parent_id', $shared->item_id) ->where('parent_id', $shared->item_id)
->get(); ->get();
+12 -7
View File
@@ -12,13 +12,18 @@ use App\Http\Controllers\General\PricingController;
use App\Http\Controllers\Sharing\FileSharingController; use App\Http\Controllers\Sharing\FileSharingController;
// Edit Functions // Edit Functions
Route::patch('/rename-item/{unique_id}/public/{token}', [EditItemsController::class, 'guest_rename_item']); Route::group(['prefix' => 'editor'], function () {
Route::get('/zip-folder/{id}/public/{token}', [EditItemsController::class, 'guest_zip_folder']); Route::patch('/rename/{id}/public/{token}', [EditItemsController::class, 'guest_rename_item']);
Route::post('/create-folder/public/{token}', [EditItemsController::class, 'guest_create_folder']); Route::post('/create-folder/public/{token}', [EditItemsController::class, 'guest_create_folder']);
Route::post('/remove-item/public/{token}', [EditItemsController::class, 'guest_delete_item']); Route::post('/remove/public/{token}', [EditItemsController::class, 'guest_delete_item']);
Route::post('/zip/public/{token}', [EditItemsController::class, 'guest_zip_multiple_files']); Route::post('/upload/public/{token}', [EditItemsController::class, 'guest_upload']);
Route::post('/upload/public/{token}', [EditItemsController::class, 'guest_upload']); Route::post('/move/public/{token}', [EditItemsController::class, 'guest_move']);
Route::post('/move/public/{token}', [EditItemsController::class, 'guest_move']); });
Route::group(['prefix' => 'zip'], function () {
Route::get('/folder/{id}/public/{token}', [EditItemsController::class, 'guest_zip_folder']);
Route::post('/files/public/{token}', [EditItemsController::class, 'guest_zip_multiple_files']);
});
// Sharing page browsing // Sharing page browsing
Route::get('/folders/{unique_id}/public/{token}', [FileSharingController::class, 'get_public_folders']); Route::get('/folders/{unique_id}/public/{token}', [FileSharingController::class, 'get_public_folders']);
+46 -4
View File
@@ -11,6 +11,7 @@ use Illuminate\Foundation\Testing\DatabaseMigrations;
use App\Services\SetupService; use App\Services\SetupService;
use Illuminate\Http\UploadedFile; use Illuminate\Http\UploadedFile;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Laravel\Sanctum\Sanctum;
use Storage; use Storage;
use Tests\TestCase; use Tests\TestCase;
@@ -24,6 +25,47 @@ class ShareEditorTest extends TestCase
$this->setup = app()->make(SetupService::class); $this->setup = app()->make(SetupService::class);
} }
/**
* @test
*/
public function it_rename_shared_file()
{
$user = User::factory(User::class)
->create();
$folder = Folder::factory(Folder::class)
->create([
'user_id' => $user->id
]);
$file = File::factory(File::class)
->create([
'folder_id' => $folder->id
]);
$share = Share::factory(Share::class)
->create([
'item_id' => $folder->id,
'user_id' => $user->id,
'type' => 'folder',
'is_protected' => false,
'permission' => 'editor',
]);
$this->patchJson("/api/editor/rename/{$file->id}/public/$share->token", [
'name' => 'Renamed Item',
'type' => 'file',
])
->assertStatus(200)
->assertJsonFragment([
'name' => 'Renamed Item',
]);
$this->assertDatabaseHas('files', [
'name' => 'Renamed Item'
]);
}
/** /**
* @test * @test
*/ */
@@ -67,7 +109,7 @@ class ShareEditorTest extends TestCase
'is_protected' => false, 'is_protected' => false,
]); ]);
$this->postJson("/api/zip/public/$share->token", [ $this->postJson("/api/zip/files/public/$share->token", [
'items' => File::all()->pluck('id') 'items' => File::all()->pluck('id')
])->assertStatus(201); ])->assertStatus(201);
@@ -111,7 +153,7 @@ class ShareEditorTest extends TestCase
'is_protected' => false, 'is_protected' => false,
]); ]);
$this->postJson("/api/zip/public/$share->token", [ $this->postJson("/api/zip/files/public/$share->token", [
'items' => File::all()->pluck('id') 'items' => File::all()->pluck('id')
])->assertStatus(403); ])->assertStatus(403);
} }
@@ -165,7 +207,7 @@ class ShareEditorTest extends TestCase
'is_protected' => false, 'is_protected' => false,
]); ]);
$this->getJson("/api/zip-folder/$children->id/public/$share->token") $this->getJson("/api/zip/folder/$children->id/public/$share->token")
->assertStatus(201); ->assertStatus(201);
$this->assertDatabaseHas('zips', [ $this->assertDatabaseHas('zips', [
@@ -200,7 +242,7 @@ class ShareEditorTest extends TestCase
'is_protected' => false, 'is_protected' => false,
]); ]);
$this->getJson("/api/zip-folder/$folder->id/public/$share->token") $this->getJson("/api/zip/folder/$folder->id/public/$share->token")
->assertStatus(403); ->assertStatus(403);
} }
} }