Files
vuefilemanager/tests/Support/Gate/GateTest.php
Čarodej 19cc01131b - gate implementation
- protected shared view fix
2021-09-24 10:52:19 +02:00

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',
]);
}
}