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

View File

@@ -144,10 +144,12 @@ class EditItemsController extends Controller
}
// Check shared permission
if (!is_editor($shared)) abort(403);
if (is_visitor($shared)) {
abort(403);
}
// Get file|folder item
$item = get_item($request->type, $id, $shared->user_id);
$item = get_item($request->type, $id);
// Check access to requested item
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->type === 'folder' && $request->filled('icon')) {
Editor::set_folder_icon($request->icon, $id, $shared);
Editor::set_folder_icon($request, $id);
}
// Rename item

View File

@@ -220,6 +220,17 @@ function is_editor($shared)
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
*
@@ -419,6 +430,7 @@ function appeared_once($arr)
/**
* @param $folders
* @param string $by_column
* @return array
*/
function filter_folders_ids($folders, $by_column = 'id')

View File

@@ -18,7 +18,7 @@ class Guardian
public static function check_item_access($requested_id, $shared)
{
// 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('parent_id', $shared->item_id)
->get();

View File

@@ -12,13 +12,18 @@ use App\Http\Controllers\General\PricingController;
use App\Http\Controllers\Sharing\FileSharingController;
// Edit Functions
Route::patch('/rename-item/{unique_id}/public/{token}', [EditItemsController::class, 'guest_rename_item']);
Route::get('/zip-folder/{id}/public/{token}', [EditItemsController::class, 'guest_zip_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('/zip/public/{token}', [EditItemsController::class, 'guest_zip_multiple_files']);
Route::post('/upload/public/{token}', [EditItemsController::class, 'guest_upload']);
Route::post('/move/public/{token}', [EditItemsController::class, 'guest_move']);
Route::group(['prefix' => 'editor'], function () {
Route::patch('/rename/{id}/public/{token}', [EditItemsController::class, 'guest_rename_item']);
Route::post('/create-folder/public/{token}', [EditItemsController::class, 'guest_create_folder']);
Route::post('/remove/public/{token}', [EditItemsController::class, 'guest_delete_item']);
Route::post('/upload/public/{token}', [EditItemsController::class, 'guest_upload']);
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
Route::get('/folders/{unique_id}/public/{token}', [FileSharingController::class, 'get_public_folders']);

View File

@@ -11,6 +11,7 @@ use Illuminate\Foundation\Testing\DatabaseMigrations;
use App\Services\SetupService;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Str;
use Laravel\Sanctum\Sanctum;
use Storage;
use Tests\TestCase;
@@ -24,6 +25,47 @@ class ShareEditorTest extends TestCase
$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
*/
@@ -67,7 +109,7 @@ class ShareEditorTest extends TestCase
'is_protected' => false,
]);
$this->postJson("/api/zip/public/$share->token", [
$this->postJson("/api/zip/files/public/$share->token", [
'items' => File::all()->pluck('id')
])->assertStatus(201);
@@ -111,7 +153,7 @@ class ShareEditorTest extends TestCase
'is_protected' => false,
]);
$this->postJson("/api/zip/public/$share->token", [
$this->postJson("/api/zip/files/public/$share->token", [
'items' => File::all()->pluck('id')
])->assertStatus(403);
}
@@ -165,7 +207,7 @@ class ShareEditorTest extends TestCase
'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);
$this->assertDatabaseHas('zips', [
@@ -200,7 +242,7 @@ class ShareEditorTest extends TestCase
'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);
}
}