You are here

public function ConfigImporterTest::testInstallProfileMisMatch in Drupal 9

Same name and namespace in other branches
  1. 8 core/tests/Drupal/KernelTests/Core/Config/ConfigImporterTest.php \Drupal\KernelTests\Core\Config\ConfigImporterTest::testInstallProfileMisMatch()

Tests install profile validation during configuration import.

See also

\Drupal\Core\EventSubscriber\ConfigImportSubscriber

File

core/tests/Drupal/KernelTests/Core/Config/ConfigImporterTest.php, line 717

Class

ConfigImporterTest
Tests importing configuration from files into active configuration.

Namespace

Drupal\KernelTests\Core\Config

Code

public function testInstallProfileMisMatch() {
  $sync = $this->container
    ->get('config.storage.sync');
  $extensions = $sync
    ->read('core.extension');

  // Change the install profile.
  $extensions['profile'] = 'this_will_not_work';
  $sync
    ->write('core.extension', $extensions);
  try {
    $this->configImporter
      ->reset()
      ->import();
    $this
      ->fail('ConfigImporterException not thrown; an invalid import was not stopped due to missing dependencies.');
  } catch (ConfigImporterException $e) {
    $expected = static::FAIL_MESSAGE . PHP_EOL . 'Cannot change the install profile from <em class="placeholder"></em> to <em class="placeholder">this_will_not_work</em> once Drupal is installed.';
    $this
      ->assertEquals($expected, $e
      ->getMessage(), 'There were errors validating the config synchronization.');
    $error_log = $this->configImporter
      ->getErrors();

    // Install profiles can not be changed. Note that KernelTestBase currently
    // does not use an install profile. This situation should be impossible
    // to get in but site's can removed the install profile setting from
    // settings.php so the test is valid.
    $this
      ->assertEquals([
      'Cannot change the install profile from <em class="placeholder"></em> to <em class="placeholder">this_will_not_work</em> once Drupal is installed.',
    ], $error_log);
  }
}