39 lines
1.2 KiB
PHP
39 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace Tests\Feature;
|
|
|
|
use App\Models\Tenant;
|
|
use App\Models\User;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Spatie\Permission\Models\Permission;
|
|
use Spatie\Permission\Models\Role;
|
|
use Tests\TestCase;
|
|
|
|
class PermissionTest extends TestCase
|
|
{
|
|
use RefreshDatabase;
|
|
|
|
public function test_role_assignments_are_tenant_scoped(): void
|
|
{
|
|
$tenantA = Tenant::factory()->create();
|
|
$tenantB = Tenant::factory()->create();
|
|
$userA = User::factory()->for($tenantA)->create();
|
|
$userB = User::factory()->for($tenantB)->create();
|
|
$permission = Permission::create(['name' => 'device.view', 'guard_name' => 'web']);
|
|
|
|
setPermissionsTeamId($tenantA->id);
|
|
$roleA = Role::create(['name' => 'NOC', 'guard_name' => 'web']);
|
|
$roleA->givePermissionTo($permission);
|
|
$userA->assignRole($roleA);
|
|
|
|
setPermissionsTeamId($tenantB->id);
|
|
$roleB = Role::create(['name' => 'NOC', 'guard_name' => 'web']);
|
|
$userB->assignRole($roleB);
|
|
|
|
setPermissionsTeamId($tenantA->id);
|
|
$this->assertTrue($userA->fresh()->can('device.view'));
|
|
setPermissionsTeamId($tenantB->id);
|
|
$this->assertFalse($userB->fresh()->can('device.view'));
|
|
}
|
|
}
|