3 class RolesTest extends TestCase
7 public function setUp()
13 * Create a new basic role for testing purposes.
16 protected function createNewRole()
18 $permissionRepo = app('BookStack\Repos\PermissionsRepo');
19 return $permissionRepo->saveNewRole(factory(\BookStack\Role::class)->make()->toArray());
22 public function test_admin_can_see_settings()
24 $this->asAdmin()->visit('/settings')->see('Settings');
27 public function test_cannot_delete_admin_role()
29 $adminRole = \BookStack\Role::getRole('admin');
30 $deletePageUrl = '/settings/roles/delete/' . $adminRole->id;
31 $this->asAdmin()->visit($deletePageUrl)
33 ->seePageIs($deletePageUrl)
34 ->see('cannot be deleted');
37 public function test_role_cannot_be_deleted_if_default()
39 $newRole = $this->createNewRole();
40 $this->setSettings(['registration-role' => $newRole->id]);
42 $deletePageUrl = '/settings/roles/delete/' . $newRole->id;
43 $this->asAdmin()->visit($deletePageUrl)
45 ->seePageIs($deletePageUrl)
46 ->see('cannot be deleted');
49 public function test_role_create_update_delete_flow()
51 $testRoleName = 'Test Role';
52 $testRoleDesc = 'a little test description';
53 $testRoleUpdateName = 'An Super Updated role';
56 $this->asAdmin()->visit('/settings')
58 ->seePageIs('/settings/roles')
59 ->click('Add new role')
60 ->type('Test Role', 'display_name')
61 ->type('A little test description', 'description')
63 ->seeInDatabase('roles', ['display_name' => $testRoleName, 'name' => 'test-role', 'description' => $testRoleDesc])
64 ->seePageIs('/settings/roles');
66 $this->asAdmin()->visit('/settings/roles')
68 ->click($testRoleName)
69 ->type($testRoleUpdateName, '#display_name')
71 ->seeInDatabase('roles', ['display_name' => $testRoleUpdateName, 'name' => 'test-role', 'description' => $testRoleDesc])
72 ->seePageIs('/settings/roles');
74 $this->asAdmin()->visit('/settings/roles')
75 ->click($testRoleUpdateName)
76 ->click('Delete Role')
77 ->see($testRoleUpdateName)
79 ->seePageIs('/settings/roles')
80 ->dontSee($testRoleUpdateName);