X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/387047f26207e97ab05c315e65bcc961ea71880a..refs/pull/1462/head:/tests/Entity/PageContentTest.php diff --git a/tests/Entity/PageContentTest.php b/tests/Entity/PageContentTest.php index 6f07b9626..6201cf5d7 100644 --- a/tests/Entity/PageContentTest.php +++ b/tests/Entity/PageContentTest.php @@ -1,7 +1,8 @@ get(2); + $secondPage = Page::where('id', '!=', $page->id)->first(); $secondPage->html = "
Hello, This is a test
This is a second block of content
"; $secondPage->save(); @@ -35,22 +36,128 @@ class PageContentTest extends TestCase $pageContent->assertSee('Well This is a second block of content'); } - public function test_page_revision_views_viewable() + public function test_saving_page_with_includes() + { + $page = Page::first(); + $secondPage = Page::where('id', '!=', $page->id)->first(); + + $this->asEditor(); + $includeTag = '{{@' . $secondPage->id . '}}'; + $page->html = '' . $includeTag . '
'; + + $resp = $this->put($page->getUrl(), ['name' => $page->name, 'html' => $page->html, 'summary' => '']); + + $resp->assertStatus(302); + + $page = Page::find($page->id); + $this->assertContains($includeTag, $page->html); + $this->assertEquals('', $page->text); + } + + public function test_page_includes_do_not_break_tables() + { + $page = Page::first(); + $secondPage = Page::where('id', '!=', $page->id)->first(); + + $content = 'test |
Hello
'; + $page->html = "escape {$script}"; + $page->save(); + + $pageView = $this->get($page->getUrl()); + $pageView->assertDontSee($script); + $pageView->assertSee('Hello
'); + } + + public function test_page_content_scripts_show_when_configured() { $this->asEditor(); + $page = Page::first(); + config()->push('app.allow_content_scripts', 'true'); - $entityRepo = $this->app[EntityRepo::class]; + $script = 'abc123abc123'; + $page->html = "no escape {$script}"; + $page->save(); + + $pageView = $this->get($page->getUrl()); + $pageView->assertSee($script); + $pageView->assertDontSee('abc123abc123'); + } + + public function test_page_inline_on_attributes_show_if_configured() + { + $this->asEditor(); $page = Page::first(); - $entityRepo->updatePage($page, $page->book_id, ['name' => 'updated page', 'html' => 'new content
', 'summary' => 'page revision testing']); - $pageRevision = $page->revisions->last(); + config()->push('app.allow_content_scripts', 'true'); - $revisionView = $this->get($page->getUrl() . '/revisions/' . $pageRevision->id); - $revisionView->assertStatus(200); - $revisionView->assertSee('new content'); + $script = 'Hello
'; + $page->html = "escape {$script}"; + $page->save(); - $revisionView = $this->get($page->getUrl() . '/revisions/' . $pageRevision->id . '/changes'); - $revisionView->assertStatus(200); - $revisionView->assertSee('new content'); + $pageView = $this->get($page->getUrl()); + $pageView->assertSee($script); + $pageView->assertDontSee('Hello
'); } + public function test_duplicate_ids_does_not_break_page_render() + { + $this->asEditor(); + $pageA = Page::first(); + $pageB = Page::query()->where('id', '!=', $pageA->id)->first(); + + $content = '{{@'. $pageA->id .'#test}}
'; + $pageB->save(); + + $pageView = $this->get($pageB->getUrl()); + $pageView->assertSuccessful(); + } + + public function test_duplicate_ids_fixed_on_page_save() + { + $this->asEditor(); + $page = Page::first(); + + $content = '