* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Tests\Functional\Extension\DisallowedRawHtml; use League\CommonMark\Environment\Environment; use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension; use League\CommonMark\Extension\DisallowedRawHtml\DisallowedRawHtmlExtension; use League\CommonMark\MarkdownConverter; use PHPUnit\Framework\TestCase; final class DisallowedRawHtmlExtensionTest extends TestCase { public function testDisallowedRawHtmlExtensionWithSpecExample(): void { $input = <<<'MD' <style> <em> <blockquote> <xmp> is disallowed. <XMP> is also disallowed. </blockquote> MD; $expected = <<<'HTML' <p><strong> <title> <style> <em></p> <blockquote> <xmp> is disallowed. <XMP> is also disallowed. </blockquote> HTML; $environment = new Environment(); $environment->addExtension(new CommonMarkCoreExtension()); $environment->addExtension(new DisallowedRawHtmlExtension()); $converter = new MarkdownConverter($environment); $this->assertSame($expected, (string) $converter->convert($input)); } public function testIndividualHtmlTagsAsBlocks(): void { $input = <<<'MD' <title>My Cool Website Itallic font should be marked up using the <i> and </i> tags. <h1>Alternative content</h1> <h1>Alternative content</h1>
foo</plaintext> MD; $expected = <<<'HTML' &lt;title>My Cool Website&lt;/title> &lt;textarea> foo=bar &lt;/textarea> &lt;style>* { display: none; &lt;/style> <p>&lt;xmp>Itallic font should be marked up using the <i> and </i> tags.&lt;/xmp></p> &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>&lt;/iframe> <p>&lt;noembed><h1>Alternative content</h1>&lt;/noembed></p> &lt;noframes><h1>Alternative content</h1>&lt;/noframes> <hr> &lt;script type="application/javascript">alert('XSS is fun!')&lt;/script> &lt;plaintext>foo&lt;/plaintext> HTML; $environment = new Environment(); $environment->addExtension(new CommonMarkCoreExtension()); $environment->addExtension(new DisallowedRawHtmlExtension()); $converter = new MarkdownConverter($environment); $this->assertSame($expected, (string) $converter->convert($input)); } }