mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-05 18:23:48 +00:00
260 lines
7.4 KiB
PHP
260 lines
7.4 KiB
PHP
<?php
|
|
namespace Tests\Support\Gate;
|
|
|
|
use Tests\TestCase;
|
|
use App\Users\Models\User;
|
|
use Domain\Files\Models\File;
|
|
use Domain\Sharing\Models\Share;
|
|
use Domain\Folders\Models\Folder;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class GateTest extends TestCase
|
|
{
|
|
/**
|
|
* @test
|
|
*/
|
|
public function owner_rename_folder()
|
|
{
|
|
$user = User::factory(User::class)
|
|
->create();
|
|
|
|
$folder = Folder::factory(Folder::class)
|
|
->create([
|
|
'user_id' => $user->id,
|
|
]);
|
|
|
|
$this
|
|
->actingAs($user)
|
|
->patchJson("/api/rename/{$folder->id}", [
|
|
'name' => 'Renamed Folder',
|
|
'type' => 'folder',
|
|
])
|
|
->assertStatus(200)
|
|
->assertJsonFragment([
|
|
'name' => 'Renamed Folder',
|
|
]);
|
|
|
|
$this->assertDatabaseHas('folders', [
|
|
'name' => 'Renamed Folder',
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* @test
|
|
*/
|
|
public function guest_rename_folder()
|
|
{
|
|
// check private or public share record
|
|
collect([true, false])
|
|
->each(function ($is_protected) {
|
|
$user = User::factory(User::class)
|
|
->create();
|
|
|
|
$root = Folder::factory(Folder::class)
|
|
->create([
|
|
'user_id' => $user->id,
|
|
]);
|
|
|
|
$children = Folder::factory(Folder::class)
|
|
->create([
|
|
'user_id' => $user->id,
|
|
'parent_id' => $root->id,
|
|
]);
|
|
|
|
$share = Share::factory(Share::class)
|
|
->create([
|
|
'item_id' => $root->id,
|
|
'user_id' => $user->id,
|
|
'type' => 'folder',
|
|
'is_protected' => $is_protected,
|
|
'permission' => 'editor',
|
|
]);
|
|
|
|
// Check shared item protected by password
|
|
if ($is_protected) {
|
|
$cookie = ['share_session' => json_encode([
|
|
'token' => $share->token,
|
|
'authenticated' => true,
|
|
])];
|
|
|
|
$this
|
|
->withUnencryptedCookies($cookie)
|
|
->patch("/api/editor/rename/{$children->id}/$share->token", [
|
|
'name' => 'Renamed Folder',
|
|
'type' => 'folder',
|
|
])
|
|
->assertStatus(201)
|
|
->assertJsonFragment([
|
|
'name' => 'Renamed Folder',
|
|
]);
|
|
}
|
|
|
|
// Check public shared item
|
|
if (! $is_protected) {
|
|
$this->patchJson("/api/editor/rename/{$children->id}/$share->token", [
|
|
'name' => 'Renamed Folder',
|
|
'type' => 'folder',
|
|
])
|
|
->assertStatus(201)
|
|
->assertJsonFragment([
|
|
'name' => 'Renamed Folder',
|
|
]);
|
|
}
|
|
|
|
$this->assertDatabaseHas('folders', [
|
|
'name' => 'Renamed Folder',
|
|
'id' => $children->id,
|
|
]);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* @test
|
|
*/
|
|
public function team_member_with_can_edit_privilege_rename_folder()
|
|
{
|
|
$owner = User::factory(User::class)
|
|
->create();
|
|
|
|
$member = User::factory(User::class)
|
|
->create();
|
|
|
|
$teamFolder = Folder::factory(Folder::class)
|
|
->create([
|
|
'user_id' => $owner->id,
|
|
'team_folder' => 1,
|
|
'name' => 'Team Folder',
|
|
]);
|
|
|
|
$parent = Folder::factory(Folder::class)
|
|
->create([
|
|
'user_id' => $owner->id,
|
|
'parent_id' => $teamFolder->id,
|
|
]);
|
|
|
|
$children = Folder::factory(Folder::class)
|
|
->create([
|
|
'user_id' => $owner->id,
|
|
'parent_id' => $parent->id,
|
|
]);
|
|
|
|
DB::table('team_folder_members')
|
|
->insert([
|
|
[
|
|
'parent_id' => $teamFolder->id,
|
|
'user_id' => $member->id,
|
|
'permission' => 'can-edit',
|
|
],
|
|
]);
|
|
|
|
$this
|
|
->actingAs($member)
|
|
->patchJson("/api/rename/{$children->id}", [
|
|
'name' => 'Renamed Folder',
|
|
'type' => 'folder',
|
|
])
|
|
->assertStatus(200)
|
|
->assertJsonFragment([
|
|
'name' => 'Renamed Folder',
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* @test
|
|
*/
|
|
public function team_member_with_can_visit_privilege_try_rename_folder()
|
|
{
|
|
$owner = User::factory(User::class)
|
|
->create();
|
|
|
|
$member = User::factory(User::class)
|
|
->create();
|
|
|
|
$teamFolder = Folder::factory(Folder::class)
|
|
->create([
|
|
'user_id' => $owner->id,
|
|
'team_folder' => 1,
|
|
'name' => 'Team Folder',
|
|
]);
|
|
|
|
$parent = Folder::factory(Folder::class)
|
|
->create([
|
|
'user_id' => $owner->id,
|
|
'parent_id' => $teamFolder->id,
|
|
]);
|
|
|
|
$children = Folder::factory(Folder::class)
|
|
->create([
|
|
'user_id' => $owner->id,
|
|
'parent_id' => $parent->id,
|
|
'name' => 'Captivating',
|
|
]);
|
|
|
|
DB::table('team_folder_members')
|
|
->insert([
|
|
[
|
|
'parent_id' => $teamFolder->id,
|
|
'user_id' => $member->id,
|
|
'permission' => 'can-view',
|
|
],
|
|
]);
|
|
|
|
$this
|
|
->actingAs($member)
|
|
->patchJson("/api/rename/{$children->id}", [
|
|
'name' => 'Renamed Folder',
|
|
'type' => 'folder',
|
|
])
|
|
->assertStatus(403);
|
|
|
|
$this->assertDatabaseHas('folders', [
|
|
'name' => 'Captivating',
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* @test
|
|
*/
|
|
public function team_member_rename_file()
|
|
{
|
|
$owner = User::factory(User::class)
|
|
->create();
|
|
|
|
$member = User::factory(User::class)
|
|
->create();
|
|
|
|
$teamFolder = Folder::factory(Folder::class)
|
|
->create([
|
|
'user_id' => $owner->id,
|
|
'team_folder' => 1,
|
|
'name' => 'Team Folder',
|
|
]);
|
|
|
|
$file = File::factory(File::class)
|
|
->create([
|
|
'user_id' => $owner->id,
|
|
'parent_id' => $teamFolder->id,
|
|
]);
|
|
|
|
DB::table('team_folder_members')
|
|
->insert([
|
|
[
|
|
'parent_id' => $teamFolder->id,
|
|
'user_id' => $member->id,
|
|
'permission' => 'can-edit',
|
|
],
|
|
]);
|
|
|
|
$this
|
|
->actingAs($member)
|
|
->patchJson("/api/rename/{$file->id}", [
|
|
'name' => 'Renamed File',
|
|
'type' => 'file',
|
|
])
|
|
->assertStatus(200)
|
|
->assertJsonFragment([
|
|
'name' => 'Renamed File',
|
|
]);
|
|
}
|
|
}
|