From 7626a3d70bcf23310dbb674d9630232d568348ff Mon Sep 17 00:00:00 2001 From: Nathaniel Catchpole Date: Mon, 26 Jun 2017 12:13:49 +0100 Subject: [PATCH] Issue #2869387 by tstoeckler, Wim Leers: Subclasses of ResourceTestBase for non-entity resources are required to add pointless code --- .../EntityResource/EntityResourceTestBase.php | 10 +---- .../tests/src/Functional/ResourceTestBase.php | 42 +++++++++---------- 2 files changed, 20 insertions(+), 32 deletions(-) diff --git a/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php b/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php index 277c47042be..8638adffd95 100644 --- a/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php +++ b/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php @@ -151,7 +151,6 @@ abstract class EntityResourceTestBase extends ResourceTestBase { // Calculate REST Resource config entity ID. static::$resourceConfigId = 'entity.' . static::$entityTypeId; - $this->serializer = $this->container->get('serializer'); $this->entityStorage = $this->container->get('entity_type.manager') ->getStorage(static::$entityTypeId); @@ -231,7 +230,7 @@ abstract class EntityResourceTestBase extends ResourceTestBase { protected function getExpectedUnauthorizedAccessMessage($method) { if ($this->config('rest.settings')->get('bc_entity_resource_permissions')) { - return $this->getExpectedBCUnauthorizedAccessMessage($method); + return parent::getExpectedUnauthorizedAccessMessage($method); } $permission = $this->entity->getEntityType()->getAdminPermission(); @@ -255,13 +254,6 @@ abstract class EntityResourceTestBase extends ResourceTestBase { return "$message."; } - /** - * {@inheritdoc} - */ - protected function getExpectedBcUnauthorizedAccessMessage($method) { - return "The 'restful " . strtolower($method) . " entity:" . $this->entity->getEntityTypeId() . "' permission is required."; - } - /** * The expected cache tags for the GET/HEAD response of the test entity. * diff --git a/core/modules/rest/tests/src/Functional/ResourceTestBase.php b/core/modules/rest/tests/src/Functional/ResourceTestBase.php index 74aa144f145..59d7bcbc54b 100644 --- a/core/modules/rest/tests/src/Functional/ResourceTestBase.php +++ b/core/modules/rest/tests/src/Functional/ResourceTestBase.php @@ -62,6 +62,8 @@ abstract class ResourceTestBase extends BrowserTestBase { * The REST Resource plugin ID can be calculated from this. * * @var string + * + * @see \Drupal\rest\Entity\RestResourceConfig::__construct() */ protected static $resourceConfigId = NULL; @@ -99,6 +101,8 @@ abstract class ResourceTestBase extends BrowserTestBase { public function setUp() { parent::setUp(); + $this->serializer = $this->container->get('serializer'); + // Ensure the anonymous user role has no permissions at all. $user_role = Role::load(RoleInterface::ANONYMOUS_ID); foreach ($user_role->getPermissions() as $permission) { @@ -172,6 +176,21 @@ abstract class ResourceTestBase extends BrowserTestBase { \Drupal::service('router.builder')->rebuildIfNeeded(); } + /** + * Return the expected error message. + * + * @param string $method + * The HTTP method (GET, POST, PATCH, DELETE). + * + * @return string + * The error string. + */ + protected function getExpectedUnauthorizedAccessMessage($method) { + $resource_plugin_id = str_replace('.', ':', static::$resourceConfigId); + $permission = 'restful ' . strtolower($method) . ' ' . $resource_plugin_id; + return "The '$permission' permission is required."; + } + /** * Sets up the necessary authorization. * @@ -230,29 +249,6 @@ abstract class ResourceTestBase extends BrowserTestBase { */ abstract protected function assertAuthenticationEdgeCases($method, Url $url, array $request_options); - /** - * Return the expected error message. - * - * @param string $method - * The HTTP method (GET, POST, PATCH, DELETE). - * - * @return string - * The error string. - */ - abstract protected function getExpectedUnauthorizedAccessMessage($method); - - /** - * Return the default expected error message if the - * bc_entity_resource_permissions is true. - * - * @param string $method - * The HTTP method (GET, POST, PATCH, DELETE). - * - * @return string - * The error string. - */ - abstract protected function getExpectedBcUnauthorizedAccessMessage($method); - /** * Initializes authentication. *