diff core/modules/system/src/Tests/Theme/TwigRawTest.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/modules/system/src/Tests/Theme/TwigRawTest.php	Wed Nov 29 16:09:58 2017 +0000
@@ -0,0 +1,51 @@
+<?php
+
+namespace Drupal\system\Tests\Theme;
+
+use Drupal\simpletest\WebTestBase;
+
+/**
+ * Tests Twig 'raw' filter.
+ *
+ * @group Theme
+ */
+class TwigRawTest extends WebTestBase {
+
+  /**
+   * Modules to enable.
+   *
+   * @var array
+   */
+  public static $modules = ['twig_theme_test'];
+
+  /**
+   * Tests the raw filter inside an autoescape tag.
+   */
+  public function testAutoescapeRaw() {
+    $test = [
+      '#theme' => 'twig_raw_test',
+      '#script' => '<script>alert("This alert is real because I will put it through the raw filter!");</script>',
+    ];
+    $rendered = \Drupal::service('renderer')->renderRoot($test);
+    $this->setRawContent($rendered);
+    $this->assertRaw('<script>alert("This alert is real because I will put it through the raw filter!");</script>');
+  }
+
+  /**
+   * Tests autoescaping of unsafe content.
+   *
+   * This is one of the most important tests in Drupal itself in terms of
+   * security.
+   */
+  public function testAutoescape() {
+    $script = '<script>alert("This alert is unreal!");</script>';
+    $build = [
+      '#theme' => 'twig_autoescape_test',
+      '#script' => $script,
+    ];
+    $rendered = \Drupal::service('renderer')->renderRoot($build);
+    $this->setRawContent($rendered);
+    $this->assertEscaped($script);
+  }
+
+}