X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/c724bfe4d37037e90a305b5ff9410070ccf90bb9..refs/pull/4193/head:/tests/Permissions/Scenarios/EntityRolePermissionsTest.php diff --git a/tests/Permissions/Scenarios/EntityRolePermissionsTest.php b/tests/Permissions/Scenarios/EntityRolePermissionsTest.php index b92ce620b..55761e08c 100644 --- a/tests/Permissions/Scenarios/EntityRolePermissionsTest.php +++ b/tests/Permissions/Scenarios/EntityRolePermissionsTest.php @@ -187,7 +187,20 @@ class EntityRolePermissionsTest extends PermissionScenarioTestCase $this->assertNotVisibleToUser($page, $user); } - public function test_80_multi_role_inherited_deny_via_parent() + public function test_71_multi_role_inheriting_deny_on_own() + { + [$user, $roleA] = $this->users->newUserWithRole([], ['page-view-own']); + $roleB = $this->users->attachNewRole($user); + $page = $this->entities->page(); + $this->permissions->changeEntityOwner($page, $user); + + $this->permissions->addEntityPermission($page, [], $roleB); + + $this->assertNotVisibleToUser($page, $user); + } + + + public function test_75_multi_role_inherited_deny_via_parent() { [$user, $roleA] = $this->users->newUserWithRole([], ['page-view-all']); $roleB = $this->users->attachNewRole($user); @@ -198,4 +211,139 @@ class EntityRolePermissionsTest extends PermissionScenarioTestCase $this->assertNotVisibleToUser($page, $user); } + + public function test_76_multi_role_inherited_deny_via_parent_on_own() + { + [$user, $roleA] = $this->users->newUserWithRole([], ['page-view-own']); + $roleB = $this->users->attachNewRole($user); + $page = $this->entities->pageWithinChapter(); + $chapter = $page->chapter; + $this->permissions->changeEntityOwner($page, $user); + + $this->permissions->addEntityPermission($chapter, [], $roleB); + + $this->assertNotVisibleToUser($page, $user); + } + + public function test_80_fallback_override_allow() + { + [$user, $roleA] = $this->users->newUserWithRole(); + $page = $this->entities->page(); + + $this->permissions->setFallbackPermissions($page, []); + $this->permissions->addEntityPermission($page, ['view'], $roleA); + + $this->assertVisibleToUser($page, $user); + } + public function test_81_fallback_override_deny() + { + [$user, $roleA] = $this->users->newUserWithRole(); + $page = $this->entities->page(); + + $this->permissions->setFallbackPermissions($page, ['view']); + $this->permissions->addEntityPermission($page, [], $roleA); + + $this->assertNotVisibleToUser($page, $user); + } + + public function test_84_fallback_override_allow_multi_role() + { + [$user, $roleA] = $this->users->newUserWithRole(); + $roleB = $this->users->attachNewRole($user); + $page = $this->entities->page(); + + $this->permissions->setFallbackPermissions($page, []); + $this->permissions->addEntityPermission($page, ['view'], $roleA); + + $this->assertVisibleToUser($page, $user); + } + + public function test_85_fallback_override_deny_multi_role() + { + [$user, $roleA] = $this->users->newUserWithRole(); + $roleB = $this->users->attachNewRole($user); + $page = $this->entities->page(); + + $this->permissions->setFallbackPermissions($page, ['view']); + $this->permissions->addEntityPermission($page, [], $roleA); + + $this->assertNotVisibleToUser($page, $user); + } + + public function test_86_fallback_override_allow_inherit() + { + [$user, $roleA] = $this->users->newUserWithRole(); + $page = $this->entities->page(); + $chapter = $page->chapter; + + $this->permissions->setFallbackPermissions($chapter, []); + $this->permissions->addEntityPermission($chapter, ['view'], $roleA); + + $this->assertVisibleToUser($page, $user); + } + + public function test_87_fallback_override_deny_inherit() + { + [$user, $roleA] = $this->users->newUserWithRole(); + $page = $this->entities->page(); + $chapter = $page->chapter; + + $this->permissions->setFallbackPermissions($chapter, ['view']); + $this->permissions->addEntityPermission($chapter, [], $roleA); + + $this->assertNotVisibleToUser($page, $user); + } + + public function test_88_fallback_override_allow_multi_role_inherit() + { + [$user, $roleA] = $this->users->newUserWithRole(); + $roleB = $this->users->attachNewRole($user); + $page = $this->entities->page(); + $chapter = $page->chapter; + + $this->permissions->setFallbackPermissions($chapter, []); + $this->permissions->addEntityPermission($chapter, ['view'], $roleA); + + $this->assertVisibleToUser($page, $user); + } + + public function test_89_fallback_override_deny_multi_role_inherit() + { + [$user, $roleA] = $this->users->newUserWithRole(); + $roleB = $this->users->attachNewRole($user); + $page = $this->entities->page(); + $chapter = $page->chapter; + + $this->permissions->setFallbackPermissions($chapter, ['view']); + $this->permissions->addEntityPermission($chapter, [], $roleA); + + $this->assertNotVisibleToUser($page, $user); + } + + public function test_90_fallback_overrides_parent_entity_role_deny() + { + [$user, $roleA] = $this->users->newUserWithRole(); + $page = $this->entities->page(); + $chapter = $page->chapter; + + $this->permissions->setFallbackPermissions($chapter, []); + $this->permissions->setFallbackPermissions($page, []); + $this->permissions->addEntityPermission($chapter, ['view'], $roleA); + + $this->assertNotVisibleToUser($page, $user); + } + + public function test_91_fallback_overrides_parent_entity_role_inherit() + { + [$user, $roleA] = $this->users->newUserWithRole(); + $page = $this->entities->page(); + $chapter = $page->chapter; + $book = $page->book; + + $this->permissions->setFallbackPermissions($book, []); + $this->permissions->setFallbackPermissions($chapter, []); + $this->permissions->addEntityPermission($book, ['view'], $roleA); + + $this->assertNotVisibleToUser($page, $user); + } }