/** * Tests the method for checking access to routes. * * @dataProvider providerTestAccess */ public function testAccess($entity_bundle, $requirement, $access, $expected, $expect_permission_context = TRUE) { // Set up the access result objects for allowing or denying access. $access_result = $access ? AccessResult::allowed()->cachePerPermissions() : AccessResult::neutral()->cachePerPermissions(); $expected_access_result = $expected ? AccessResult::allowed() : AccessResult::neutral(); if ($expect_permission_context) { $expected_access_result->cachePerPermissions(); } $entity_manager = $this->getMock('Drupal\\Core\\Entity\\EntityManagerInterface'); // Don't expect a call to the access control handler when we have a bundle // argument requirement but no bundle is provided. if ($entity_bundle || strpos($requirement, '{') === FALSE) { $access_control_handler = $this->getMock('Drupal\\Core\\Entity\\EntityAccessControlHandlerInterface'); $access_control_handler->expects($this->once())->method('createAccess')->with($entity_bundle)->will($this->returnValue($access_result)); $entity_manager->expects($this->any())->method('getAccessControlHandler')->will($this->returnValue($access_control_handler)); } $applies_check = new EntityCreateAccessCheck($entity_manager); $route = $this->getMockBuilder('Symfony\\Component\\Routing\\Route')->disableOriginalConstructor()->getMock(); $route->expects($this->any())->method('getRequirement')->with('_entity_create_access')->will($this->returnValue($requirement)); $raw_variables = new ParameterBag(); if ($entity_bundle) { $raw_variables->set('bundle_argument', $entity_bundle); } $route_match = $this->getMock('Drupal\\Core\\Routing\\RouteMatchInterface'); $route_match->expects($this->any())->method('getRawParameters')->will($this->returnValue($raw_variables)); $account = $this->getMock('Drupal\\Core\\Session\\AccountInterface'); $this->assertEquals($expected_access_result, $applies_check->access($route, $route_match, $account)); }
/** * Tests the method for checking access to routes. * * @dataProvider providerTestAccess */ public function testAccess($entity_bundle, $requirement, $access, $expected) { $entity_manager = $this->getMock('Drupal\\Core\\Entity\\EntityManagerInterface'); // Don't expect a call to the access controller when we have a bundle // argument requirement but no bundle is provided. if ($entity_bundle || strpos($requirement, '{') === FALSE) { $access_controller = $this->getMock('Drupal\\Core\\Entity\\EntityAccessControllerInterface'); $access_controller->expects($this->once())->method('createAccess')->with($entity_bundle)->will($this->returnValue($access)); $entity_manager->expects($this->any())->method('getAccessController')->will($this->returnValue($access_controller)); } $applies_check = new EntityCreateAccessCheck($entity_manager); $route = $this->getMockBuilder('Symfony\\Component\\Routing\\Route')->disableOriginalConstructor()->getMock(); $route->expects($this->any())->method('getRequirement')->with('_entity_create_access')->will($this->returnValue($requirement)); $request = new Request(); $raw_variables = new ParameterBag(); if ($entity_bundle) { // Add the bundle as a raw variable and an upcasted attribute. $request->attributes->set('bundle_argument', new \stdClass()); $raw_variables->set('bundle_argument', $entity_bundle); } $request->attributes->set('_raw_variables', $raw_variables); $account = $this->getMock('Drupal\\Core\\Session\\AccountInterface'); $this->assertEquals($expected, $applies_check->access($route, $request, $account)); }