- when member upload files or create folder in team folder, the true owner of the content is creator of team member. That means the upload bandwidth and storage go to creator responsibility

This commit is contained in:
Čarodej
2022-03-30 09:34:25 +02:00
parent 0fbb8fd8ee
commit 0ca67c2348
31 changed files with 256 additions and 396 deletions

View File

@@ -158,7 +158,6 @@ class BrowseTest extends TestCase
'name' => 'Document',
'basename' => 'document.pdf',
'mimetype' => 'application/pdf',
'author' => 'user',
'type' => 'file',
'user_id' => $user->id,
]);
@@ -199,7 +198,6 @@ class BrowseTest extends TestCase
'name' => 'Document 1',
'basename' => 'document-1.pdf',
'mimetype' => 'application/pdf',
'author' => 'user',
'type' => 'file',
'user_id' => $user->id,
'created_at' => now(),
@@ -213,7 +211,6 @@ class BrowseTest extends TestCase
'name' => 'Document 2',
'basename' => 'document-2.pdf',
'mimetype' => 'application/pdf',
'author' => 'user',
'type' => 'file',
'user_id' => $user->id,
'created_at' => now(),
@@ -255,7 +252,6 @@ class BrowseTest extends TestCase
'name' => 'Document',
'basename' => 'document.pdf',
'mimetype' => 'application/pdf',
'author' => 'user',
'type' => 'file',
'user_id' => $user->id,
'deleted_at' => now(),

View File

@@ -158,7 +158,6 @@ class VisitorBrowseTest extends TestCase
->create([
'parent_id' => $root->id,
'name' => 'Documents',
'author' => 'user',
'user_id' => $user->id,
]);
@@ -168,7 +167,6 @@ class VisitorBrowseTest extends TestCase
'name' => 'Document',
'basename' => 'document.pdf',
'mimetype' => 'application/pdf',
'author' => 'user',
'type' => 'file',
'user_id' => $user->id,
]);
@@ -238,7 +236,6 @@ class VisitorBrowseTest extends TestCase
->create([
'name' => 'level 2',
'parent_id' => $folder_level_1->id,
'author' => 'user',
'user_id' => $user->id,
]);
@@ -246,7 +243,6 @@ class VisitorBrowseTest extends TestCase
->create([
'name' => 'level 3',
'parent_id' => $folder_level_2->id,
'author' => 'user',
'user_id' => $user->id,
]);
@@ -254,7 +250,6 @@ class VisitorBrowseTest extends TestCase
->create([
'name' => 'level 2 Sibling',
'parent_id' => $folder_level_1->id,
'author' => 'user',
'user_id' => $user->id,
]);

View File

@@ -306,7 +306,6 @@ class VisitorManipulatingTest extends TestCase
$folder = Folder::factory()
->create([
'user_id' => $user->id,
'author' => 'user',
]);
$share = Share::factory()
@@ -350,10 +349,6 @@ class VisitorManipulatingTest extends TestCase
])->assertStatus(201);
}
$this->assertDatabaseHas('files', [
'author' => 'visitor',
]);
$file = File::all()->last();
Storage::disk('local')

View File

@@ -420,23 +420,6 @@ class TeamManagementTest extends TestCase
'team_folder' => 1,
]);
// Create fake file record
File::factory()
->create([
'name' => 'Member File',
'basename' => 'fake-file.zip',
'parent_id' => $folder->id,
'user_id' => $deletedMember->id,
'type' => 'file',
]);
// Create fake file
$fakeFile = UploadedFile::fake()
->create('fake-file.zip', 2000, 'application/zip');
// Put fake file into correct directory
Storage::putFileAs("files/{$deletedMember->id}", $fakeFile, 'fake-file.zip');
// Attach members to the team folder
DB::table('team_folder_members')
->insert([
@@ -466,10 +449,6 @@ class TeamManagementTest extends TestCase
])
->assertCreated();
// Check if file was moved from member directory to owner directory
Storage::assertMissing("files/{$deletedMember->id}/fake-file.zip");
Storage::assertExists("files/{$user->id}/fake-file.zip");
$this
->assertDatabaseCount('team_folder_members', 1)
->assertDatabaseMissing('team_folder_members', [
@@ -709,57 +688,6 @@ class TeamManagementTest extends TestCase
'team_folder' => 1,
]);
$folderWithin = Folder::factory()
->create([
'name' => 'Member Content',
'parent_id' => $folder->id,
'user_id' => $member->id,
'team_folder' => 1,
]);
$file = File::factory()
->create([
'name' => 'Member File',
'basename' => 'fake-file.zip',
'parent_id' => $folderWithin->id,
'user_id' => $member->id,
'type' => 'file',
]);
// Create fake file
$fakeFile = UploadedFile::fake()
->create('fake-file.zip', 2000, 'application/zip');
// Put fake file into correct directory
Storage::putFileAs("files/$member->id", $fakeFile, 'fake-file.zip');
File::factory()
->create([
'name' => 'Good image',
'basename' => 'fake-image.jpeg',
'parent_id' => $folderWithin->id,
'user_id' => $member->id,
'type' => 'image',
]);
// Create fake image
$fakeFile = UploadedFile::fake()
->create('fake-image.jpeg', 2000, 'image/jpeg');
// Put fake image into correct directory
Storage::putFileAs("files/$member->id", $fakeFile, $fakeFile->name);
$thumbnail_sizes = collect([config('vuefilemanager.image_sizes.later'), config('vuefilemanager.image_sizes.immediately')])->collapse();
// Create fake image thumbnails
$thumbnail_sizes
->each(function ($item) use ($member) {
$fakeFile = UploadedFile::fake()
->create("{$item['name']}-fake-image.jpeg", 2000, 'image/jpeg');
Storage::putFileAs("files/$member->id", $fakeFile, $fakeFile->name);
});
// add member to the team folder
DB::table('team_folder_members')
->insert([
@@ -775,31 +703,11 @@ class TeamManagementTest extends TestCase
->deleteJson("/api/teams/folders/{$folder->id}/leave")
->assertNoContent();
// Check if file was moved from member directory to owner directory
Storage::assertMissing("files/$member->id/fake-file.zip");
Storage::assertExists("files/$user->id/fake-file.zip");
// Assert if image thumbnails was moved correctly to the new destination
$thumbnail_sizes
->each(function ($item) use ($user) {
Storage::assertExists("files/$user->id/{$item['name']}-fake-image.jpeg");
});
$this
->assertDatabaseMissing('team_folder_members', [
'parent_id' => $folder->id,
'user_id' => $member->id,
'permission' => 'can-edit',
])
->assertDatabaseHas('files', [
'id' => $file->id,
'parent_id' => $folderWithin->id,
'user_id' => $user->id,
])
->assertDatabaseHas('folders', [
'id' => $folderWithin->id,
'parent_id' => $folder->id,
'user_id' => $user->id,
]);
}

View File

@@ -1,6 +1,8 @@
<?php
namespace Tests\Domain\Teams;
use Illuminate\Http\UploadedFile;
use Notification;
use Tests\TestCase;
use App\Users\Models\User;
@@ -31,9 +33,8 @@ class TeamsTest extends TestCase
'parent_id' => $level_1->id,
]);
$teamRoot = $level_2->getLatestParent();
$this->assertEquals($teamFolder->id, $teamRoot->id);
$this->assertEquals($teamFolder->id, $level_2->getLatestParent()->id);
$this->assertEquals($teamFolder->id, $teamFolder->getLatestParent()->id);
}
/**
@@ -72,6 +73,7 @@ class TeamsTest extends TestCase
$this
->assertDatabaseHas('folders', [
'user_id' => $user->id,
'name' => 'Company Project',
'team_folder' => 1,
])
@@ -96,6 +98,7 @@ class TeamsTest extends TestCase
$teamFolder = Folder::factory()
->create([
'user_id' => $user->id,
'team_folder' => 1,
]);
@@ -108,6 +111,7 @@ class TeamsTest extends TestCase
->assertStatus(201)
->assertJsonFragment([
'isTeamFolder' => true,
'id' => $user->id,
]);
}
@@ -254,4 +258,42 @@ class TeamsTest extends TestCase
'id' => $folders[0]->id,
]);
}
/**
* @test
*/
public function team_member_upload_new_file()
{
$file = UploadedFile::fake()
->create('fake-file.pdf', 12000000, 'application/pdf');
$user = User::factory()
->hasSettings()
->create();
$member = User::factory()
->hasSettings()
->create();
$folder = Folder::factory()
->create([
'user_id' => $user->id,
'team_folder' => 1,
]);
$this
->actingAs($member)
->postJson('/api/upload', [
'filename' => $file->name,
'file' => $file,
'parent_id' => $folder->id,
'path' => "/$file->name",
'is_last' => 'true',
])->assertStatus(201);
$this->assertDatabaseHas('files', [
'user_id' => $user->id,
'creator_id' => $member->id,
]);
}
}