mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-07-31 15:24:31 +03:00
Refactored some permission controls and increased testing for roles system
This commit is contained in:
@ -9,13 +9,14 @@ class RolesTest extends TestCase
|
||||
parent::setUp();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new basic role for testing purposes.
|
||||
* @return static
|
||||
*/
|
||||
protected function createNewRole()
|
||||
{
|
||||
return \BookStack\Role::forceCreate([
|
||||
'name' => 'test-role',
|
||||
'display_name' => 'Test Role',
|
||||
'description' => 'This is a role for testing'
|
||||
]);
|
||||
$permissionRepo = app('BookStack\Repos\PermissionsRepo');
|
||||
return $permissionRepo->saveNewRole(factory(\BookStack\Role::class)->make()->toArray());
|
||||
}
|
||||
|
||||
public function test_admin_can_see_settings()
|
||||
@ -45,4 +46,38 @@ class RolesTest extends TestCase
|
||||
->see('cannot be deleted');
|
||||
}
|
||||
|
||||
public function test_role_create_update_delete_flow()
|
||||
{
|
||||
$testRoleName = 'Test Role';
|
||||
$testRoleDesc = 'a little test description';
|
||||
$testRoleUpdateName = 'An Super Updated role';
|
||||
|
||||
// Creation
|
||||
$this->asAdmin()->visit('/settings')
|
||||
->click('Roles')
|
||||
->seePageIs('/settings/roles')
|
||||
->click('Add new role')
|
||||
->type('Test Role', 'display_name')
|
||||
->type('A little test description', 'description')
|
||||
->press('Save Role')
|
||||
->seeInDatabase('roles', ['display_name' => $testRoleName, 'name' => 'test-role', 'description' => $testRoleDesc])
|
||||
->seePageIs('/settings/roles');
|
||||
// Updating
|
||||
$this->asAdmin()->visit('/settings/roles')
|
||||
->see($testRoleDesc)
|
||||
->click($testRoleName)
|
||||
->type($testRoleUpdateName, '#display_name')
|
||||
->press('Save Role')
|
||||
->seeInDatabase('roles', ['display_name' => $testRoleUpdateName, 'name' => 'test-role', 'description' => $testRoleDesc])
|
||||
->seePageIs('/settings/roles');
|
||||
// Deleting
|
||||
$this->asAdmin()->visit('/settings/roles')
|
||||
->click($testRoleUpdateName)
|
||||
->click('Delete Role')
|
||||
->see($testRoleUpdateName)
|
||||
->press('Confirm')
|
||||
->seePageIs('/settings/roles')
|
||||
->dontSee($testRoleUpdateName);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -79,8 +79,8 @@ class TestCase extends Illuminate\Foundation\Testing\TestCase
|
||||
protected function getNewUser($attributes = [])
|
||||
{
|
||||
$user = factory(\BookStack\User::class)->create($attributes);
|
||||
$userRepo = app('BookStack\Repos\UserRepo');
|
||||
$userRepo->attachDefaultRole($user);
|
||||
$role = \BookStack\Role::getRole('editor');
|
||||
$user->attachRole($role);;
|
||||
return $user;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user