X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=web%2Fcore%2Fmodules%2Fsystem%2Fsrc%2FTests%2FSystem%2FSiteMaintenanceTest.php;fp=web%2Fcore%2Fmodules%2Fsystem%2Fsrc%2FTests%2FSystem%2FSiteMaintenanceTest.php;h=0000000000000000000000000000000000000000;hb=0bf8d09d2542548982e81a441b1f16e75873a04f;hp=e269a6c73e22cbe7c00779d319ba3b44afdea0bc;hpb=74df008bdbb3a11eeea356744f39b802369bda3c;p=yaffs-website diff --git a/web/core/modules/system/src/Tests/System/SiteMaintenanceTest.php b/web/core/modules/system/src/Tests/System/SiteMaintenanceTest.php deleted file mode 100644 index e269a6c73..000000000 --- a/web/core/modules/system/src/Tests/System/SiteMaintenanceTest.php +++ /dev/null @@ -1,159 +0,0 @@ -config('system.site')->set('page.front', '/node')->save(); - $this->config('system.performance')->set('js.preprocess', 1)->save(); - - // Create a user allowed to access site in maintenance mode. - $this->user = $this->drupalCreateUser(['access site in maintenance mode']); - // Create an administrative user. - $this->adminUser = $this->drupalCreateUser(['administer site configuration', 'access site in maintenance mode']); - $this->drupalLogin($this->adminUser); - } - - /** - * Verifies site maintenance mode functionality. - */ - public function testSiteMaintenance() { - - // Verify that permission message is displayed. - $permission_handler = $this->container->get('user.permissions'); - $permissions = $permission_handler->getPermissions(); - $permission_label = $permissions['access site in maintenance mode']['title']; - $permission_message = t('Visitors will only see the maintenance mode message. Only users with the "@permission-label" permission will be able to access the site. Authorized users can log in directly via the user login page.', ['@permission-label' => $permission_label, ':permissions-url' => \Drupal::url('user.admin_permissions'), ':user-login' => \Drupal::url('user.login')]); - $this->drupalGet(Url::fromRoute('system.site_maintenance_mode')); - $this->assertRaw($permission_message, 'Found the permission message.'); - - $this->drupalGet(Url::fromRoute('user.page')); - // JS should be aggregated, so drupal.js is not in the page source. - $links = $this->xpath('//script[contains(@src, :href)]', [':href' => '/core/misc/drupal.js']); - $this->assertFalse(isset($links[0]), 'script /core/misc/drupal.js not in page'); - // Turn on maintenance mode. - $edit = [ - 'maintenance_mode' => 1, - ]; - $this->drupalPostForm('admin/config/development/maintenance', $edit, t('Save configuration')); - - $admin_message = t('Operating in maintenance mode. Go online.', [':url' => \Drupal::url('system.site_maintenance_mode')]); - $user_message = t('Operating in maintenance mode.'); - $offline_message = t('@site is currently under maintenance. We should be back shortly. Thank you for your patience.', ['@site' => $this->config('system.site')->get('name')]); - - $this->drupalGet(Url::fromRoute('user.page')); - // JS should not be aggregated, so drupal.js is expected in the page source. - $links = $this->xpath('//script[contains(@src, :href)]', [':href' => '/core/misc/drupal.js']); - $this->assertTrue(isset($links[0]), 'script /core/misc/drupal.js in page'); - $this->assertRaw($admin_message, 'Found the site maintenance mode message.'); - - // Logout and verify that offline message is displayed. - $this->drupalLogout(); - $this->drupalGet(''); - $this->assertEqual('Site under maintenance', $this->cssSelect('main h1')[0]); - $this->assertText($offline_message); - $this->drupalGet('node'); - $this->assertEqual('Site under maintenance', $this->cssSelect('main h1')[0]); - $this->assertText($offline_message); - $this->drupalGet('user/register'); - $this->assertEqual('Site under maintenance', $this->cssSelect('main h1')[0]); - $this->assertText($offline_message); - - // Verify that user is able to log in. - $this->drupalGet('user'); - $this->assertNoText($offline_message); - $this->drupalGet('user/login'); - $this->assertNoText($offline_message); - - // Log in user and verify that maintenance mode message is displayed - // directly after login. - $edit = [ - 'name' => $this->user->getUsername(), - 'pass' => $this->user->pass_raw, - ]; - $this->drupalPostForm(NULL, $edit, t('Log in')); - $this->assertText($user_message); - - // Log in administrative user and configure a custom site offline message. - $this->drupalLogout(); - $this->drupalLogin($this->adminUser); - $this->drupalGet('admin/config/development/maintenance'); - $this->assertNoRaw($admin_message, 'Site maintenance mode message not displayed.'); - - $offline_message = 'Sorry, not online.'; - $edit = [ - 'maintenance_mode_message' => $offline_message, - ]; - $this->drupalPostForm(NULL, $edit, t('Save configuration')); - - // Logout and verify that custom site offline message is displayed. - $this->drupalLogout(); - $this->drupalGet(''); - $this->assertEqual('Site under maintenance', $this->cssSelect('main h1')[0]); - $this->assertRaw($offline_message, 'Found the site offline message.'); - - // Verify that custom site offline message is not displayed on user/password. - $this->drupalGet('user/password'); - $this->assertText(t('Username or email address'), 'Anonymous users can access user/password'); - - // Submit password reset form. - $edit = [ - 'name' => $this->user->getUsername(), - ]; - $this->drupalPostForm('user/password', $edit, t('Submit')); - $mails = $this->drupalGetMails(); - $start = strpos($mails[0]['body'], 'user/reset/' . $this->user->id()); - $path = substr($mails[0]['body'], $start, 66 + strlen($this->user->id())); - - // Log in with temporary login link. - $this->drupalPostForm($path, [], t('Log in')); - $this->assertText($user_message); - - // Regression test to check if title displays in Bartik on maintenance page. - \Drupal::service('theme_handler')->install(['bartik']); - $this->config('system.theme')->set('default', 'bartik')->save(); - - // Logout and verify that offline message is displayed in Bartik. - $this->drupalLogout(); - $this->drupalGet(''); - $this->assertEqual('Site under maintenance', $this->cssSelect('main h1')[0]); - } - - /** - * Tests responses to non-HTML requests when in maintenance mode. - */ - public function testNonHtmlRequest() { - $this->drupalLogout(); - \Drupal::state()->set('system.maintenance_mode', TRUE); - $formats = ['json', 'xml', 'non-existing']; - foreach ($formats as $format) { - $this->pass('Testing format ' . $format); - $this->drupalGet('', ['query' => ['_format' => $format]]); - $this->assertResponse(503); - $this->assertRaw('Drupal is currently under maintenance. We should be back shortly. Thank you for your patience.'); - $this->assertHeader('Content-Type', 'text/plain; charset=UTF-8'); - } - } - -}