Mercurial > hg > isophonics-drupal-site
comparison core/tests/Drupal/FunctionalTests/Installer/DistributionProfileExistingSettingsTest.php @ 16:c2387f117808
Routine composer update
author | Chris Cannam |
---|---|
date | Tue, 10 Jul 2018 15:07:59 +0100 |
parents | |
children | 129ea1e6d783 |
comparison
equal
deleted
inserted
replaced
15:e200cb7efeb3 | 16:c2387f117808 |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\FunctionalTests\Installer; | |
4 | |
5 use Drupal\Component\Serialization\Yaml; | |
6 use Drupal\Core\Database\Database; | |
7 use Drupal\Core\DrupalKernel; | |
8 use Drupal\Core\Site\Settings; | |
9 use Symfony\Component\HttpFoundation\Request; | |
10 | |
11 /** | |
12 * Tests distribution profile support with existing settings. | |
13 * | |
14 * @group Installer | |
15 */ | |
16 class DistributionProfileExistingSettingsTest extends InstallerTestBase { | |
17 | |
18 /** | |
19 * The distribution profile info. | |
20 * | |
21 * @var array | |
22 */ | |
23 protected $info; | |
24 | |
25 /** | |
26 * {@inheritdoc} | |
27 */ | |
28 protected function prepareEnvironment() { | |
29 parent::prepareEnvironment(); | |
30 $this->info = [ | |
31 'type' => 'profile', | |
32 'core' => \Drupal::CORE_COMPATIBILITY, | |
33 'name' => 'Distribution profile', | |
34 'distribution' => [ | |
35 'name' => 'My Distribution', | |
36 'install' => [ | |
37 'theme' => 'bartik', | |
38 ], | |
39 ], | |
40 ]; | |
41 // File API functions are not available yet. | |
42 $path = $this->siteDirectory . '/profiles/mydistro'; | |
43 mkdir($path, 0777, TRUE); | |
44 file_put_contents("$path/mydistro.info.yml", Yaml::encode($this->info)); | |
45 | |
46 // Pre-configure hash salt. | |
47 // Any string is valid, so simply use the class name of this test. | |
48 $this->settings['settings']['hash_salt'] = (object) [ | |
49 'value' => __CLASS__, | |
50 'required' => TRUE, | |
51 ]; | |
52 | |
53 // Pre-configure database credentials. | |
54 $connection_info = Database::getConnectionInfo(); | |
55 unset($connection_info['default']['pdo']); | |
56 unset($connection_info['default']['init_commands']); | |
57 | |
58 $this->settings['databases']['default'] = (object) [ | |
59 'value' => $connection_info, | |
60 'required' => TRUE, | |
61 ]; | |
62 | |
63 // Use the kernel to find the site path because the site.path service should | |
64 // not be available at this point in the install process. | |
65 $site_path = DrupalKernel::findSitePath(Request::createFromGlobals()); | |
66 // Pre-configure config directories. | |
67 $this->settings['config_directories'] = [ | |
68 CONFIG_SYNC_DIRECTORY => (object) [ | |
69 'value' => $site_path . '/files/config_staging', | |
70 'required' => TRUE, | |
71 ], | |
72 ]; | |
73 mkdir($this->settings['config_directories'][CONFIG_SYNC_DIRECTORY]->value, 0777, TRUE); | |
74 } | |
75 | |
76 /** | |
77 * {@inheritdoc} | |
78 */ | |
79 protected function setUpLanguage() { | |
80 // Make settings file not writable. | |
81 $filename = $this->siteDirectory . '/settings.php'; | |
82 // Make the settings file read-only. | |
83 // Not using File API; a potential error must trigger a PHP warning. | |
84 chmod($filename, 0444); | |
85 | |
86 // Verify that the distribution name appears. | |
87 $this->assertRaw($this->info['distribution']['name']); | |
88 // Verify that the requested theme is used. | |
89 $this->assertRaw($this->info['distribution']['install']['theme']); | |
90 // Verify that the "Choose profile" step does not appear. | |
91 $this->assertNoText('profile'); | |
92 | |
93 parent::setUpLanguage(); | |
94 } | |
95 | |
96 /** | |
97 * {@inheritdoc} | |
98 */ | |
99 protected function setUpProfile() { | |
100 // This step is skipped, because there is a distribution profile. | |
101 } | |
102 | |
103 /** | |
104 * {@inheritdoc} | |
105 */ | |
106 protected function setUpSettings() { | |
107 // This step should not appear, since settings.php is fully configured | |
108 // already. | |
109 } | |
110 | |
111 /** | |
112 * Confirms that the installation succeeded. | |
113 */ | |
114 public function testInstalled() { | |
115 $this->assertUrl('user/1'); | |
116 $this->assertResponse(200); | |
117 // Confirm that we are logged-in after installation. | |
118 $this->assertText($this->rootUser->getUsername()); | |
119 | |
120 // Confirm that Drupal recognizes this distribution as the current profile. | |
121 $this->assertEqual(\Drupal::installProfile(), 'mydistro'); | |
122 $this->assertNull(Settings::get('install_profile'), 'The install profile has not been written to settings.php.'); | |
123 $this->assertEqual($this->config('core.extension')->get('profile'), 'mydistro', 'The install profile has been written to core.extension configuration.'); | |
124 | |
125 $this->rebuildContainer(); | |
126 $this->pass('Container can be rebuilt even though distribution is not written to settings.php.'); | |
127 $this->assertEqual(\Drupal::installProfile(), 'mydistro'); | |
128 } | |
129 | |
130 } |