X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fembed%2Fsrc%2FTests%2FEmbedButtonEditorAccessCheckTest.php;fp=web%2Fmodules%2Fcontrib%2Fembed%2Fsrc%2FTests%2FEmbedButtonEditorAccessCheckTest.php;h=c73887acfccffcb8b4a2ff8ec800d27a0138ad35;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/modules/contrib/embed/src/Tests/EmbedButtonEditorAccessCheckTest.php b/web/modules/contrib/embed/src/Tests/EmbedButtonEditorAccessCheckTest.php new file mode 100644 index 000000000..c73887acf --- /dev/null +++ b/web/modules/contrib/embed/src/Tests/EmbedButtonEditorAccessCheckTest.php @@ -0,0 +1,106 @@ +getRoute('plain_text', 'embed_test_default'); + $this->assertResponse(404); + $this->assertCacheContext('route'); + $this->assertNoCacheTag('config:editor.editor.embed_test'); + $this->assertNoCacheTag('config:embed.button.embed_test_default'); + + // The anonymous user should not have permission to use embed_test format. + $this->getRoute('embed_test', 'embed_test_default'); + $this->assertResponse(403); + $this->assertCacheContext('route'); + $this->assertNoCacheTag('config:editor.editor.embed_test'); + $this->assertNoCacheTag('config:embed.button.embed_test_default'); + + // Now login a user that can use the embed_test format. + $this->drupalLogin($this->webUser); + + $this->getRoute('plain_text', 'embed_test_default'); + $this->assertResponse(404); + $this->assertCacheContext('route'); + $this->assertNoCacheTag('config:editor.editor.plain_text'); + $this->assertNoCacheTag('config:embed.button.embed_test_default'); + + // Add an empty configuration for the plain_text editor configuration. + $editor = Editor::create([ + 'format' => 'plain_text', + 'editor' => 'ckeditor', + ]); + $editor->save(); + $this->getRoute('plain_text', 'embed_test_default'); + $this->assertResponse(403); + $this->assertCacheContext('route'); + $this->assertCacheTag('config:editor.editor.plain_text'); + $this->assertCacheTag('config:embed.button.embed_test_default'); + + $this->getRoute('embed_test', 'embed_test_default'); + $this->assertResponse(200); + $this->assertCacheContext('route'); + $this->assertCacheTag('config:editor.editor.embed_test'); + $this->assertCacheTag('config:embed.button.embed_test_default'); + $this->assertText(static::SUCCESS); + + // Test route with an empty request. + $this->getRoute('embed_test', 'embed_test_default', ''); + $this->assertResponse(404); + $this->assertCacheContext('route'); + $this->assertCacheTag('config:editor.editor.embed_test'); + $this->assertCacheTag('config:embed.button.embed_test_default'); + + // Test route with an invalid text format. + $this->getRoute('invalid_editor', 'embed_test_default'); + $this->assertResponse(404); + $this->assertCacheContext('route'); + $this->assertNoCacheTag('config:editor.editor.invalid_editor'); + $this->assertNoCacheTag('config:embed.button.embed_test_default'); + + // Test route with an invalid embed button. + $this->getRoute('embed_test', 'invalid_button'); + $this->assertResponse(404); + $this->assertCacheContext('route'); + $this->assertNoCacheTag('config:editor.editor.embed_test'); + $this->assertNoCacheTag('config:embed.button.invalid_button'); + } + + /** + * Performs a request to the embed_test.test_access route. + * + * @param string $editor_id + * ID of the editor. + * @param string $embed_button_id + * ID of the embed button. + * @param string $value + * The query string value to include. + * + * @return string + * The retrieved HTML string. + */ + public function getRoute($editor_id, $embed_button_id, $value = NULL) { + $url = 'embed-test/access/' . $editor_id . '/' . $embed_button_id; + if (!isset($value)) { + $value = static::SUCCESS; + } + return $this->drupalGet($url, ['query' => ['value' => $value]]); + } + +}