createMock(ConfigLoaderInterface::class); $config = new SystemConfiguration($loader, ['timesheet' => ['markdown_content' => true]]); $sut = new MarkdownExtension(new Markdown(), $config); $this->assertEquals('

test

', $sut->markdownToHtml('*test*')); $this->assertEquals('

foobar

', $sut->markdownToHtml('# foobar')); $this->assertEquals( '

XSS

', $sut->markdownToHtml('[XSS](javascript:alert(`XSS`))') ); } public function testTimesheetContent() { $loader = $this->createMock(ConfigLoaderInterface::class); $config = new SystemConfiguration($loader, ['timesheet' => ['markdown_content' => false]]); $sut = new MarkdownExtension(new Markdown(), $config); $this->assertEquals( "- test
\n- foo", $sut->timesheetContent("- test\n- foo") ); $this->assertEquals('', $sut->timesheetContent(null)); $this->assertEquals('', $sut->timesheetContent('')); $this->assertEquals('# foobar', $sut->timesheetContent('# foobar')); $this->assertEquals('## foobar', $sut->timesheetContent('## foobar')); $this->assertEquals('### foobar', $sut->timesheetContent('### foobar')); $config = new SystemConfiguration($loader, ['timesheet' => ['markdown_content' => true]]); $sut = new MarkdownExtension(new Markdown(), $config); $this->assertEquals( "\n

foo bar

", $sut->timesheetContent("- test\n- foo\n\nfoo __bar__") ); $this->assertEquals( '

XSS

', $sut->timesheetContent('[XSS](javascript:alert(`XSS`))') ); } public function testCommentContent() { $loader = $this->createMock(ConfigLoaderInterface::class); $config = new SystemConfiguration($loader, ['timesheet' => ['markdown_content' => false]]); $sut = new MarkdownExtension(new Markdown(), $config); $this->assertEquals( "

- test
\n- foo

", $sut->commentContent("- test\n- foo", true) ); $this->assertEquals( "- test\n- foo", $sut->commentContent("- test\n- foo", false) ); $loremIpsum = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.'; $this->assertEquals('', $sut->commentContent(null)); $this->assertEquals('', $sut->commentContent('')); $this->assertEquals('# foobar', $sut->commentContent('# foobar')); $this->assertEquals('## foobar', $sut->commentContent('## foobar')); $this->assertEquals('### foobar', $sut->commentContent('### foobar')); $this->assertEquals('

' . $loremIpsum . '

', $sut->commentContent($loremIpsum, true)); $this->assertEquals('Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut l …', $sut->commentContent($loremIpsum)); $config = new SystemConfiguration($loader, ['timesheet' => ['markdown_content' => true]]); $sut = new MarkdownExtension(new Markdown(), $config); $this->assertEquals( "\n

foo bar

", $sut->commentContent("- test\n- foo\n\nfoo __bar__") ); $this->assertEquals( '

XSS

', $sut->commentContent('[XSS](javascript:alert(`XSS`))') ); } public function testCommentOneLiner() { $loader = $this->createMock(ConfigLoaderInterface::class); $config = new SystemConfiguration($loader, []); $sut = new MarkdownExtension(new Markdown(), $config); $loremIpsum = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.'; $this->assertEquals('', $sut->commentOneLiner(null)); $this->assertEquals('', $sut->commentOneLiner('')); $this->assertEquals('', $sut->commentOneLiner(null, false)); $this->assertEquals('', $sut->commentOneLiner('', true)); $this->assertEquals( 'Lorem ipsum dolor sit amet, consetetur sadipscing …', $sut->commentOneLiner($loremIpsum, false) ); $this->assertEquals( 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. …', $sut->commentOneLiner(implode(PHP_EOL, [$loremIpsum, $loremIpsum, $loremIpsum]), true) ); $this->assertEquals( 'Lorem ipsum dolor sit amet, consetetur sadipscing …', $sut->commentOneLiner(implode(PHP_EOL, [$loremIpsum, $loremIpsum, $loremIpsum]), false) ); $this->assertEquals( 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt', $sut->commentOneLiner(implode(PHP_EOL, ['Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt']), true) ); $this->assertEquals( 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt …', $sut->commentOneLiner(implode(PHP_EOL, ['Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt', 'ssdf']), true) ); $this->assertEquals( 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt', $sut->commentOneLiner(implode(PHP_EOL, ['Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt'])) ); $this->assertEquals( 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt …', $sut->commentOneLiner(implode(PHP_EOL, ['Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt', 'ssdf'])) ); } }