public function setUp()
{
parent::setUp();
- $this->user = $this->getNewBlankUser();
+ $this->user = $this->getViewer();
+ }
+
+ protected function getViewer()
+ {
+ $role = \BookStack\Role::getRole('viewer');
+ $viewer = $this->getNewBlankUser();
+ $viewer->attachRole($role);;
+ return $viewer;
}
/**
$this->asAdmin()->visit('/settings')
->click('Roles')
->seePageIs('/settings/roles')
- ->click('Add new role')
+ ->click('Create New Role')
->type('Test Role', 'display_name')
->type('A little test description', 'description')
->press('Save Role')
{
$page = \BookStack\Page::take(1)->get()->first();
$this->actingAs($this->user)->visit($page->getUrl())
- ->dontSee('Restrict')
- ->visit($page->getUrl() . '/restrict')
+ ->dontSee('Permissions')
+ ->visit($page->getUrl() . '/permissions')
->seePageIs('/');
$this->giveUserPermissions($this->user, ['restrictions-manage-all']);
$this->actingAs($this->user)->visit($page->getUrl())
- ->see('Restrict')
- ->click('Restrict')
- ->see('Page Restrictions')->seePageIs($page->getUrl() . '/restrict');
+ ->see('Permissions')
+ ->click('Permissions')
+ ->see('Page Permissions')->seePageIs($page->getUrl() . '/permissions');
}
public function test_restrictions_manage_own_permission()
{
- $otherUsersPage = \BookStack\Page::take(1)->get()->first();
+ $otherUsersPage = \BookStack\Page::first();
$content = $this->createEntityChainBelongingToUser($this->user);
// Check can't restrict other's content
$this->actingAs($this->user)->visit($otherUsersPage->getUrl())
- ->dontSee('Restrict')
- ->visit($otherUsersPage->getUrl() . '/restrict')
+ ->dontSee('Permissions')
+ ->visit($otherUsersPage->getUrl() . '/permissions')
->seePageIs('/');
// Check can't restrict own content
$this->actingAs($this->user)->visit($content['page']->getUrl())
- ->dontSee('Restrict')
- ->visit($content['page']->getUrl() . '/restrict')
+ ->dontSee('Permissions')
+ ->visit($content['page']->getUrl() . '/permissions')
->seePageIs('/');
$this->giveUserPermissions($this->user, ['restrictions-manage-own']);
// Check can't restrict other's content
$this->actingAs($this->user)->visit($otherUsersPage->getUrl())
- ->dontSee('Restrict')
- ->visit($otherUsersPage->getUrl() . '/restrict')
+ ->dontSee('Permissions')
+ ->visit($otherUsersPage->getUrl() . '/permissions')
->seePageIs('/');
// Check can restrict own content
$this->actingAs($this->user)->visit($content['page']->getUrl())
- ->see('Restrict')
- ->click('Restrict')
- ->seePageIs($content['page']->getUrl() . '/restrict');
+ ->see('Permissions')
+ ->click('Permissions')
+ ->seePageIs($content['page']->getUrl() . '/permissions');
}
/**
$this->checkAccessPermission('book-create-all', [
'/books/create'
], [
- '/books' => 'Add new book'
+ '/books' => 'Create New Book'
]);
$this->visit('/books/create')
$baseUrl = $ownBook->getUrl() . '/page';
- $this->checkAccessPermission('page-create-own', [
- $baseUrl . '/create',
- $ownChapter->getUrl() . '/create-page'
- ], [
+ $createUrl = $baseUrl . '/create';
+ $createUrlChapter = $ownChapter->getUrl() . '/create-page';
+ $accessUrls = [$createUrl, $createUrlChapter];
+
+ foreach ($accessUrls as $url) {
+ $this->actingAs($this->user)->visit('/')->visit($url)
+ ->seePageIs('/');
+ }
+
+ $this->checkAccessPermission('page-create-own', [], [
$ownBook->getUrl() => 'New Page',
$ownChapter->getUrl() => 'New Page'
]);
+ $this->giveUserPermissions($this->user, ['page-create-own']);
+
+ foreach ($accessUrls as $index => $url) {
+ $this->actingAs($this->user)->visit('/')->visit($url);
+ $expectedUrl = \BookStack\Page::where('draft', '=', true)->orderBy('id', 'desc')->first()->getUrl();
+ $this->seePageIs($expectedUrl);
+ }
+
$this->visit($baseUrl . '/create')
->type('test page', 'name')
->type('page desc', 'html')
$book = \BookStack\Book::take(1)->get()->first();
$chapter = \BookStack\Chapter::take(1)->get()->first();
$baseUrl = $book->getUrl() . '/page';
- $this->checkAccessPermission('page-create-all', [
- $baseUrl . '/create',
- $chapter->getUrl() . '/create-page'
- ], [
+ $createUrl = $baseUrl . '/create';
+
+ $createUrlChapter = $chapter->getUrl() . '/create-page';
+ $accessUrls = [$createUrl, $createUrlChapter];
+
+ foreach ($accessUrls as $url) {
+ $this->actingAs($this->user)->visit('/')->visit($url)
+ ->seePageIs('/');
+ }
+
+ $this->checkAccessPermission('page-create-all', [], [
$book->getUrl() => 'New Page',
$chapter->getUrl() => 'New Page'
]);
+ $this->giveUserPermissions($this->user, ['page-create-all']);
+
+ foreach ($accessUrls as $index => $url) {
+ $this->actingAs($this->user)->visit('/')->visit($url);
+ $expectedUrl = \BookStack\Page::where('draft', '=', true)->orderBy('id', 'desc')->first()->getUrl();
+ $this->seePageIs($expectedUrl);
+ }
+
$this->visit($baseUrl . '/create')
->type('test page', 'name')
->type('page desc', 'html')
->dontSeeInElement('.book-content', $otherPage->name);
}
+ public function test_public_role_visible_in_user_edit_screen()
+ {
+ $user = \BookStack\User::first();
+ $this->asAdmin()->visit('/settings/users/' . $user->id)
+ ->seeElement('#roles-admin')
+ ->seeElement('#roles-public');
+ }
+
+ public function test_public_role_visible_in_role_listing()
+ {
+ $this->asAdmin()->visit('/settings/roles')
+ ->see('Admin')
+ ->see('Public');
+ }
+
+ public function test_public_role_visible_in_default_role_setting()
+ {
+ $this->asAdmin()->visit('/settings')
+ ->seeElement('[data-role-name="admin"]')
+ ->seeElement('[data-role-name="public"]');
+
+ }
+
+ public function test_public_role_not_deleteable()
+ {
+ $this->asAdmin()->visit('/settings/roles')
+ ->click('Public')
+ ->see('Edit Role')
+ ->click('Delete Role')
+ ->press('Confirm')
+ ->see('Delete Role')
+ ->see('Cannot be deleted');
+ }
+
}