/**
  * 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));
 }