diff -u b/core/modules/edit/lib/Drupal/edit/Access/EditEntityFieldAccessCheck.php b/core/modules/edit/lib/Drupal/edit/Access/EditEntityFieldAccessCheck.php --- b/core/modules/edit/lib/Drupal/edit/Access/EditEntityFieldAccessCheck.php +++ b/core/modules/edit/lib/Drupal/edit/Access/EditEntityFieldAccessCheck.php @@ -83,7 +83,7 @@ // Validate the field name and language. $field_name = $request->attributes->get('field_name'); - if (!$field_name || !$entity->getPropertyDefinition($field_name)) { + if (!$field_name || !$entity->hasField($field_name)) { throw new NotFoundHttpException(); } $langcode = $request->attributes->get('langcode'); diff -u b/core/modules/edit/lib/Drupal/edit/EditController.php b/core/modules/edit/lib/Drupal/edit/EditController.php --- b/core/modules/edit/lib/Drupal/edit/EditController.php +++ b/core/modules/edit/lib/Drupal/edit/EditController.php @@ -134,7 +134,7 @@ } // Validate the field name and language. - if (!$field_name || !$entity->getPropertyDefinition($field_name)) { + if (!$field_name || !$entity->hasField($field_name)) { throw new NotFoundHttpException(); } if (!$langcode || (field_valid_language($langcode) !== $langcode)) { diff -u b/core/modules/edit/tests/Drupal/edit/Tests/Access/EditEntityFieldAccessCheckTest.php b/core/modules/edit/tests/Drupal/edit/Tests/Access/EditEntityFieldAccessCheckTest.php --- b/core/modules/edit/tests/Drupal/edit/Tests/Access/EditEntityFieldAccessCheckTest.php +++ b/core/modules/edit/tests/Drupal/edit/Tests/Access/EditEntityFieldAccessCheckTest.php @@ -82,16 +82,12 @@ * @see \Drupal\edit\Tests\edit\Access\EditEntityFieldAccessCheckTest::testAccess() */ public function providerTestAccess() { - $editable_entity = $this->getMockBuilder('Drupal\entity_test\Entity\EntityTest') - ->disableOriginalConstructor() - ->getMock(); + $editable_entity = $this->createMockEntity(); $editable_entity->expects($this->any()) ->method('access') ->will($this->returnValue(TRUE)); - $non_editable_entity = $this->getMockBuilder('Drupal\entity_test\Entity\EntityTest') - ->disableOriginalConstructor() - ->getMock(); + $non_editable_entity = $this->createMockEntity(); $non_editable_entity->expects($this->any()) ->method('access') ->will($this->returnValue(FALSE)); @@ -137,18 +133,13 @@ $entity_with_field = clone $entity; $entity_with_field->expects($this->any()) ->method('get') + ->with('valid') ->will($this->returnValue($field)); - $entity_with_field->expects($this->any()) - ->method('getPropertyDefinition') - ->with('example') - ->will($this->returnValue(array( - 'field_name' => 'example', - ))); // Prepare the request to be valid. - $request->attributes->set('entity', $entity_with_field); $request->attributes->set('entity_type', 'test_entity'); - $request->attributes->set('field_name', 'example'); + $request->attributes->set('entity', $entity_with_field); + $request->attributes->set('field_name', 'valid'); $request->attributes->set('langcode', Language::LANGCODE_NOT_SPECIFIED); $access = $this->editAccessCheck->access($route, $request); @@ -206,12 +197,7 @@ $route = new Route('/edit/form/test_entity/1/body/und/full', array(), array('_access_edit_entity_field' => 'TRUE')); $request = new Request(); $request->attributes->set('entity_type', 'entity_test'); - - $entity = $this->getMockBuilder('Drupal\entity_test\Entity\EntityTest') - ->disableOriginalConstructor() - ->getMock(); - - $request->attributes->set('entity', $entity); + $request->attributes->set('entity', $this->createMockEntity()); $this->editAccessCheck->access($route, $request); } @@ -225,16 +211,7 @@ $route = new Route('/edit/form/test_entity/1/body/und/full', array(), array('_access_edit_entity_field' => 'TRUE')); $request = new Request(); $request->attributes->set('entity_type', 'entity_test'); - - $entity = $this->getMockBuilder('Drupal\entity_test\Entity\EntityTest') - ->disableOriginalConstructor() - ->getMock(); - $entity->expects($this->any()) - ->method('getPropertyDefinition') - ->with('not_valid') - ->will($this->returnValue(FALSE)); - - $request->attributes->set('entity', $entity); + $request->attributes->set('entity', $this->createMockEntity()); $request->attributes->set('field_name', 'not_valid'); $this->editAccessCheck->access($route, $request); @@ -249,24 +226,9 @@ $route = new Route('/edit/form/test_entity/1/body/und/full', array(), array('_access_edit_entity_field' => 'TRUE')); $request = new Request(); $request->attributes->set('entity_type', 'entity_test'); - - $entity = $this->getMockBuilder('Drupal\entity_test\Entity\EntityTest') - ->disableOriginalConstructor() - ->getMock(); - $entity->expects($this->any()) - ->method('getPropertyDefinition') - ->with('valid') - ->will($this->returnValue(array( - 'field_name' => 'valid', - ))); - $request->attributes->set('entity', $entity); - + $request->attributes->set('entity', $this->createMockEntity()); $request->attributes->set('field_name', 'valid'); - $field = $this->getMockBuilder('Drupal\field\Entity\Field') - ->disableOriginalConstructor() - ->getMock(); - $this->editAccessCheck->access($route, $request); } @@ -279,26 +241,27 @@ $route = new Route('/edit/form/test_entity/1/body/und/full', array(), array('_access_edit_entity_field' => 'TRUE')); $request = new Request(); $request->attributes->set('entity_type', 'entity_test'); + $request->attributes->set('entity', $this->createMockEntity()); + $request->attributes->set('field_name', 'valid'); + $request->attributes->set('langcode', 'xx-lolspeak'); + + $this->editAccessCheck->access($route, $request); + } + /** + * Returns a mock entity. + */ + protected function createMockEntity() { $entity = $this->getMockBuilder('Drupal\entity_test\Entity\EntityTest') ->disableOriginalConstructor() ->getMock(); $entity->expects($this->any()) - ->method('getPropertyDefinition') - ->with('valid') - ->will($this->returnValue(array( - 'field_name' => 'valid', + ->method('hasField') + ->will($this->returnValueMap(array( + array('valid', TRUE), + array('not_valid', FALSE), ))); - $request->attributes->set('entity', $entity); - - $request->attributes->set('field_name', 'valid'); - $request->attributes->set('langcode', 'xx-lolspeak'); - - $field = $this->getMockBuilder('Drupal\field\Entity\Field') - ->disableOriginalConstructor() - ->getMock(); - - $this->editAccessCheck->access($route, $request); + return $entity; } }