Version 1
[yaffs-website] / web / modules / contrib / embed / src / Tests / PreviewTest.php
diff --git a/web/modules/contrib/embed/src/Tests/PreviewTest.php b/web/modules/contrib/embed/src/Tests/PreviewTest.php
new file mode 100644 (file)
index 0000000..11613ee
--- /dev/null
@@ -0,0 +1,66 @@
+<?php
+
+namespace Drupal\embed\Tests;
+
+/**
+ * Tests the preview controller and route.
+ *
+ * @group embed
+ */
+class PreviewTest extends EmbedTestBase {
+
+  const SUCCESS = 'Success!';
+
+  /**
+   * Tests the route used for generating preview of embedding entities.
+   */
+  public function testPreviewRoute() {
+    // Ensure the default filter can be previewed by the anonymous user.
+    $this->getRoute('plain_text');
+    $this->assertResponse(200);
+    $this->assertText(static::SUCCESS);
+
+    // The anonymous user should not have permission to use embed_test format.
+    $this->getRoute('embed_test');
+    $this->assertResponse(403);
+
+    // Now login a user that can use the embed_test format.
+    $this->drupalLogin($this->webUser);
+
+    $this->getRoute('plain_text');
+    $this->assertResponse(200);
+    $this->assertText(static::SUCCESS);
+
+    $this->getRoute('embed_test');
+    $this->assertResponse(200);
+    $this->assertText(static::SUCCESS);
+
+    // Test preview route with an empty request.
+    $this->getRoute('embed_test', '');
+    $this->assertResponse(404);
+
+    // Test preview route with an invalid text format.
+    $this->getRoute('invalid_format');
+    $this->assertResponse(404);
+  }
+
+  /**
+   * Performs a request to the embed.preview route.
+   *
+   * @param string $filter_format_id
+   *   ID of the filter format.
+   * @param string $value
+   *   The query string value to include.
+   *
+   * @return string
+   *   The retrieved HTML string.
+   */
+  public function getRoute($filter_format_id, $value = NULL) {
+    $url = 'embed/preview/' . $filter_format_id;
+    if (!isset($value)) {
+      $value = static::SUCCESS;
+    }
+    return $this->drupalGet($url, ['query' => ['value' => $value]]);
+  }
+
+}