added editor_upload_file_into_shared_folder test

This commit is contained in:
Peter Papp
2021-03-10 16:01:51 +01:00
parent 8de3e80c4f
commit cc526f8d95
3 changed files with 69 additions and 19 deletions
@@ -314,10 +314,12 @@ class EditItemsController extends Controller
} }
// Check shared permission // Check shared permission
if (!is_editor($shared)) abort(403); if (is_visitor($shared)) {
abort(403);
}
// Check access to requested directory // Check access to requested directory
Guardian::check_item_access($request->parent_id, $shared); Guardian::check_item_access($request->folder_id, $shared);
// Return new uploaded file // Return new uploaded file
$new_file = Editor::upload($request, $shared); $new_file = Editor::upload($request, $shared);
+11 -13
View File
@@ -463,8 +463,12 @@ class Editor
self::move_to_external_storage($disk_file_name, $thumbnail); self::move_to_external_storage($disk_file_name, $thumbnail);
} }
// Store file // Store user upload size
$options = [ User::find($user_id)
->record_upload($file_size);
// Return new file
return UserFile::create([
'mimetype' => get_file_type_from_mimetype($file_mimetype), 'mimetype' => get_file_type_from_mimetype($file_mimetype),
'type' => get_file_type($file_mimetype), 'type' => get_file_type($file_mimetype),
'folder_id' => $request->folder_id, 'folder_id' => $request->folder_id,
@@ -475,14 +479,7 @@ class Editor
'thumbnail' => $thumbnail, 'thumbnail' => $thumbnail,
'filesize' => $file_size, 'filesize' => $file_size,
'user_id' => $user_id, 'user_id' => $user_id,
]; ]);
// Store user upload size
User::find($user_id)
->record_upload($file_size);
// Return new file
return UserFile::create($options);
} }
} }
@@ -632,15 +629,16 @@ class Editor
{ {
// Get user storage percentage and get storage_limitation setting // Get user storage percentage and get storage_limitation setting
$user_storage_used = user_storage_percentage($user_id, $file_size); $user_storage_used = user_storage_percentage($user_id, $file_size);
$storage_limitation = get_setting('storage_limitation');
// Check if user can upload // Check if user can upload
if ($storage_limitation && $user_storage_used >= 100) { if (get_setting('storage_limitation') && $user_storage_used >= 100) {
// Delete file // Delete file
Storage::disk('local')->delete('chunks/' . $temp_filename); Storage::disk('local')
->delete("chunks/$temp_filename");
// Abort uploading // Abort uploading
// TODO: test pre exceed storage limit
abort(423, 'You exceed your storage limit!'); abort(423, 'You exceed your storage limit!');
} }
} }
+54 -4
View File
@@ -28,7 +28,7 @@ class ShareEditorTest extends TestCase
/** /**
* @test * @test
*/ */
public function it_rename_shared_file() public function editor_rename_shared_file()
{ {
$user = User::factory(User::class) $user = User::factory(User::class)
->create(); ->create();
@@ -69,7 +69,7 @@ class ShareEditorTest extends TestCase
/** /**
* @test * @test
*/ */
public function it_rename_shared_folder() public function editor_rename_shared_folder()
{ {
$user = User::factory(User::class) $user = User::factory(User::class)
->create(); ->create();
@@ -111,7 +111,7 @@ class ShareEditorTest extends TestCase
/** /**
* @test * @test
*/ */
public function it_create_new_folder_in_shared_folder() public function editor_create_new_folder_in_shared_folder()
{ {
$folder = Folder::factory(Folder::class) $folder = Folder::factory(Folder::class)
->create(); ->create();
@@ -144,7 +144,7 @@ class ShareEditorTest extends TestCase
/** /**
* @test * @test
*/ */
public function it_delete_multiple_files_in_shared_folder() public function editor_delete_multiple_files_in_shared_folder()
{ {
$folder = Folder::factory(Folder::class) $folder = Folder::factory(Folder::class)
->create(); ->create();
@@ -187,6 +187,56 @@ class ShareEditorTest extends TestCase
}); });
} }
/**
* @test
*/
public function editor_upload_file_into_shared_folder()
{
Storage::fake('local');
$this->setup->create_directories();
$user = User::factory(User::class)
->create();
$folder = Folder::factory(Folder::class)
->create([
'user_id' => $user->id,
'user_scope' => 'master',
]);
$share = Share::factory(Share::class)
->create([
'item_id' => $folder->id,
'user_id' => $user->id,
'type' => 'folder',
'is_protected' => false,
'permission' => 'editor',
]);
$file = UploadedFile::fake()
->create('fake-file.pdf', 1000, 'application/pdf');
$this->postJson("/api/editor/upload/public/$share->token", [
'file' => $file,
'folder_id' => $folder->id,
'is_last' => true,
])->assertStatus(201);
$this->assertDatabaseHas('traffic', [
'user_id' => $user->id,
]);
$this->assertDatabaseHas('files', [
'user_scope' => 'editor',
]);
Storage::disk('local')
->assertExists(
"files/$user->id/fake-file.pdf"
);
}
/** /**
* @test * @test
*/ */