X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/c429cf78187e80deb63982a282a1c6889f30291a..refs/pull/3039/head:/tests/Entity/PageContentTest.php
diff --git a/tests/Entity/PageContentTest.php b/tests/Entity/PageContentTest.php
index 602198725..0b99c63c3 100644
--- a/tests/Entity/PageContentTest.php
+++ b/tests/Entity/PageContentTest.php
@@ -74,7 +74,7 @@ class PageContentTest extends TestCase
$this->asEditor();
$pageResp = $this->get($page->getUrl());
- $pageResp->assertSee($content);
+ $pageResp->assertSee($content, false);
}
public function test_page_includes_rendered_on_book_export()
@@ -106,7 +106,7 @@ class PageContentTest extends TestCase
$pageView = $this->get($page->getUrl());
$pageView->assertStatus(200);
- $pageView->assertDontSee($script);
+ $pageView->assertDontSee($script, false);
$pageView->assertSee('abc123abc123');
}
@@ -135,14 +135,26 @@ class PageContentTest extends TestCase
}
}
- public function test_iframe_js_and_base64_urls_are_removed()
+ public function test_js_and_base64_src_urls_are_removed()
{
$checks = [
'',
+ '',
+ '',
'',
'',
+ '',
'',
+ ' Hello Hello Hello Hello Hello Hello Hello Hello',
+ '
',
+ '
',
+ '
',
+ '
',
+ '
',
+ '
',
'',
+ '',
+ '
',
];
$this->asEditor();
@@ -155,6 +167,7 @@ class PageContentTest extends TestCase
$pageView = $this->get($page->getUrl());
$pageView->assertStatus(200);
$pageView->assertElementNotContains('.page-content', '');
$pageView->assertElementNotContains('.page-content', 'src=');
$pageView->assertElementNotContains('.page-content', 'javascript:');
@@ -168,6 +181,8 @@ class PageContentTest extends TestCase
$checks = [
'');
+ $pageView->assertElementNotContains('.page-content', 'assertElementNotContains('.page-content', 'href=javascript:');
}
}
@@ -188,8 +203,10 @@ class PageContentTest extends TestCase
{
$checks = [
'',
+ '',
'',
'',
+ '',
];
$this->asEditor();
@@ -213,6 +230,8 @@ class PageContentTest extends TestCase
{
$checks = [
'',
+ '',
+ '',
];
$this->asEditor();
@@ -241,19 +260,21 @@ class PageContentTest extends TestCase
$pageView = $this->get($page->getUrl());
$pageView->assertStatus(200);
- $pageView->assertDontSee($script);
- $pageView->assertSee('
Hello
'); + $pageView->assertSee($script, false); + $pageView->assertDontSee('Hello
', false); } public function test_duplicate_ids_does_not_break_page_render() @@ -464,7 +507,8 @@ class PageContentTest extends TestCase $this->assertStringContainsString('type="checkbox"', $page->html); $pageView = $this->get($page->getUrl()); - $pageView->assertElementExists('.page-content input[type=checkbox]'); + $pageView->assertElementExists('.page-content li.task-list-item input[type=checkbox]'); + $pageView->assertElementExists('.page-content li.task-list-item input[type=checkbox][checked=checked]'); } public function test_page_markdown_strikethrough_rendering() @@ -501,7 +545,7 @@ class PageContentTest extends TestCase $pageView = $this->get($page->getUrl()); $pageView->assertStatus(200); - $pageView->assertSee($content); + $pageView->assertSee($content, false); } public function test_base64_images_get_extracted_from_page_content() @@ -550,14 +594,58 @@ class PageContentTest extends TestCase $this->deleteImage($imagePath); } - public function test_base64_images_blanked_if_not_supported_extension_for_extract() + public function test_base64_images_within_html_blanked_if_not_supported_extension_for_extract() + { + // Relevant to https://github.com/BookStackApp/BookStack/issues/3010 and other cases + $extensions = [ + 'jiff', 'pngr', 'png ', ' png', '.png', 'png.', 'p.ng', ',png', + 'data:image/png', ',data:image/png', + ]; + + foreach ($extensions as $extension) { + $this->asEditor(); + $page = Page::query()->first(); + + $this->put($page->getUrl(), [ + 'name' => $page->name, 'summary' => '', + 'html' => 'test
test %A
test