X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/919660678bec2b94eaa84ac60d0313f5ef07dfb7..refs/pull/1272/head:/tests/Permissions/RolesTest.php diff --git a/tests/Permissions/RolesTest.php b/tests/Permissions/RolesTest.php index 95cb7cd57..da2abb0bd 100644 --- a/tests/Permissions/RolesTest.php +++ b/tests/Permissions/RolesTest.php @@ -78,6 +78,28 @@ class RolesTest extends BrowserKitTest ->dontSee($testRoleUpdateName); } + public function test_admin_role_cannot_be_removed_if_last_admin() + { + $adminRole = Role::where('system_name', '=', 'admin')->first(); + $adminUser = $this->getAdmin(); + $adminRole->users()->where('id', '!=', $adminUser->id)->delete(); + $this->assertEquals($adminRole->users()->count(), 1); + + $viewerRole = $this->getViewer()->roles()->first(); + + $editUrl = '/settings/users/' . $adminUser->id; + $this->actingAs($adminUser)->put($editUrl, [ + 'name' => $adminUser->name, + 'email' => $adminUser->email, + 'roles' => [ + 'viewer' => strval($viewerRole->id), + ] + ])->followRedirects(); + + $this->seePageIs($editUrl); + $this->see('This user is the only user assigned to the administrator role'); + } + public function test_manage_user_permission() { $this->actingAs($this->user)->visit('/settings/users') @@ -87,6 +109,16 @@ class RolesTest extends BrowserKitTest ->seePageIs('/settings/users'); } + public function test_manage_users_permission_shows_link_in_header_if_does_not_have_settings_manage_permision() + { + $usersLink = 'href="'.url('/settings/users') . '"'; + $this->actingAs($this->user)->visit('/')->dontSee($usersLink); + $this->giveUserPermissions($this->user, ['users-manage']); + $this->actingAs($this->user)->visit('/')->see($usersLink); + $this->giveUserPermissions($this->user, ['settings-manage', 'users-manage']); + $this->actingAs($this->user)->visit('/')->dontSee($usersLink); + } + public function test_user_roles_manage_permission() { $this->actingAs($this->user)->visit('/settings/roles')