diff --git a/menu_example/menu_example.links.menu.yml b/menu_example/menu_example.links.menu.yml index 785af62..bcfc9f1 100644 --- a/menu_example/menu_example.links.menu.yml +++ b/menu_example/menu_example.links.menu.yml @@ -83,3 +83,10 @@ examples.menu_example.placeholder_argument: parent: 'examples.menu_example' route_name: examples.menu_example.placeholder_argument weight: 60 + +example.menu_example.path_override: + title: Path Override + description: '' + parent: 'examples.menu_example' + route_name: example.menu_example.path_override + weight: 70 diff --git a/menu_example/src/Controller/MenuExampleController.php b/menu_example/src/Controller/MenuExampleController.php index e35c62c..d149ded 100644 --- a/menu_example/src/Controller/MenuExampleController.php +++ b/menu_example/src/Controller/MenuExampleController.php @@ -243,7 +243,7 @@ class MenuExampleController extends ControllerBase { */ public function pathOverride() { return [ - '#markup' => $this->t('This menu item was created strictly to allow the RouteSubscriber class to have something to operate on. menu_example.routing.yml defined the path as examples/menu_example/menu_original_path. The alterRoutes() changes it to examples/menu_example/menu_altered_path. You can try navigating to both paths and see what happens!'), + '#markup' => $this->t('This menu item was created strictly to allow the RouteSubscriber class to have something to operate on. menu_example.routing.yml defined the path as examples/menu-example/menu-original-path. The alterRoutes() changes it to /examples/menu-example/menu-altered-path. You can try navigating to both paths and see what happens!'), ]; } diff --git a/menu_example/tests/src/Functional/MenuExampleTest.php b/menu_example/tests/src/Functional/MenuExampleTest.php index c64fc59..6a4c592 100644 --- a/menu_example/tests/src/Functional/MenuExampleTest.php +++ b/menu_example/tests/src/Functional/MenuExampleTest.php @@ -3,6 +3,8 @@ namespace Drupal\Tests\menu_example\Functional; use Drupal\Tests\BrowserTestBase; +use Drupal\user\Entity\Role; +use Drupal\user\RoleInterface; /** * Test the functionality for the menu Example. @@ -49,12 +51,21 @@ class MenuExampleTest extends BrowserTestBase { $this->assertSession()->pageTextContains(t('Custom Access Example')); $this->drupalGet('examples/menu-example/custom-access/page'); $this->assertSession()->statusCodeEquals(200); + // Logout user to check denial of access. + $this->drupalLogout(); + $this->drupalGet('examples/menu-example/custom-access/page'); + $this->assertSession()->statusCodeEquals(403); // Check 'Permission Example' menu entry. + $this->drupalLogin($web_user); $this->drupalGet('examples/menu-example/permissioned'); $this->assertSession()->pageTextContains(t('Permissioned Example')); $this->clickLink('examples/menu-example/permissioned/controlled'); $this->assertSession()->statusCodeEquals(403); + // Check access with appropriate permissions. + $this->grantPermissions(Role::load(Role::AUTHENTICATED_ID), ['access protected menu example']); + $this->drupalGet('examples/menu-example/permissioned/controlled'); + $this->assertSession()->statusCodeEquals(200); // Check Route only example entry. $this->clickLink(t('Route only example'));