From df2fd66d5999884504ab1d66f921aa6d0bf73711 Mon Sep 17 00:00:00 2001 From: Alex Pott Date: Mon, 27 Mar 2017 11:39:13 +0100 Subject: [PATCH] Issue #2843756 by vaplas, brentschuddinck, Wim Leers: EntityResource: Provide comprehensive test coverage for FieldStorageConfig entity --- .../field/src/Entity/FieldStorageConfig.php | 1 + ...FieldStorageConfigAccessControlHandler.php | 10 ++ .../FieldStorageConfigHalJsonAnonTest.php | 30 +++++ ...FieldStorageConfigHalJsonBasicAuthTest.php | 35 ++++++ .../FieldStorageConfigHalJsonCookieTest.php | 35 ++++++ .../FieldStorageConfigJsonAnonTest.php | 24 ++++ .../FieldStorageConfigJsonBasicAuthTest.php | 34 ++++++ .../FieldStorageConfigJsonCookieTest.php | 29 +++++ .../FieldStorageConfigResourceTestBase.php | 104 ++++++++++++++++++ 9 files changed, 302 insertions(+) create mode 100644 core/modules/field/src/FieldStorageConfigAccessControlHandler.php create mode 100644 core/modules/hal/tests/src/Functional/EntityResource/FieldStorageConfig/FieldStorageConfigHalJsonAnonTest.php create mode 100644 core/modules/hal/tests/src/Functional/EntityResource/FieldStorageConfig/FieldStorageConfigHalJsonBasicAuthTest.php create mode 100644 core/modules/hal/tests/src/Functional/EntityResource/FieldStorageConfig/FieldStorageConfigHalJsonCookieTest.php create mode 100644 core/modules/rest/tests/src/Functional/EntityResource/FieldStorageConfig/FieldStorageConfigJsonAnonTest.php create mode 100644 core/modules/rest/tests/src/Functional/EntityResource/FieldStorageConfig/FieldStorageConfigJsonBasicAuthTest.php create mode 100644 core/modules/rest/tests/src/Functional/EntityResource/FieldStorageConfig/FieldStorageConfigJsonCookieTest.php create mode 100644 core/modules/rest/tests/src/Functional/EntityResource/FieldStorageConfig/FieldStorageConfigResourceTestBase.php diff --git a/core/modules/field/src/Entity/FieldStorageConfig.php b/core/modules/field/src/Entity/FieldStorageConfig.php index a63e54f98be..494540abb5b 100644 --- a/core/modules/field/src/Entity/FieldStorageConfig.php +++ b/core/modules/field/src/Entity/FieldStorageConfig.php @@ -18,6 +18,7 @@ use Drupal\field\FieldStorageConfigInterface; * id = "field_storage_config", * label = @Translation("Field storage"), * handlers = { + * "access" = "Drupal\field\FieldStorageConfigAccessControlHandler", * "storage" = "Drupal\field\FieldStorageConfigStorage" * }, * config_prefix = "storage", diff --git a/core/modules/field/src/FieldStorageConfigAccessControlHandler.php b/core/modules/field/src/FieldStorageConfigAccessControlHandler.php new file mode 100644 index 00000000000..079ebc89e63 --- /dev/null +++ b/core/modules/field/src/FieldStorageConfigAccessControlHandler.php @@ -0,0 +1,10 @@ +grantPermissionsToTestedRole(['administer node fields']); + } + + /** + * {@inheritdoc} + */ + protected function createEntity() { + $field_storage = FieldStorageConfig::create([ + 'field_name' => 'true_llama', + 'entity_type' => 'node', + 'type' => 'boolean', + ]); + $field_storage->save(); + return $field_storage; + } + + /** + * {@inheritdoc} + */ + protected function getExpectedNormalizedEntity() { + return [ + 'cardinality' => 1, + 'custom_storage' => FALSE, + 'dependencies' => [ + 'module' => ['node'], + ], + 'entity_type' => 'node', + 'field_name' => 'true_llama', + 'id' => 'node.true_llama', + 'indexes' => [], + 'langcode' => 'en', + 'locked' => FALSE, + 'module' => 'core', + 'persist_with_no_fields' => FALSE, + 'settings' => [], + 'status' => TRUE, + 'translatable' => TRUE, + 'type' => 'boolean', + 'uuid' => $this->entity->uuid(), + ]; + } + + /** + * {@inheritdoc} + */ + protected function getNormalizedPostEntity() { + // @todo Update in https://www.drupal.org/node/2300677. + } + + /** + * {@inheritdoc} + */ + protected function getExpectedUnauthorizedAccessMessage($method) { + if ($this->config('rest.settings')->get('bc_entity_resource_permissions')) { + return parent::getExpectedUnauthorizedAccessMessage($method); + } + + switch ($method) { + case 'GET': + return "The 'administer node fields' permission is required."; + + default: + return parent::getExpectedUnauthorizedAccessMessage($method); + } + } + + /** + * {@inheritdoc} + */ + protected function getExpectedCacheContexts() { + return [ + 'user.permissions', + ]; + } + +}