- Restrictions for team folders

This commit is contained in:
Čarodej
2022-01-05 17:52:08 +01:00
parent b4887cea0e
commit ec29764c3f
16 changed files with 275 additions and 137 deletions

View File

@@ -5,6 +5,7 @@ use Tests\TestCase;
use App\Users\Models\User;
use Domain\Files\Models\File;
use Domain\Settings\Models\Setting;
use Domain\Teams\Models\TeamFolderMember;
class DefaultLimitationTest extends TestCase
{
@@ -105,4 +106,82 @@ class DefaultLimitationTest extends TestCase
'name' => 'New Folder',
]);
}
/**
* @test
*/
public function it_cant_invite_team_members_into_team_folder_because_user_exceeded_members_limit()
{
$user = User::factory()
->hasFolders([
'team_folder' => true,
])
->create();
TeamFolderMember::create([
'parent_id' => $user->folders[0]->id,
'user_id' => $user->id,
'permission' => 'owner',
]);
// Create team folder members
$members = User::factory()
->count(5)
->create()
->each(
fn ($member) => TeamFolderMember::factory()
->create([
'parent_id' => $user->folders[0]->id,
'user_id' => $member->id,
])
);
// Try invite new members, it has to fail
$this
->actingAs($user)
->post('/api/teams/folders', [
'name' => 'Company Project',
'invitations' => [
[
'email' => 'test@doe.com',
'permission' => 'can-edit',
],
[
'email' => 'test2@doe.com',
'permission' => 'can-edit',
],
[
'email' => 'test3@doe.com',
'permission' => 'can-edit',
],
[
'email' => 'test4@doe.com',
'permission' => 'can-edit',
],
[
'email' => 'test5@doe.com',
'permission' => 'can-edit',
],
[
'email' => 'test6@doe.com',
'permission' => 'can-edit',
],
],
])
->assertStatus(401);
// Invite existing member, it has to go through
$this
->actingAs($user)
->post('/api/teams/folders', [
'name' => 'Company Project',
'invitations' => [
[
'email' => $members[0]->email,
'permission' => 'can-edit',
],
],
])
->assertCreated();
}
}

View File

@@ -5,6 +5,7 @@ use Tests\TestCase;
use App\Users\Models\User;
use Domain\Files\Models\File;
use Domain\Settings\Models\Setting;
use Domain\Teams\Models\TeamFolderMember;
class FixedBillingLimitationTest extends TestCase
{
@@ -13,7 +14,7 @@ class FixedBillingLimitationTest extends TestCase
parent::setUp();
Setting::updateOrCreate([
'name' => 'subscription_type',
'name' => 'subscription_type',
], [
'value' => 'fixed',
]);
@@ -58,7 +59,7 @@ class FixedBillingLimitationTest extends TestCase
$this
->actingAs($user)
->postJson('/api/create-folder', [
'name' => 'New Folder',
'name' => 'New Folder',
])
->assertStatus(201);
@@ -66,4 +67,82 @@ class FixedBillingLimitationTest extends TestCase
'name' => 'New Folder',
]);
}
/**
* @test
*/
public function it_cant_invite_team_members_into_team_folder_because_user_exceeded_members_limit()
{
$user = User::factory()
->hasFolders([
'team_folder' => true,
])
->create();
TeamFolderMember::create([
'parent_id' => $user->folders[0]->id,
'user_id' => $user->id,
'permission' => 'owner',
]);
// Create team folder members
$members = User::factory()
->count(5)
->create()
->each(
fn ($member) => TeamFolderMember::factory()
->create([
'parent_id' => $user->folders[0]->id,
'user_id' => $member->id,
])
);
// Try invite new members, it has to fail
$this
->actingAs($user)
->post('/api/teams/folders', [
'name' => 'Company Project',
'invitations' => [
[
'email' => 'test@doe.com',
'permission' => 'can-edit',
],
[
'email' => 'test2@doe.com',
'permission' => 'can-edit',
],
[
'email' => 'test3@doe.com',
'permission' => 'can-edit',
],
[
'email' => 'test4@doe.com',
'permission' => 'can-edit',
],
[
'email' => 'test5@doe.com',
'permission' => 'can-edit',
],
[
'email' => 'test6@doe.com',
'permission' => 'can-edit',
],
],
])
->assertStatus(401);
// Invite existing member, it has to go through
$this
->actingAs($user)
->post('/api/teams/folders', [
'name' => 'Company Project',
'invitations' => [
[
'email' => $members[0]->email,
'permission' => 'can-edit',
],
],
])
->assertCreated();
}
}

View File

@@ -49,16 +49,30 @@ class MeteredBillingLimitationTest extends TestCase
$user = User::factory()
->create();
// Create basic folder
$this
->actingAs($user)
->postJson('/api/create-folder', [
'name' => 'New Folder',
'name' => 'New Folder',
])
->assertStatus(201);
$this->assertDatabaseHas('folders', [
'name' => 'New Folder',
]);
// Create team folder
$this
->actingAs($user)
->postJson('/api/teams/folders', [
'name' => 'New Team Folder',
'invitations' => [
[
'email' => 'john@doe.com',
'permission' => 'can-edit',
'type' => 'invitation',
],
],
])
->assertStatus(201);
$this->assertDatabaseCount('folders', 2);
}
/**
@@ -70,15 +84,29 @@ class MeteredBillingLimitationTest extends TestCase
->hasFailedpayments(3)
->create();
// Create basic folder
$this
->actingAs($user)
->postJson('/api/create-folder', [
'name' => 'New Folder',
'name' => 'New Folder',
])
->assertStatus(401);
$this->assertDatabaseMissing('folders', [
'name' => 'New Folder',
]);
// Create team folder
$this
->actingAs($user)
->postJson('/api/teams/folders', [
'name' => 'New Folder',
'invitations' => [
[
'email' => 'john@doe.com',
'permission' => 'can-edit',
'type' => 'invitation',
],
],
])
->assertStatus(401);
$this->assertDatabaseCount('folders', 0);
}
}