X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/038015f852f8ea7f233d95dcb7cdc59f83e22bc2..refs/pull/3693/head:/tests/Permissions/RolesTest.php diff --git a/tests/Permissions/RolesTest.php b/tests/Permissions/RolesTest.php index fe2139e59..3604a3cac 100644 --- a/tests/Permissions/RolesTest.php +++ b/tests/Permissions/RolesTest.php @@ -12,8 +12,8 @@ use BookStack\Entities\Models\Chapter; use BookStack\Entities\Models\Entity; use BookStack\Entities\Models\Page; use BookStack\Uploads\Image; +use Illuminate\Testing\TestResponse; use Tests\TestCase; -use Tests\TestResponse; class RolesTest extends TestCase { @@ -59,13 +59,13 @@ class RolesTest extends TestCase // Creation $resp = $this->asAdmin()->get('/settings/features'); - $resp->assertElementContains('a[href="' . url('/http/source.bookstackapp.com/settings/roles') . '"]', 'Roles'); + $this->withHtml($resp)->assertElementContains('a[href="' . url('/http/source.bookstackapp.com/settings/roles') . '"]', 'Roles'); $resp = $this->get('/settings/roles'); - $resp->assertElementContains('a[href="' . url('/http/source.bookstackapp.com/settings/roles/new') . '"]', 'Create New Role'); + $this->withHtml($resp)->assertElementContains('a[href="' . url('/http/source.bookstackapp.com/settings/roles/new') . '"]', 'Create New Role'); $resp = $this->get('/settings/roles/new'); - $resp->assertElementContains('form[action="' . url('/http/source.bookstackapp.com/settings/roles/new') . '"]', 'Save Role'); + $this->withHtml($resp)->assertElementContains('form[action="' . url('/http/source.bookstackapp.com/settings/roles/new') . '"]', 'Save Role'); $resp = $this->post('/settings/roles/new', [ 'display_name' => $testRoleName, @@ -89,7 +89,7 @@ class RolesTest extends TestCase $resp = $this->get('/settings/roles/' . $role->id); $resp->assertSee($testRoleName); $resp->assertSee($testRoleDesc); - $resp->assertElementContains('form[action="' . url('/http/source.bookstackapp.com/settings/roles/' . $role->id) . '"]', 'Save Role'); + $this->withHtml($resp)->assertElementContains('form[action="' . url('/http/source.bookstackapp.com/settings/roles/' . $role->id) . '"]', 'Save Role'); $resp = $this->put('/settings/roles/' . $role->id, [ 'display_name' => $testRoleUpdateName, @@ -105,11 +105,11 @@ class RolesTest extends TestCase // Deleting $resp = $this->get('/settings/roles/' . $role->id); - $resp->assertElementContains('a[href="' . url("/http/source.bookstackapp.com/settings/roles/delete/$role->id") . '"]', 'Delete Role'); + $this->withHtml($resp)->assertElementContains('a[href="' . url("/http/source.bookstackapp.com/settings/roles/delete/$role->id") . '"]', 'Delete Role'); $resp = $this->get("/settings/roles/delete/$role->id"); $resp->assertSee($testRoleUpdateName); - $resp->assertElementContains('form[action="' . url("/http/source.bookstackapp.com/settings/roles/delete/$role->id") . '"]', 'Confirm'); + $this->withHtml($resp)->assertElementContains('form[action="' . url("/http/source.bookstackapp.com/settings/roles/delete/$role->id") . '"]', 'Confirm'); $resp = $this->delete("/settings/roles/delete/$role->id"); $resp->assertRedirect('/settings/roles'); @@ -154,7 +154,7 @@ class RolesTest extends TestCase $this->assertCount(1, $roleB->users()->get()); $deletePage = $this->asAdmin()->get("/settings/roles/delete/$roleB->id"); - $deletePage->assertElementExists('select[name=migrate_role_id]'); + $this->withHtml($deletePage)->assertElementExists('select[name=migrate_role_id]'); $this->asAdmin()->delete("/settings/roles/delete/$roleB->id", [ 'migrate_role_id' => $roleA->id, ]); @@ -168,7 +168,7 @@ class RolesTest extends TestCase /** @var Role $role */ $role = Role::query()->first(); $resp = $this->asAdmin()->get("/settings/roles/{$role->id}"); - $resp->assertElementContains('a[href$="/roles/new?copy_from=' . $role->id . '"]', 'Copy'); + $this->withHtml($resp)->assertElementContains('a[href$="/roles/new?copy_from=' . $role->id . '"]', 'Copy'); } public function test_copy_from_param_on_create_prefills_with_other_role_data() @@ -177,7 +177,7 @@ class RolesTest extends TestCase $role = Role::query()->first(); $resp = $this->asAdmin()->get("/settings/roles/new?copy_from={$role->id}"); $resp->assertOk(); - $resp->assertElementExists('input[name="display_name"][value="' . ($role->display_name . ' (Copy)') . '"]'); + $this->withHtml($resp)->assertElementExists('input[name="display_name"][value="' . ($role->display_name . ' (Copy)') . '"]'); } public function test_manage_user_permission() @@ -203,9 +203,9 @@ class RolesTest extends TestCase $originalEmail = $this->user->email; $this->actingAs($this->user); - $this->get($userProfileUrl) - ->assertOk() - ->assertElementExists('input[name=email][disabled]'); + $resp = $this->get($userProfileUrl) + ->assertOk(); + $this->withHtml($resp)->assertElementExists('input[name=email][disabled]'); $this->put($userProfileUrl, [ 'name' => 'my_new_name', 'email' => 'new_email@example.com', @@ -218,9 +218,9 @@ class RolesTest extends TestCase $this->giveUserPermissions($this->user, ['users-manage']); - $this->get($userProfileUrl) - ->assertOk() - ->assertElementNotExists('input[name=email][disabled]') + $resp = $this->get($userProfileUrl) + ->assertOk(); + $this->withHtml($resp)->assertElementNotExists('input[name=email][disabled]') ->assertElementExists('input[name=email]'); $this->put($userProfileUrl, [ 'name' => 'my_new_name_2', @@ -315,8 +315,8 @@ class RolesTest extends TestCase } foreach ($visibles as $url => $text) { - $this->actingAs($this->user)->get($url) - ->assertElementNotContains('.action-buttons', $text); + $resp = $this->actingAs($this->user)->get($url); + $this->withHtml($resp)->assertElementNotContains('.action-buttons', $text); } $this->giveUserPermissions($this->user, [$permission]); @@ -357,7 +357,8 @@ class RolesTest extends TestCase $ownShelf->getUrl() => 'Edit', ]); - $this->get($otherShelf->getUrl())->assertElementNotContains('.action-buttons', 'Edit'); + $resp = $this->get($otherShelf->getUrl()); + $this->withHtml($resp)->assertElementNotContains('.action-buttons', 'Edit'); $this->get($otherShelf->getUrl('/edit'))->assertRedirect('/'); } @@ -387,7 +388,8 @@ class RolesTest extends TestCase $ownShelf->getUrl() => 'Delete', ]); - $this->get($otherShelf->getUrl())->assertElementNotContains('.action-buttons', 'Delete'); + $resp = $this->get($otherShelf->getUrl()); + $this->withHtml($resp)->assertElementNotContains('.action-buttons', 'Delete'); $this->get($otherShelf->getUrl('/delete'))->assertRedirect('/'); $this->get($ownShelf->getUrl()); @@ -435,7 +437,8 @@ class RolesTest extends TestCase $ownBook->getUrl() => 'Edit', ]); - $this->get($otherBook->getUrl())->assertElementNotContains('.action-buttons', 'Edit'); + $resp = $this->get($otherBook->getUrl()); + $this->withHtml($resp)->assertElementNotContains('.action-buttons', 'Edit'); $this->get($otherBook->getUrl('/edit'))->assertRedirect('/'); } @@ -462,7 +465,8 @@ class RolesTest extends TestCase $ownBook->getUrl() => 'Delete', ]); - $this->get($otherBook->getUrl())->assertElementNotContains('.action-buttons', 'Delete'); + $resp = $this->get($otherBook->getUrl()); + $this->withHtml($resp)->assertElementNotContains('.action-buttons', 'Delete'); $this->get($otherBook->getUrl('/delete'))->assertRedirect('/'); $this->get($ownBook->getUrl()); $this->delete($ownBook->getUrl())->assertRedirect('/books'); @@ -501,7 +505,8 @@ class RolesTest extends TestCase 'description' => 'chapter desc', ])->assertRedirect($ownBook->getUrl('/chapter/test-chapter')); - $this->get($book->getUrl())->assertElementNotContains('.action-buttons', 'New Chapter'); + $resp = $this->get($book->getUrl()); + $this->withHtml($resp)->assertElementNotContains('.action-buttons', 'New Chapter'); $this->get($book->getUrl('/create-chapter'))->assertRedirect('/'); } @@ -532,7 +537,8 @@ class RolesTest extends TestCase $ownChapter->getUrl() => 'Edit', ]); - $this->get($otherChapter->getUrl())->assertElementNotContains('.action-buttons', 'Edit'); + $resp = $this->get($otherChapter->getUrl()); + $this->withHtml($resp)->assertElementNotContains('.action-buttons', 'Edit'); $this->get($otherChapter->getUrl('/edit'))->assertRedirect('/'); } @@ -560,11 +566,13 @@ class RolesTest extends TestCase ]); $bookUrl = $ownChapter->book->getUrl(); - $this->get($otherChapter->getUrl())->assertElementNotContains('.action-buttons', 'Delete'); + $resp = $this->get($otherChapter->getUrl()); + $this->withHtml($resp)->assertElementNotContains('.action-buttons', 'Delete'); $this->get($otherChapter->getUrl('/delete'))->assertRedirect('/'); $this->get($ownChapter->getUrl()); $this->delete($ownChapter->getUrl())->assertRedirect($bookUrl); - $this->get($bookUrl)->assertElementNotContains('.book-content', $ownChapter->name); + $resp = $this->get($bookUrl); + $this->withHtml($resp)->assertElementNotContains('.book-content', $ownChapter->name); } public function test_chapter_delete_all_permission() @@ -581,7 +589,8 @@ class RolesTest extends TestCase $bookUrl = $otherChapter->book->getUrl(); $this->get($otherChapter->getUrl()); $this->delete($otherChapter->getUrl())->assertRedirect($bookUrl); - $this->get($bookUrl)->assertElementNotContains('.book-content', $otherChapter->name); + $resp = $this->get($bookUrl); + $this->withHtml($resp)->assertElementNotContains('.book-content', $otherChapter->name); } public function test_page_create_own_permissions() @@ -624,10 +633,12 @@ class RolesTest extends TestCase 'html' => 'page desc', ])->assertRedirect($ownBook->getUrl('/page/test-page')); - $this->get($book->getUrl())->assertElementNotContains('.action-buttons', 'New Page'); + $resp = $this->get($book->getUrl()); + $this->withHtml($resp)->assertElementNotContains('.action-buttons', 'New Page'); $this->get($book->getUrl('/create-page'))->assertRedirect('/'); - $this->get($chapter->getUrl())->assertElementNotContains('.action-buttons', 'New Page'); + $resp = $this->get($chapter->getUrl()); + $this->withHtml($resp)->assertElementNotContains('.action-buttons', 'New Page'); $this->get($chapter->getUrl('/create-page'))->assertRedirect('/'); } @@ -687,7 +698,8 @@ class RolesTest extends TestCase $ownPage->getUrl() => 'Edit', ]); - $this->get($otherPage->getUrl())->assertElementNotContains('.action-buttons', 'Edit'); + $resp = $this->get($otherPage->getUrl()); + $this->withHtml($resp)->assertElementNotContains('.action-buttons', 'Edit'); $this->get($otherPage->getUrl() . '/edit')->assertRedirect('/'); } @@ -715,11 +727,13 @@ class RolesTest extends TestCase ]); $parent = $ownPage->chapter ?? $ownPage->book; - $this->get($otherPage->getUrl())->assertElementNotContains('.action-buttons', 'Delete'); + $resp = $this->get($otherPage->getUrl()); + $this->withHtml($resp)->assertElementNotContains('.action-buttons', 'Delete'); $this->get($otherPage->getUrl('/delete'))->assertRedirect('/'); $this->get($ownPage->getUrl()); $this->delete($ownPage->getUrl())->assertRedirect($parent->getUrl()); - $this->get($parent->getUrl())->assertElementNotContains('.book-content', $ownPage->name); + $resp = $this->get($parent->getUrl()); + $this->withHtml($resp)->assertElementNotContains('.book-content', $ownPage->name); } public function test_page_delete_all_permission() @@ -748,8 +762,8 @@ class RolesTest extends TestCase $user = User::query()->first(); $adminRole = Role::getSystemRole('admin'); $publicRole = Role::getSystemRole('public'); - $this->asAdmin()->get('/settings/users/' . $user->id) - ->assertElementExists('[name="roles[' . $adminRole->id . ']"]') + $resp = $this->asAdmin()->get('/settings/users/' . $user->id); + $this->withHtml($resp)->assertElementExists('[name="roles[' . $adminRole->id . ']"]') ->assertElementExists('[name="roles[' . $publicRole->id . ']"]'); } @@ -762,8 +776,8 @@ class RolesTest extends TestCase public function test_public_role_visible_in_default_role_setting() { - $this->asAdmin()->get('/settings/registration') - ->assertElementExists('[data-system-role-name="admin"]') + $resp = $this->asAdmin()->get('/settings/registration'); + $this->withHtml($resp)->assertElementExists('[data-system-role-name="admin"]') ->assertElementExists('[data-system-role-name="public"]'); }