ILIAS  trunk Revision v11.0_alpha-2662-g519ff7d528f
MarkdownFormattingToHTMLTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 
29 
30 class 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 }
testTransformationToHTML(string $markdown_string, string $expected_html,)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Builds data types.
Definition: Factory.php:35
A transformation is a function from one datatype to another.