Skip to content

Commit bb32489

Browse files
committed
tests for role permission manager
1 parent 4517307 commit bb32489

File tree

2 files changed

+48
-6
lines changed

2 files changed

+48
-6
lines changed

src/AuthenticationWithRolesModule.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ public static function updateRolePermissions()
9696
$settings = RolePermissionDefinitions::singleton();
9797

9898
$permissionMaintainer($settings->allowRolePermissions, true);
99-
$permissionMaintainer($settings->denyRolePermissions, true);
99+
$permissionMaintainer($settings->denyRolePermissions, false);
100100

101101
if (count($permissionAssignmentIDs) > 0) {
102102
PermissionAssignment::find(

tests/unit/UserTest.php

Lines changed: 47 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,21 @@
22

33
namespace Rhubarb\Scaffolds\AuthenticationWithRoles\Tests\unit;
44

5+
use Rhubarb\Crown\Application;
6+
use Rhubarb\Crown\Layout\LayoutModule;
57
use Rhubarb\Crown\Tests\Fixtures\TestCases\RhubarbTestCase;
8+
use Rhubarb\Scaffolds\Authentication\LoginProviders\LoginProvider;
9+
use Rhubarb\Scaffolds\AuthenticationWithRoles\AuthenticationWithRolesModule;
610
use Rhubarb\Scaffolds\AuthenticationWithRoles\DatabaseSchema;
711
use Rhubarb\Scaffolds\AuthenticationWithRoles\Permission;
812
use Rhubarb\Scaffolds\AuthenticationWithRoles\PermissionAssignment;
913
use Rhubarb\Scaffolds\AuthenticationWithRoles\PermissionException;
1014
use Rhubarb\Scaffolds\AuthenticationWithRoles\Role;
15+
use Rhubarb\Scaffolds\AuthenticationWithRoles\RolePermissionDefinitions;
1116
use Rhubarb\Scaffolds\AuthenticationWithRoles\User;
1217
use Rhubarb\Scaffolds\AuthenticationWithRoles\UserRole;
18+
use Rhubarb\Stem\Repositories\Offline\Offline;
19+
use Rhubarb\Stem\Repositories\Repository;
1320
use Rhubarb\Stem\Schema\SolutionSchema;
1421

1522
class UserTest extends RhubarbTestCase
@@ -18,13 +25,15 @@ protected function setUp()
1825
{
1926
parent::setUp();
2027

28+
Repository::setDefaultRepositoryClassName(Offline::class);
2129
SolutionSchema::registerSchema("Authentication", DatabaseSchema::class);
2230

23-
User::clearObjectCache();
24-
Role::clearObjectCache();
25-
UserRole::clearObjectCache();
26-
Permission::clearObjectCache();
27-
PermissionAssignment::clearObjectCache();
31+
$app = new Application();
32+
$app->registerModule(new AuthenticationWithRolesModule(LoginProvider::class));
33+
$app->unitTesting = true;
34+
$app->initialiseModules();
35+
36+
LayoutModule::disableLayout();
2837
}
2938

3039
public function testRoleCanBeAdded()
@@ -203,4 +212,37 @@ public function testParentageOfPermissions()
203212

204213
$this->assertTrue($user->can("Staff/Manage/Fire"));
205214
}
215+
216+
public function testRolePermissionManager()
217+
{
218+
self::assertCount(0, Role::all());
219+
self::assertCount(0, Permission::all());
220+
AuthenticationWithRolesModule::updateRolePermissions();
221+
self::assertCount(0, Role::all());
222+
self::assertCount(0, Permission::all());
223+
224+
/** @var RolePermissionDefinitions $definitions */
225+
$definitions = RolePermissionDefinitions::singleton();
226+
$definitions->allowPermissionsForRole('r1', ['p1']);
227+
$definitions->allowPermissionsForRole('r2', []);
228+
AuthenticationWithRolesModule::updateRolePermissions();
229+
$p1 = Permission::findFirst();
230+
$r1 = Role::findFirst();
231+
$r2 = Role::findLast();
232+
self::assertEquals('p1', $p1->PermissionPath);
233+
self::assertEquals('r1', $r1->RoleName);
234+
self::assertEquals('r2', $r2->RoleName);
235+
self::assertTrue($r1->can('p1'));
236+
self::assertFalse($r2->can('p1'));
237+
238+
$definitions->allowPermissionsForRole('r2', ['p1/p2']);
239+
AuthenticationWithRolesModule::updateRolePermissions();
240+
self::assertTrue($r1->can('p1/p2'));
241+
self::assertTrue($r2->can('p1/p2'));
242+
243+
$definitions->denyPermissionsForRole('r1', ['p1/p2/p3']);
244+
AuthenticationWithRolesModule::updateRolePermissions();
245+
self::assertFalse($r1->can('p1/p2/p3'));
246+
self::assertTrue($r2->can('p1/p2/p3'));
247+
}
206248
}

0 commit comments

Comments
 (0)