diff --git a/modules/system/system.test b/modules/system/system.test index e48ba16ac793c7d479c6ee7991917f7a90607e7e..18bb36c63540088e8eb6a37605b95d897a4944c6 100644 --- a/modules/system/system.test +++ b/modules/system/system.test @@ -333,6 +333,70 @@ class AdminMetaTagTestCase extends DrupalWebTestCase { } } +/** + * Tests custom access denied functionality. + */ +class AccessDeniedTestCase extends DrupalWebTestCase { + protected $admin_user; + + /** + * Implementation of getInfo(). + */ + function getInfo() { + return array( + 'name' => t('403 functionality'), + 'description' => t("Tests page access denied functionality, including custom 403 pages."), + 'group' => t('System') + ); + } + + /** + * Implementation of setUp(). + */ + function setUp() { + parent::setUp(); + + // Create an administrative user. + $this->admin_user = $this->drupalCreateUser(array('administer site configuration')); + $this->drupalLogin($this->admin_user); + } + + function testAccessDenied() { + $this->drupalGet('admin'); + $this->assertText(t('Access denied'), t('Found the default 403 page')); + + $edit = array( + 'title' => $this->randomName(10), + 'body' => $this->randomName(100) + ); + $node = $this->drupalCreateNode($edit); + + // Use a custom 403 page. + $this->drupalPost('admin/settings/error-reporting', array('site_403' => 'node/' . $node->nid), t('Save configuration')); + + $this->drupalGet('admin'); + $this->assertText($node->title, t('Found the custom 403 page')); + + // Logout and check that the user login block is shown on custom 403 pages. + $this->drupalLogout(); + + $this->drupalGet('admin'); + $this->assertText($node->title, t('Found the custom 403 page')); + $this->assertText(t('User login'), t('Blocks are shown on the custom 403 page')); + + // Log back in and remove the custom 403 page. + $this->drupalLogin($this->admin_user); + $this->drupalPost('admin/settings/error-reporting', array(), t('Reset to defaults')); + + // Logout and check that the user login block is shown on default 403 pages. + $this->drupalLogout(); + + $this->drupalGet('admin'); + $this->assertText(t('Access denied'), t('Found the default 403 page')); + $this->assertText(t('User login'), t('Blocks are shown on the default 403 page')); + } +} + class PageNotFoundTestCase extends DrupalWebTestCase { protected $admin_user;