Version 1
[yaffs-website] / web / core / modules / editor / tests / src / Functional / EditorDialogAccessTest.php
diff --git a/web/core/modules/editor/tests/src/Functional/EditorDialogAccessTest.php b/web/core/modules/editor/tests/src/Functional/EditorDialogAccessTest.php
new file mode 100644 (file)
index 0000000..3a97b35
--- /dev/null
@@ -0,0 +1,83 @@
+<?php
+
+namespace Drupal\Tests\editor\Functional;
+
+use Drupal\Core\Url;
+use Drupal\editor\Entity\Editor;
+use Drupal\Tests\BrowserTestBase;
+
+/**
+ * Test access to the editor dialog forms.
+ *
+ * @group editor
+ */
+class EditorDialogAccessTest extends BrowserTestBase {
+
+  /**
+   * Modules to install.
+   *
+   * @var array
+   */
+  public static $modules = ['editor', 'filter', 'ckeditor'];
+
+  /**
+   * Test access to the editor image dialog.
+   */
+  public function testEditorImageDialogAccess() {
+    $url = Url::fromRoute('editor.image_dialog', ['editor' => 'plain_text']);
+    $session = $this->assertSession();
+
+    // With no text editor, expect a 404.
+    $this->drupalGet($url);
+    $session->statusCodeEquals(404);
+
+    // With a text editor but without image upload settings, expect a 200, but
+    // there should not be an input[type=file].
+    $editor = Editor::create([
+      'editor' => 'ckeditor',
+      'format' => 'plain_text',
+      'settings' => [
+        'toolbar' => [
+          'rows' => [
+            [
+              [
+                'name' => 'Media',
+                'items' => [
+                  'DrupalImage',
+                ],
+              ],
+            ],
+          ],
+        ],
+        'plugins' => [],
+      ],
+      'image_upload' => [
+        'status' => FALSE,
+        'scheme' => 'public',
+        'directory' => 'inline-images',
+        'max_size' => '',
+        'max_dimensions' => [
+          'width' => 0,
+          'height' => 0,
+        ],
+      ],
+    ]);
+    $editor->save();
+    $this->resetAll();
+    $this->drupalGet($url);
+    $this->assertTrue($this->cssSelect('input[type=text][name="attributes[src]"]'), 'Image uploads disabled: input[type=text][name="attributes[src]"] is present.');
+    $this->assertFalse($this->cssSelect('input[type=file]'), 'Image uploads disabled: input[type=file] is absent.');
+    $session->statusCodeEquals(200);
+
+    // With image upload settings, expect a 200, and now there should be an
+    // input[type=file].
+    $editor->setImageUploadSettings(['status' => TRUE] + $editor->getImageUploadSettings())
+      ->save();
+    $this->resetAll();
+    $this->drupalGet($url);
+    $this->assertFalse($this->cssSelect('input[type=text][name="attributes[src]"]'), 'Image uploads enabled: input[type=text][name="attributes[src]"] is absent.');
+    $this->assertTrue($this->cssSelect('input[type=file]'), 'Image uploads enabled: input[type=file] is present.');
+    $session->statusCodeEquals(200);
+  }
+
+}