only in patch2: unchanged: --- /dev/null +++ b/core/modules/system/tests/src/Functional/System/MaintenancePageOfflineTest.php @@ -0,0 +1,68 @@ +siteDirectory . '/settings.php'; + chmod($settings_filename, 0777); + $settings_php = file_get_contents($settings_filename); + // Ensure we can test errors rather than being caught in + // \Drupal\Core\Test\HttpClientMiddleware\TestHttpClientMiddleware. + $settings_php .= "\ndefine('SIMPLETEST_COLLECT_ERRORS', FALSE);\n"; + file_put_contents($settings_filename, $settings_php); + + $settings = []; + + // Set $config['system.logging']['error_level'] = 'hide' in settings.php + $settings['config']['system.logging']['error_level'] = (object) [ + 'value' => ERROR_REPORTING_DISPLAY_ALL, + 'required' => TRUE, + ]; + $this->writeSettings($settings); + } + + /** + * Tests if the maintenance offline page is served when settings.php contains + * invalid database settings. + */ + public function testInvalidDatabaseSettings() { + $this->drupalGet(''); + $this->assertSession()->statusCodeEquals(200); + $this->assertSession()->pageTextContains('Log in'); + + $settings = []; + + // Set $databases['default']['default']['username'] = 'invalid' in + // settings.php + $settings['databases']['default']['default']['username'] = (object) [ + 'value' => 'invalid', + 'required' => TRUE, + ]; + $this->writeSettings($settings); + $this->getSession()->restart(); + + $this->drupalGet(''); + $this->assertSession()->statusCodeEquals(500); + $this->assertSession()->pageTextContains('Service unavailable'); + } + +}