ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
MarkdownFormattingToHTMLTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
25use PHPUnit\Framework\TestCase;
28use PHPUnit\Framework\Attributes\DataProvider;
29
30class MarkdownFormattingToHTMLTest extends TestCase
31{
34
35 protected function setUp(): void
36 {
37 $language = $this->getMockBuilder(Language::class)
38 ->disableOriginalConstructor()
39 ->getMock();
40 $group = new Group(new Factory(), $language);
41
42 $this->markdown = $group->markdown(false)->toHTML();
43 $this->markdown_with_escaped_html = $group->markdown()->toHTML();
44 }
45
46 public static function stringProvider(): array
47 {
48 return [
49 ["lorem", "<p>lorem</p>\n"],
50 ["lorem **ipsum**", "<p>lorem <strong>ipsum</strong></p>\n"],
51 ["_lorem_ **ipsum**", "<p><em>lorem</em> <strong>ipsum</strong></p>\n"],
52 ["# Headline", "<h1>Headline</h1>\n"],
53 ["## Headline", "<h2>Headline</h2>\n"],
54 ["### Headline", "<h3>Headline</h3>\n"],
55 ["1. Lorem\n2. Ipsum", "<ol>\n<li>Lorem</li>\n<li>Ipsum</li>\n</ol>\n"],
56 ["- Lorem\n- Ipsum", "<ul>\n<li>Lorem</li>\n<li>Ipsum</li>\n</ul>\n"],
57 ["[Link Titel](https://www.ilias.de)", "<p><a href=\"https://www.ilias.de\">Link Titel</a></p>\n"],
58 ];
59 }
60
61 #[DataProvider('stringProvider')]
62 public function testTransformationToHTML(
63 string $markdown_string,
64 string $expected_html,
65 ): void {
66 $this->assertEquals($expected_html, $this->markdown->transform($markdown_string));
67 }
68
69 public function testHtmlInputIsRendered(): void
70 {
71 $markdown_with_html = "lorem **ipsum**\n<ul><li>phpunit</li></ul>";
72
73 $expected = "<p>lorem <strong>ipsum</strong></p>\n<ul><li>phpunit</li></ul>\n";
74
75 $this->assertSame($expected, $this->markdown->transform($markdown_with_html));
76 }
77
78 public function testUntrustedLinksAreRemoved(): void
79 {
80 $markdown_with_html = "lorem **ipsum**\n[xss](javascript:alert(1))";
81
82 $expected = "<p>lorem <strong>ipsum</strong>\n<a>xss</a></p>\n";
83
84 $this->assertSame($expected, $this->markdown->transform($markdown_with_html));
85 }
86
87 public function testHtmlInputIsEscapedIfDesired(): void
88 {
89 $markdown_with_html = "lorem **ipsum**\n<ul><li>phpunit</li></ul>";
90
91 $expected = "<p>lorem <strong>ipsum</strong></p>\n&lt;ul&gt;&lt;li&gt;phpunit&lt;/li&gt;&lt;/ul&gt;\n";
92
93 $this->assertSame($expected, $this->markdown_with_escaped_html->transform($markdown_with_html));
94 }
95}
Builds data types.
Definition: Factory.php:36
testTransformationToHTML(string $markdown_string, string $expected_html,)
A transformation is a function from one datatype to another.