--- modules/system/system.test.orig 2008-08-28 12:22:26.000000000 +0200 +++ modules/system/system.test 2008-08-28 13:49:30.000000000 +0200 @@ -321,6 +321,67 @@ } } +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; @@ -381,4 +442,3 @@ $this->assertNoText(t('User login'), t('Blocks are not shown on the default 404 page')); } } -