37 خطوط
1.9 KiB
PHP
37 خطوط
1.9 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit\Identity;
|
|
|
|
use App\Modules\Identity\Application\RolePermissions;
|
|
use App\Modules\Identity\Domain\Enums\Permission;
|
|
use App\Modules\Identity\Domain\Enums\UserRole;
|
|
use PHPUnit\Framework\Attributes\DataProvider;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class RolePermissionsTest extends TestCase
|
|
{
|
|
#[DataProvider('permissionCases')]
|
|
public function test_core_permission_matrix(UserRole $role, Permission $permission, bool $expected): void
|
|
{
|
|
$this->assertSame($expected, (new RolePermissions)->allows($role, $permission));
|
|
}
|
|
|
|
public static function permissionCases(): array
|
|
{
|
|
return [
|
|
'designer authors' => [UserRole::CourseDesigner, Permission::CoursesAuthor, true],
|
|
'designer assigns' => [UserRole::CourseDesigner, Permission::AssignmentsManage, true],
|
|
'designer manages users' => [UserRole::CourseDesigner, Permission::UsersManage, true],
|
|
'manager cannot author' => [UserRole::Manager, Permission::CoursesAuthor, false],
|
|
'manager cannot assign' => [UserRole::Manager, Permission::AssignmentsManage, false],
|
|
'manager cannot manage users' => [UserRole::Manager, Permission::UsersManage, false],
|
|
'manager views team analytics' => [UserRole::Manager, Permission::TeamAnalyticsView, true],
|
|
'manager views personal assigned learning' => [UserRole::Manager, Permission::PersonalLearningView, true],
|
|
'learner personal learning only' => [UserRole::Learner, Permission::PersonalLearningView, true],
|
|
'learner cannot view users' => [UserRole::Learner, Permission::UsersView, false],
|
|
'super admin sees operations' => [UserRole::SuperAdmin, Permission::PlatformViewOperations, true],
|
|
'super admin lacks organization analytics' => [UserRole::SuperAdmin, Permission::OrganizationAnalyticsView, false],
|
|
];
|
|
}
|
|
}
|