Security update for Core, with self-updated composer
[yaffs-website] / web / core / tests / Drupal / KernelTests / Core / Config / ConfigOverridesPriorityTest.php
1 <?php
2
3 namespace Drupal\KernelTests\Core\Config;
4
5 use Drupal\Core\Language\Language;
6 use Drupal\KernelTests\KernelTestBase;
7
8 /**
9  * Tests that language, module and settings.php are applied in the correct
10  * order.
11  *
12  * @group config
13  */
14 class ConfigOverridesPriorityTest extends KernelTestBase {
15
16   /**
17    * Modules to install.
18    *
19    * @var array
20    */
21   public static $modules = ['system', 'config', 'config_override_test', 'language'];
22
23   public function testOverridePriorities() {
24     $GLOBALS['config_test_run_module_overrides'] = FALSE;
25
26     $non_overridden_mail = 'site@example.com';
27     $language_overridden_mail = 'french@example.com';
28
29     $language_overridden_name = 'French site name';
30     $module_overridden_name = 'ZOMG overridden site name';
31     $non_overridden_name = 'ZOMG this name is on disk mkay';
32
33     $module_overridden_slogan = 'Yay for overrides!';
34     $non_overridden_slogan = 'Yay for defaults!';
35
36     /** @var \Drupal\Core\Config\ConfigFactoryInterface $config_factory */
37     $config_factory = $this->container->get('config.factory');
38     $config_factory
39       ->getEditable('system.site')
40       ->set('name', $non_overridden_name)
41       ->set('slogan', $non_overridden_slogan)
42       ->set('mail', $non_overridden_mail)
43       ->set('weight_select_max', 50)
44       ->save();
45
46     // Ensure that no overrides are applying.
47     $this->assertEqual($non_overridden_name, $config_factory->get('system.site')->get('name'));
48     $this->assertEqual($non_overridden_slogan, $config_factory->get('system.site')->get('slogan'));
49     $this->assertEqual($non_overridden_mail, $config_factory->get('system.site')->get('mail'));
50     $this->assertEqual(50, $config_factory->get('system.site')->get('weight_select_max'));
51
52     // Override using language.
53     $language = new Language([
54       'name' => 'French',
55       'id' => 'fr',
56     ]);
57     \Drupal::languageManager()->setConfigOverrideLanguage($language);
58     \Drupal::languageManager()
59       ->getLanguageConfigOverride($language->getId(), 'system.site')
60       ->set('name', $language_overridden_name)
61       ->set('mail', $language_overridden_mail)
62       ->save();
63
64     $this->assertEqual($language_overridden_name, $config_factory->get('system.site')->get('name'));
65     $this->assertEqual($non_overridden_slogan, $config_factory->get('system.site')->get('slogan'));
66     $this->assertEqual($language_overridden_mail, $config_factory->get('system.site')->get('mail'));
67     $this->assertEqual(50, $config_factory->get('system.site')->get('weight_select_max'));
68
69     // Enable module overrides. Do not override system.site:mail to prove that
70     // the language override still applies.
71     $GLOBALS['config_test_run_module_overrides'] = TRUE;
72     $config_factory->reset('system.site');
73     $this->assertEqual($module_overridden_name, $config_factory->get('system.site')->get('name'));
74     $this->assertEqual($module_overridden_slogan, $config_factory->get('system.site')->get('slogan'));
75     $this->assertEqual($language_overridden_mail, $config_factory->get('system.site')->get('mail'));
76     $this->assertEqual(50, $config_factory->get('system.site')->get('weight_select_max'));
77
78     // Configure a global override to simulate overriding using settings.php. Do
79     // not override system.site:mail or system.site:slogan to prove that the
80     // language and module overrides still apply.
81     $GLOBALS['config']['system.site']['name'] = 'Site name global conf override';
82     $config_factory->reset('system.site');
83     $this->assertEqual('Site name global conf override', $config_factory->get('system.site')->get('name'));
84     $this->assertEqual($module_overridden_slogan, $config_factory->get('system.site')->get('slogan'));
85     $this->assertEqual($language_overridden_mail, $config_factory->get('system.site')->get('mail'));
86     $this->assertEqual(50, $config_factory->get('system.site')->get('weight_select_max'));
87
88     $this->assertEqual($non_overridden_name, $config_factory->get('system.site')->getOriginal('name', FALSE));
89     $this->assertEqual($non_overridden_slogan, $config_factory->get('system.site')->getOriginal('slogan', FALSE));
90     $this->assertEqual($non_overridden_mail, $config_factory->get('system.site')->getOriginal('mail', FALSE));
91     $this->assertEqual(50, $config_factory->get('system.site')->getOriginal('weight_select_max', FALSE));
92
93     unset($GLOBALS['config_test_run_module_overrides']);
94   }
95
96 }