diff --git a/regcode.links.menu.yml b/regcode.links.menu.yml index f905e705322173c1b1358003dadfc9390c44b2bd..6e085217d70dd0ebc9050132f04963d8dcdec986 100644 --- a/regcode.links.menu.yml +++ b/regcode.links.menu.yml @@ -1,5 +1,5 @@ regcode.admin_list: - route_name: regcode.admin_list title: 'Registration codes' description: 'Manage registration codes.' + route_name: view.regcode.page_admin parent: user.admin_index diff --git a/regcode.links.task.yml b/regcode.links.task.yml index 0d8a423dc913fae6259957c4ecac583d5446e2df..521e206dbf3dec4a1b61a223a8a5624fbaa67d6d 100644 --- a/regcode.links.task.yml +++ b/regcode.links.task.yml @@ -1,23 +1,17 @@ -regcode.admin_list: - route_name: regcode.admin_list - title: List - weight: 10 - base_route: regcode.admin_list - regcode.admin_create: - route_name: regcode.admin_create title: Create + route_name: regcode.admin_create + base_route: view.regcode.page_admin weight: 20 - base_route: regcode.admin_list regcode.admin_manage: - route_name: regcode.admin_manage title: Manage + route_name: regcode.admin_manage + base_route: view.regcode.page_admin weight: 30 - base_route: regcode.admin_list regcode.admin_settings: - route_name: regcode.admin_settings title: Settings + route_name: regcode.admin_settings + base_route: view.regcode.page_admin weight: 40 - base_route: regcode.admin_list diff --git a/regcode.module b/regcode.module index 972f25725bd7c47b17f786a3db41804e725962eb..4116fccc00ce70b0ccb99191ef343e83e9ac1251 100644 --- a/regcode.module +++ b/regcode.module @@ -18,7 +18,7 @@ use Drupal\regcode\RegistrationCodeInterface; function regcode_help($path, $arg) { $output = ''; switch ($path) { - case 'regcode.admin_list': + case 'view.regcode.page_admin': $output = '<p>' . t('View and manage created registration codes.') . '</p>'; break; diff --git a/tests/src/Functional/RegcodeSettingsTest.php b/tests/src/Functional/RegcodeSettingsTest.php index b0bf1bc98f30d09e9a3b48873bf6c651b6f8ae8b..fb917ebe9024c81cf9eb970447f4498f40833f3a 100644 --- a/tests/src/Functional/RegcodeSettingsTest.php +++ b/tests/src/Functional/RegcodeSettingsTest.php @@ -18,7 +18,7 @@ class RegcodeSettingsTest extends BrowserTestBase { /** * {@inheritdoc} */ - protected static $modules = ['regcode', 'help', 'block']; + protected static $modules = ['regcode', 'help', 'block', 'views']; /** * {@inheritdoc} @@ -58,9 +58,9 @@ class RegcodeSettingsTest extends BrowserTestBase { } /** - * Tests module permissions / access to configuration page. + * Tests access to module settings tab. */ - public function testUserAccess(): void { + public function testSettingsTab(): void { /** @var \Drupal\Tests\WebAssert $assert */ $assert = $this->assertSession(); @@ -84,4 +84,85 @@ class RegcodeSettingsTest extends BrowserTestBase { $this->drupalLogout(); } + /** + * Tests access to code list tab. + */ + public function testListTab(): void { + /** @var \Drupal\Tests\WebAssert $assert */ + $assert = $this->assertSession(); + + // Test as anonymous user. + $this->drupalGet('admin/config/people/regcode'); + $assert->statusCodeEquals(403); + $assert->pageTextContains('Access denied'); + $assert->pageTextContains('You are not authorized to access this page.'); + + // Test as authenticated but unprivileged user. + $this->drupalLogin($this->unprivUser); + $this->drupalGet('admin/config/people/regcode'); + $assert->statusCodeEquals(403); + $this->drupalLogout(); + + // Test as admin user. + $this->drupalLogin($this->adminUser); + $this->drupalGet('admin/config/people/regcode'); + $assert->statusCodeEquals(200); + $assert->pageTextContains('View and manage created registration codes.'); + $this->drupalLogout(); + } + + /** + * Tests access to code creation tab. + */ + public function testCreateTab(): void { + /** @var \Drupal\Tests\WebAssert $assert */ + $assert = $this->assertSession(); + + // Test as anonymous user. + $this->drupalGet('admin/config/people/regcode/create'); + $assert->statusCodeEquals(403); + $assert->pageTextContains('Access denied'); + $assert->pageTextContains('You are not authorized to access this page.'); + + // Test as authenticated but unprivileged user. + $this->drupalLogin($this->unprivUser); + $this->drupalGet('admin/config/people/regcode/create'); + $assert->statusCodeEquals(403); + $this->drupalLogout(); + + // Test as admin user. + $this->drupalLogin($this->adminUser); + $this->drupalGet('admin/config/people/regcode/create'); + $assert->statusCodeEquals(200); + $assert->pageTextContains('Create manually or generate new registration codes.'); + $this->drupalLogout(); + } + + /** + * Tests access to code manage tab. + */ + public function testManageTab(): void { + /** @var \Drupal\Tests\WebAssert $assert */ + $assert = $this->assertSession(); + + // Test as anonymous user. + $this->drupalGet('admin/config/people/regcode/manage'); + $assert->statusCodeEquals(403); + $assert->pageTextContains('Access denied'); + $assert->pageTextContains('You are not authorized to access this page.'); + + // Test as authenticated but unprivileged user. + $this->drupalLogin($this->unprivUser); + $this->drupalGet('admin/config/people/regcode/manage'); + $assert->statusCodeEquals(403); + $this->drupalLogout(); + + // Test as admin user. + $this->drupalLogin($this->adminUser); + $this->drupalGet('admin/config/people/regcode/manage'); + $assert->statusCodeEquals(200); + $assert->pageTextContains('Provides bulk management features for created registration codes.'); + $this->drupalLogout(); + } + }