diff --git a/core/lib/Drupal/Core/Access/AccessArgumentsResolver.php b/core/lib/Drupal/Core/Access/AccessArgumentsResolver.php index c0487f3..0a4d150 100644 --- a/core/lib/Drupal/Core/Access/AccessArgumentsResolver.php +++ b/core/lib/Drupal/Core/Access/AccessArgumentsResolver.php @@ -29,6 +29,20 @@ public function getArguments(callable $callable, Route $route, Request $request, /** * Returns the argument value for a parameter. + * + * @param \ReflectionParameter $parameter + * The parameter of a callable to get the value for. + * @param \Symfony\Component\Routing\Route $route + * The access checked route. + * @param \Symfony\Component\HttpFoundation\Request $request + * The current request. + * @param \Drupal\Core\Session\AccountInterface $account + * The current user. + * + * @return mixed + * The value of the requested parameter value. + * @throws \RuntimeException + * Thrown when there is a missing parameter. */ protected function getArgument(\ReflectionParameter $parameter, Route $route, Request $request, AccountInterface $account) { $raw_route_parameters = $request->attributes->has('_raw_variables') ? $request->attributes->get('_raw_variables')->all() : array(); @@ -77,6 +91,7 @@ protected function getReflector(callable $callable) { * instead of throwing an exception. * * @throws \RuntimeException + * Thrown when there is a missing parameter. */ protected function handleUnresolvedArgument(\ReflectionParameter $parameter) { $class = $parameter->getDeclaringClass(); diff --git a/core/lib/Drupal/Core/Access/AccessArgumentsResolverInterface.php b/core/lib/Drupal/Core/Access/AccessArgumentsResolverInterface.php index b454e6c..67192a9 100644 --- a/core/lib/Drupal/Core/Access/AccessArgumentsResolverInterface.php +++ b/core/lib/Drupal/Core/Access/AccessArgumentsResolverInterface.php @@ -31,7 +31,8 @@ * @return array * An array of arguments to pass to the callable. * - * @throws \RuntimeException When a value for an argument given is not provided. + * @throws \RuntimeException + * When a value for an argument given is not provided. */ public function getArguments(callable $callable, Route $route, Request $request, AccountInterface $account); diff --git a/core/lib/Drupal/Core/Access/CsrfAccessCheck.php b/core/lib/Drupal/Core/Access/CsrfAccessCheck.php index 27df4fa..1a5dad4 100644 --- a/core/lib/Drupal/Core/Access/CsrfAccessCheck.php +++ b/core/lib/Drupal/Core/Access/CsrfAccessCheck.php @@ -21,6 +21,7 @@ * "_csrf_token" parameter in the route. */ class CsrfAccessCheck implements RoutingAccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/lib/Drupal/Core/Access/CustomAccessCheck.php b/core/lib/Drupal/Core/Access/CustomAccessCheck.php index 3f4d653..9ae8cd7 100644 --- a/core/lib/Drupal/Core/Access/CustomAccessCheck.php +++ b/core/lib/Drupal/Core/Access/CustomAccessCheck.php @@ -9,8 +9,6 @@ use Drupal\Core\Controller\ControllerResolverInterface; use Drupal\Core\Routing\Access\AccessInterface as RoutingAccessInterface; -use Drupal\Core\Session\AccountInterface; -use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Route; /** diff --git a/core/lib/Drupal/Core/Access/DefaultAccessCheck.php b/core/lib/Drupal/Core/Access/DefaultAccessCheck.php index f4c8ff1..4c6d088 100644 --- a/core/lib/Drupal/Core/Access/DefaultAccessCheck.php +++ b/core/lib/Drupal/Core/Access/DefaultAccessCheck.php @@ -15,6 +15,7 @@ * Allows access to routes to be controlled by an '_access' boolean parameter. */ class DefaultAccessCheck implements RoutingAccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/lib/Drupal/Core/Entity/EntityAccessCheck.php b/core/lib/Drupal/Core/Entity/EntityAccessCheck.php index 612d18c..ebe8e7a 100644 --- a/core/lib/Drupal/Core/Entity/EntityAccessCheck.php +++ b/core/lib/Drupal/Core/Entity/EntityAccessCheck.php @@ -17,6 +17,7 @@ * Provides a generic access checker for entities. */ class EntityAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/lib/Drupal/Core/Routing/Access/AccessInterface.php b/core/lib/Drupal/Core/Routing/Access/AccessInterface.php index bfb7bb2..0d472b3 100644 --- a/core/lib/Drupal/Core/Routing/Access/AccessInterface.php +++ b/core/lib/Drupal/Core/Routing/Access/AccessInterface.php @@ -27,6 +27,10 @@ * The route for which to check access. * * @return callable + * This callable has to return one of the following: + * - \Drupal\Core\Access\AccessInterface::ALLOW + * - \Drupal\Core\Access\AccessInterface::DENY + * - \Drupal\Core\Access\AccessInterface::KILL */ public function getAccessCallback(Route $route); diff --git a/core/lib/Drupal/Core/Routing/Access/DefaultAccessCallbackTrait.php b/core/lib/Drupal/Core/Routing/Access/DefaultAccessCallbackTrait.php index 89dad16..073c38b 100644 --- a/core/lib/Drupal/Core/Routing/Access/DefaultAccessCallbackTrait.php +++ b/core/lib/Drupal/Core/Routing/Access/DefaultAccessCallbackTrait.php @@ -10,7 +10,7 @@ use Symfony\Component\Routing\Route; /** - * A Trait for Views broken handlers. + * A Trait for access checkers using the access() method. */ trait DefaultAccessCallbackTrait { diff --git a/core/lib/Drupal/Core/Theme/ThemeAccessCheck.php b/core/lib/Drupal/Core/Theme/ThemeAccessCheck.php index c353c37..82593f8 100644 --- a/core/lib/Drupal/Core/Theme/ThemeAccessCheck.php +++ b/core/lib/Drupal/Core/Theme/ThemeAccessCheck.php @@ -17,6 +17,7 @@ * Access check for a theme. */ class ThemeAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/book/lib/Drupal/book/Access/BookNodeIsRemovableAccessCheck.php b/core/modules/book/lib/Drupal/book/Access/BookNodeIsRemovableAccessCheck.php index 797a75c..fa247ed 100644 --- a/core/modules/book/lib/Drupal/book/Access/BookNodeIsRemovableAccessCheck.php +++ b/core/modules/book/lib/Drupal/book/Access/BookNodeIsRemovableAccessCheck.php @@ -16,6 +16,7 @@ * Determines whether the requested node can be removed from its book. */ class BookNodeIsRemovableAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/config_translation/lib/Drupal/config_translation/Access/ConfigTranslationOverviewAccess.php b/core/modules/config_translation/lib/Drupal/config_translation/Access/ConfigTranslationOverviewAccess.php index f3869d2..fe4b119 100644 --- a/core/modules/config_translation/lib/Drupal/config_translation/Access/ConfigTranslationOverviewAccess.php +++ b/core/modules/config_translation/lib/Drupal/config_translation/Access/ConfigTranslationOverviewAccess.php @@ -18,6 +18,7 @@ * Checks access for displaying the configuration translation overview. */ class ConfigTranslationOverviewAccess implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/contact/lib/Drupal/contact/Access/ContactPageAccess.php b/core/modules/contact/lib/Drupal/contact/Access/ContactPageAccess.php index 13ae37b..c4e7c74 100644 --- a/core/modules/contact/lib/Drupal/contact/Access/ContactPageAccess.php +++ b/core/modules/contact/lib/Drupal/contact/Access/ContactPageAccess.php @@ -18,6 +18,7 @@ * Access check for contact_personal_page route. */ class ContactPageAccess implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationManageAccessCheck.php b/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationManageAccessCheck.php index ac66ac5..9f9d4e4 100644 --- a/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationManageAccessCheck.php +++ b/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationManageAccessCheck.php @@ -19,6 +19,7 @@ * Access check for entity translation CRUD operation. */ class ContentTranslationManageAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationOverviewAccess.php b/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationOverviewAccess.php index 3b38c30..698b25e 100644 --- a/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationOverviewAccess.php +++ b/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationOverviewAccess.php @@ -18,6 +18,7 @@ * Access check for entity translation overview. */ class ContentTranslationOverviewAccess implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/edit/lib/Drupal/edit/Access/EditEntityAccessCheck.php b/core/modules/edit/lib/Drupal/edit/Access/EditEntityAccessCheck.php index becc5f6..d417832 100644 --- a/core/modules/edit/lib/Drupal/edit/Access/EditEntityAccessCheck.php +++ b/core/modules/edit/lib/Drupal/edit/Access/EditEntityAccessCheck.php @@ -20,6 +20,7 @@ * Access check for editing entities. */ class EditEntityAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/edit/lib/Drupal/edit/Access/EditEntityFieldAccessCheck.php b/core/modules/edit/lib/Drupal/edit/Access/EditEntityFieldAccessCheck.php index 98257db..6af4fef 100644 --- a/core/modules/edit/lib/Drupal/edit/Access/EditEntityFieldAccessCheck.php +++ b/core/modules/edit/lib/Drupal/edit/Access/EditEntityFieldAccessCheck.php @@ -19,6 +19,7 @@ * Access check for editing entity fields. */ class EditEntityFieldAccessCheck implements AccessInterface, EditEntityFieldAccessCheckInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Access/FieldDeleteAccessCheck.php b/core/modules/field_ui/lib/Drupal/field_ui/Access/FieldDeleteAccessCheck.php index a9484ba..c07c36e 100644 --- a/core/modules/field_ui/lib/Drupal/field_ui/Access/FieldDeleteAccessCheck.php +++ b/core/modules/field_ui/lib/Drupal/field_ui/Access/FieldDeleteAccessCheck.php @@ -17,6 +17,7 @@ * Allows access to routes to be controlled by an '_access' boolean parameter. */ class FieldDeleteAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Access/FormModeAccessCheck.php b/core/modules/field_ui/lib/Drupal/field_ui/Access/FormModeAccessCheck.php index 4691922..5632572 100644 --- a/core/modules/field_ui/lib/Drupal/field_ui/Access/FormModeAccessCheck.php +++ b/core/modules/field_ui/lib/Drupal/field_ui/Access/FormModeAccessCheck.php @@ -18,6 +18,7 @@ * Allows access to routes to be controlled by an '_access' boolean parameter. */ class FormModeAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Access/ViewModeAccessCheck.php b/core/modules/field_ui/lib/Drupal/field_ui/Access/ViewModeAccessCheck.php index de010eb..dc2d130 100644 --- a/core/modules/field_ui/lib/Drupal/field_ui/Access/ViewModeAccessCheck.php +++ b/core/modules/field_ui/lib/Drupal/field_ui/Access/ViewModeAccessCheck.php @@ -18,6 +18,7 @@ * Allows access to routes to be controlled by an '_access' boolean parameter. */ class ViewModeAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/node/lib/Drupal/node/Access/NodeAddAccessCheck.php b/core/modules/node/lib/Drupal/node/Access/NodeAddAccessCheck.php index a566a5b..8d4fb7c 100644 --- a/core/modules/node/lib/Drupal/node/Access/NodeAddAccessCheck.php +++ b/core/modules/node/lib/Drupal/node/Access/NodeAddAccessCheck.php @@ -19,6 +19,7 @@ * Determines access to for node add pages. */ class NodeAddAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/node/lib/Drupal/node/Access/NodeRevisionAccessCheck.php b/core/modules/node/lib/Drupal/node/Access/NodeRevisionAccessCheck.php index b5d9385..dc14bd8 100644 --- a/core/modules/node/lib/Drupal/node/Access/NodeRevisionAccessCheck.php +++ b/core/modules/node/lib/Drupal/node/Access/NodeRevisionAccessCheck.php @@ -19,6 +19,7 @@ * Provides an access checker for node revisions. */ class NodeRevisionAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/rest/lib/Drupal/rest/Access/CSRFAccessCheck.php b/core/modules/rest/lib/Drupal/rest/Access/CSRFAccessCheck.php index 6d29a8f..a0d9b5d 100644 --- a/core/modules/rest/lib/Drupal/rest/Access/CSRFAccessCheck.php +++ b/core/modules/rest/lib/Drupal/rest/Access/CSRFAccessCheck.php @@ -17,6 +17,7 @@ * Access protection against CSRF attacks. */ class CSRFAccessCheck implements AccessCheckInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Access/LinkAccessCheck.php b/core/modules/shortcut/lib/Drupal/shortcut/Access/LinkAccessCheck.php index 8f4131c..e42ea99 100644 --- a/core/modules/shortcut/lib/Drupal/shortcut/Access/LinkAccessCheck.php +++ b/core/modules/shortcut/lib/Drupal/shortcut/Access/LinkAccessCheck.php @@ -17,6 +17,7 @@ * Provides an access check for shortcut link delete routes. */ class LinkAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Access/ShortcutSetEditAccessCheck.php b/core/modules/shortcut/lib/Drupal/shortcut/Access/ShortcutSetEditAccessCheck.php index 0a6aa49..56d9a42 100644 --- a/core/modules/shortcut/lib/Drupal/shortcut/Access/ShortcutSetEditAccessCheck.php +++ b/core/modules/shortcut/lib/Drupal/shortcut/Access/ShortcutSetEditAccessCheck.php @@ -17,6 +17,7 @@ * Provides an access check for shortcut link delete routes. */ class ShortcutSetEditAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Access/ShortcutSetSwitchAccessCheck.php b/core/modules/shortcut/lib/Drupal/shortcut/Access/ShortcutSetSwitchAccessCheck.php index b491719..4d1d8e4 100644 --- a/core/modules/shortcut/lib/Drupal/shortcut/Access/ShortcutSetSwitchAccessCheck.php +++ b/core/modules/shortcut/lib/Drupal/shortcut/Access/ShortcutSetSwitchAccessCheck.php @@ -17,6 +17,7 @@ * Provides an access check for shortcut link delete routes. */ class ShortcutSetSwitchAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/system/lib/Drupal/system/Access/CronAccessCheck.php b/core/modules/system/lib/Drupal/system/Access/CronAccessCheck.php index c05d9bf..ecc786f 100644 --- a/core/modules/system/lib/Drupal/system/Access/CronAccessCheck.php +++ b/core/modules/system/lib/Drupal/system/Access/CronAccessCheck.php @@ -14,6 +14,7 @@ * Access check for cron routes. */ class CronAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/Access/DefinedTestAccessCheck.php b/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/Access/DefinedTestAccessCheck.php index 492ba1b..5d9f796 100644 --- a/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/Access/DefinedTestAccessCheck.php +++ b/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/Access/DefinedTestAccessCheck.php @@ -15,6 +15,7 @@ * Defines an access checker similar to DefaultAccessCheck */ class DefinedTestAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/Access/TestAccessCheck.php b/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/Access/TestAccessCheck.php index a4d9ac8..7da6fc0 100644 --- a/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/Access/TestAccessCheck.php +++ b/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/Access/TestAccessCheck.php @@ -14,6 +14,7 @@ * Access check for test routes. */ class TestAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/tracker/lib/Drupal/tracker/Access/ViewOwnTrackerAccessCheck.php b/core/modules/tracker/lib/Drupal/tracker/Access/ViewOwnTrackerAccessCheck.php index 8741cdd..3a3a4ad 100644 --- a/core/modules/tracker/lib/Drupal/tracker/Access/ViewOwnTrackerAccessCheck.php +++ b/core/modules/tracker/lib/Drupal/tracker/Access/ViewOwnTrackerAccessCheck.php @@ -16,6 +16,7 @@ * Access check for user tracker routes. */ class ViewOwnTrackerAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/update/lib/Drupal/update/Access/UpdateManagerAccessCheck.php b/core/modules/update/lib/Drupal/update/Access/UpdateManagerAccessCheck.php index 8fd3fe1..6340d45 100644 --- a/core/modules/update/lib/Drupal/update/Access/UpdateManagerAccessCheck.php +++ b/core/modules/update/lib/Drupal/update/Access/UpdateManagerAccessCheck.php @@ -15,6 +15,7 @@ * Determines whether allow authorized operations is set. */ class UpdateManagerAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/user/lib/Drupal/user/Access/LoginStatusCheck.php b/core/modules/user/lib/Drupal/user/Access/LoginStatusCheck.php index d87551a..26fb5d6 100644 --- a/core/modules/user/lib/Drupal/user/Access/LoginStatusCheck.php +++ b/core/modules/user/lib/Drupal/user/Access/LoginStatusCheck.php @@ -17,6 +17,7 @@ * Determines access to routes based on login status of current user. */ class LoginStatusCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/user/lib/Drupal/user/Access/PermissionAccessCheck.php b/core/modules/user/lib/Drupal/user/Access/PermissionAccessCheck.php index 572f022..aa2d1e9 100644 --- a/core/modules/user/lib/Drupal/user/Access/PermissionAccessCheck.php +++ b/core/modules/user/lib/Drupal/user/Access/PermissionAccessCheck.php @@ -16,6 +16,7 @@ * Determines access to routes based on permissions defined via hook_permission(). */ class PermissionAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/user/lib/Drupal/user/Access/RegisterAccessCheck.php b/core/modules/user/lib/Drupal/user/Access/RegisterAccessCheck.php index af1ba23..69b0c54 100644 --- a/core/modules/user/lib/Drupal/user/Access/RegisterAccessCheck.php +++ b/core/modules/user/lib/Drupal/user/Access/RegisterAccessCheck.php @@ -17,6 +17,7 @@ * Access check for user registration routes. */ class RegisterAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/modules/user/lib/Drupal/user/Access/RoleAccessCheck.php b/core/modules/user/lib/Drupal/user/Access/RoleAccessCheck.php index 0d1205b..e78e7d7 100644 --- a/core/modules/user/lib/Drupal/user/Access/RoleAccessCheck.php +++ b/core/modules/user/lib/Drupal/user/Access/RoleAccessCheck.php @@ -20,12 +20,13 @@ * ones you can conjunct them with AND by using a "+" and with OR by using ",". */ class RoleAccessCheck implements AccessInterface { + use DefaultAccessCallbackTrait; /** * @see \Drupal\Core\Routing\Access\AccessInterface::getAccessCallback(). */ - public function access(AccountInterface $account, Route $route) { + public function access(Route $route, AccountInterface $account) { // Requirements just allow strings, so this might be a comma separated list. $rid_string = $route->getRequirement('_role'); diff --git a/core/modules/views/lib/Drupal/views/ViewsAccessCheck.php b/core/modules/views/lib/Drupal/views/ViewsAccessCheck.php index 5eddd58..3a40208 100644 --- a/core/modules/views/lib/Drupal/views/ViewsAccessCheck.php +++ b/core/modules/views/lib/Drupal/views/ViewsAccessCheck.php @@ -18,6 +18,7 @@ * @todo We could leverage the permission one as well? */ class ViewsAccessCheck implements AccessCheckInterface { + use DefaultAccessCallbackTrait; /** diff --git a/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php b/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php index c3f9ef0..268fe8a 100644 --- a/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php +++ b/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php @@ -602,8 +602,10 @@ public function testCheckException($return_value, $access_mode) { // Register a service that will return an incorrect value. $access_check = $this->getMock('Drupal\Core\Routing\Access\AccessInterface'); $access_check->expects($this->any()) - ->method('access') - ->will($this->returnValue($return_value)); + ->method('getAccessCallback') + ->will($this->returnValue(function() use ($return_value) { + return $return_value; + })); $container->set('test_incorrect_value', $access_check); $access_manager = new AccessManager($route_provider, $this->urlGenerator, $this->paramConverter, $this->argumentsResolver); diff --git a/core/tests/Drupal/Tests/Core/Access/CustomAccessCheckTest.php b/core/tests/Drupal/Tests/Core/Access/CustomAccessCheckTest.php index 19a8bff..d93007b 100644 --- a/core/tests/Drupal/Tests/Core/Access/CustomAccessCheckTest.php +++ b/core/tests/Drupal/Tests/Core/Access/CustomAccessCheckTest.php @@ -56,44 +56,40 @@ protected function setUp() { * Test the access method. */ public function testAccess() { - $request = new Request(array()); - $this->controllerResolver->expects($this->at(0)) ->method('getControllerFromDefinition') ->with('\Drupal\Tests\Core\Access\TestController::accessDeny') ->will($this->returnValue(array(new TestController(), 'accessDeny'))); $this->controllerResolver->expects($this->at(1)) - ->method('getArguments') - ->will($this->returnValue(array())); - - $this->controllerResolver->expects($this->at(2)) ->method('getControllerFromDefinition') ->with('\Drupal\Tests\Core\Access\TestController::accessAllow') ->will($this->returnValue(array(new TestController(), 'accessAllow'))); - $this->controllerResolver->expects($this->at(3)) - ->method('getArguments') - ->will($this->returnValue(array())); - - $this->controllerResolver->expects($this->at(4)) + $this->controllerResolver->expects($this->at(2)) ->method('getControllerFromDefinition') ->with('\Drupal\Tests\Core\Access\TestController::accessParameter') ->will($this->returnValue(array(new TestController(), 'accessParameter'))); - $this->controllerResolver->expects($this->at(5)) - ->method('getArguments') - ->will($this->returnValue(array('parameter' => 'TRUE'))); + $this->controllerResolver->expects($this->at(3)) + ->method('getControllerFromDefinition') + ->with('\Drupal\Tests\Core\Access\TestController::accessParameter') + ->will($this->returnValue(array(new TestController(), 'accessParameter'))); $route = new Route('/test-route', array(), array('_custom_access' => '\Drupal\Tests\Core\Access\TestController::accessDeny')); - $account = $this->getMock('Drupal\Core\Session\AccountInterface'); - $this->assertSame(AccessInterface::DENY, $this->accessChecker->access($route, $request, $account)); + $callable = $this->accessChecker->getAccessCallback($route); + $this->assertSame(AccessInterface::DENY, $callable()); $route = new Route('/test-route', array(), array('_custom_access' => '\Drupal\Tests\Core\Access\TestController::accessAllow')); - $this->assertSame(AccessInterface::ALLOW, $this->accessChecker->access($route, $request, $account)); + $callable = $this->accessChecker->getAccessCallback($route); + $this->assertSame(AccessInterface::ALLOW, $callable()); $route = new Route('/test-route', array('parameter' => 'TRUE'), array('_custom_access' => '\Drupal\Tests\Core\Access\TestController::accessParameter')); - $this->assertSame(AccessInterface::ALLOW, $this->accessChecker->access($route, $request, $account)); + $callable = $this->accessChecker->getAccessCallback($route); + $this->assertSame(AccessInterface::ALLOW, $callable(TRUE)); + + $callable = $this->accessChecker->getAccessCallback($route); + $this->assertSame(AccessInterface::DENY, $callable(FALSE)); } } diff --git a/core/tests/Drupal/Tests/Core/Route/RoleAccessCheckTest.php b/core/tests/Drupal/Tests/Core/Route/RoleAccessCheckTest.php index 873ff0e..6be04d0 100644 --- a/core/tests/Drupal/Tests/Core/Route/RoleAccessCheckTest.php +++ b/core/tests/Drupal/Tests/Core/Route/RoleAccessCheckTest.php @@ -161,14 +161,14 @@ public function testRoleAccess($path, $grant_accounts, $deny_accounts) { foreach ($grant_accounts as $account) { $subrequest = Request::create($path, 'GET'); $message = sprintf('Access granted for user with the roles %s on path: %s', implode(', ', $account->getRoles()), $path); - $this->assertSame(AccessCheckInterface::ALLOW, $role_access_check->access($collection->get($path), $subrequest, $account), $message); + $this->assertSame(AccessCheckInterface::ALLOW, $role_access_check->access($collection->get($path), $account), $message); } // Check all users which don't have access. foreach ($deny_accounts as $account) { $subrequest = Request::create($path, 'GET'); $message = sprintf('Access denied for user %s with the roles %s on path: %s', $account->id(), implode(', ', $account->getRoles()), $path); - $has_access = $role_access_check->access($collection->get($path), $subrequest, $account); + $has_access = $role_access_check->access($collection->get($path), $account); $this->assertSame(AccessCheckInterface::DENY, $has_access , $message); } }