MigrateSystemConfigurationTest.php

Same filename in this branch
  1. 11.x core/modules/system/tests/src/Kernel/Migrate/d6/MigrateSystemConfigurationTest.php
Same filename in other branches
  1. 9 core/modules/system/tests/src/Kernel/Migrate/d6/MigrateSystemConfigurationTest.php
  2. 9 core/modules/system/tests/src/Kernel/Migrate/d7/MigrateSystemConfigurationTest.php
  3. 8.9.x core/modules/system/tests/src/Kernel/Migrate/d6/MigrateSystemConfigurationTest.php
  4. 8.9.x core/modules/system/tests/src/Kernel/Migrate/d7/MigrateSystemConfigurationTest.php
  5. 10 core/modules/system/tests/src/Kernel/Migrate/d6/MigrateSystemConfigurationTest.php
  6. 10 core/modules/system/tests/src/Kernel/Migrate/d7/MigrateSystemConfigurationTest.php

Namespace

Drupal\Tests\system\Kernel\Migrate\d7

File

core/modules/system/tests/src/Kernel/Migrate/d7/MigrateSystemConfigurationTest.php

View source
<?php

declare (strict_types=1);
namespace Drupal\Tests\system\Kernel\Migrate\d7;

use Drupal\Tests\migrate_drupal\Kernel\d7\MigrateDrupal7TestBase;

/**
 * Migrates various configuration objects owned by the System module.
 *
 * @group migrate_drupal_7
 */
class MigrateSystemConfigurationTest extends MigrateDrupal7TestBase {
    
    /**
     * {@inheritdoc}
     */
    protected static $modules = [
        'file',
        'system',
    ];
    protected $expectedConfig = [
        'system.authorize' => [],
        'system.cron' => [
            'threshold' => [
                // Auto-run is not handled by the migration.
                // 'autorun' => 0,
'requirements_warning' => 172800,
                'requirements_error' => 1209600,
            ],
            'logging' => TRUE,
        ],
        'system.date' => [
            'first_day' => 1,
            'country' => [
                'default' => 'US',
            ],
            'timezone' => [
                'default' => 'America/Chicago',
                'user' => [
                    'configurable' => TRUE,
                    // DRUPAL_USER_TIMEZONE_SELECT (D7 API)
'default' => 2,
                    'warn' => TRUE,
                ],
            ],
        ],
        'system.file' => [
            'allow_insecure_uploads' => TRUE,
            // default_scheme is not handled by the migration.
'default_scheme' => 'public',
            // temporary_maximum_age is not handled by the migration.
'temporary_maximum_age' => 21600,
        ],
        'system.image.gd' => [
            'jpeg_quality' => 80,
        ],
        'system.image' => [
            'toolkit' => 'gd',
        ],
        'system.logging' => [
            'error_level' => 'some',
        ],
        'system.mail' => [
            'interface' => [
                'default' => 'php_mail',
            ],
            'mailer_dsn' => [
                'scheme' => 'sendmail',
                'host' => 'default',
                'user' => NULL,
                'password' => NULL,
                'port' => NULL,
                'options' => [],
            ],
        ],
        'system.maintenance' => [
            // Langcode is not handled by the migration.
'langcode' => 'en',
            'message' => 'This is a custom maintenance mode message.',
        ],
        'system.performance' => [
            'cache' => [
                'page' => [
                    'max_age' => 300,
                ],
            ],
            'css' => [
                'preprocess' => TRUE,
                // Gzip is not handled by the migration.
'gzip' => TRUE,
            ],
            // fast_404 is not handled by the migration.
'fast_404' => [
                'enabled' => TRUE,
                'paths' => '/\\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i',
                'exclude_paths' => '/\\/(?:styles|imagecache)\\//',
                'html' => '<!DOCTYPE html><html><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>The requested URL "@path" was not found on this server.</p></body></html>',
            ],
            'js' => [
                'preprocess' => FALSE,
                // Gzip is not handled by the migration.
'gzip' => TRUE,
            ],
        ],
        'system.rss' => [
            'items' => [
                'view_mode' => 'fulltext',
            ],
        ],
        'system.site' => [
            // Neither langcode nor default_langcode are not handled by the migration.
'langcode' => 'en',
            // UUID is not handled by the migration.
'uuid' => '',
            'name' => 'The Site Name',
            'mail' => 'joseph@flattandsons.com',
            'slogan' => 'The Slogan',
            'page' => [
                '403' => '',
                '404' => '/node',
                'front' => '/node',
            ],
            'admin_compact_mode' => TRUE,
            'weight_select_max' => 100,
            'default_langcode' => 'en',
            'mail_notification' => NULL,
        ],
    ];
    
    /**
     * {@inheritdoc}
     */
    protected function setUp() : void {
        parent::setUp();
        // The system_maintenance migration gets both the Drupal 6 and Drupal 7
        // site maintenance message. Add a row with the Drupal 6 version of the
        // maintenance message to confirm that the Drupal 7 variable is selected in
        // the migration.
        // See https://www.drupal.org/project/drupal/issues/3096676
        $this->sourceDatabase
            ->insert('variable')
            ->fields([
            'name' => 'site_offline_message',
            'value' => 's:16:"Drupal 6 message";',
        ])
            ->execute();
        // Delete 'site_403' in order to test the migration of a non-existing error
        // page link.
        $this->sourceDatabase
            ->delete('variable')
            ->condition('name', 'site_403')
            ->execute();
        // Delete 'drupal_weight_select_max ' in order to test the migration when it
        // is not set.
        $this->sourceDatabase
            ->delete('variable')
            ->condition('name', 'drupal_weight_select_max')
            ->execute();
        $this->config('system.site')
            ->set('weight_select_max', 5)
            ->save();
        $migrations = [
            'd7_system_authorize',
            'd7_system_cron',
            'd7_system_date',
            'd7_system_file',
            'system_image_gd',
            'system_image',
            'system_logging',
            'd7_system_mail',
            'system_maintenance',
            'd7_system_performance',
            'system_rss',
            'system_site',
        ];
        $this->executeMigrations($migrations);
    }
    
    /**
     * Tests that all expected configuration gets migrated.
     */
    public function testConfigurationMigration() : void {
        foreach ($this->expectedConfig as $config_id => $values) {
            if ($config_id == 'system.mail') {
                $actual = \Drupal::config($config_id)->getRawData();
            }
            else {
                $actual = \Drupal::config($config_id)->get();
            }
            unset($actual['_core']);
            $this->assertSame($values, $actual, $config_id . ' matches expected values.');
        }
        // The d7_system_authorize migration should not create the system.authorize
        // config.
        $this->assertTrue($this->config('system.authorize')
            ->isNew());
    }

}

Classes

Title Deprecated Summary
MigrateSystemConfigurationTest Migrates various configuration objects owned by the System module.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.