You are here

public function ConfigImportUploadTest::testImport in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/config/tests/src/Functional/ConfigImportUploadTest.php \Drupal\Tests\config\Functional\ConfigImportUploadTest::testImport()

Tests importing configuration.

File

core/modules/config/tests/src/Functional/ConfigImportUploadTest.php, line 47

Class

ConfigImportUploadTest
Tests importing configuration from an uploaded file.

Namespace

Drupal\Tests\config\Functional

Code

public function testImport() {

  // Verify access to the config upload form.
  $this
    ->drupalGet('admin/config/development/configuration/full/import');
  $this
    ->assertSession()
    ->statusCodeEquals(200);

  // Attempt to upload a non-tar file.
  $text_file = $this
    ->getTestFiles('text')[0];
  $edit = [
    'files[import_tarball]' => \Drupal::service('file_system')
      ->realpath($text_file->uri),
  ];
  $this
    ->drupalGet('admin/config/development/configuration/full/import');
  $this
    ->submitForm($edit, 'Upload');
  $this
    ->assertSession()
    ->pageTextContains('Could not extract the contents of the tar file');

  // Make the sync directory read-only.
  $directory = Settings::get('config_sync_directory');
  \Drupal::service('file_system')
    ->chmod($directory, 0555);
  $this
    ->drupalGet('admin/config/development/configuration/full/import');
  $this
    ->assertSession()
    ->pageTextContains("The directory {$directory} is not writable.");

  // Ensure submit button for \Drupal\config\Form\ConfigImportForm is
  // disabled.
  $submit_is_disabled = $this
    ->cssSelect('form.config-import-form input[type="submit"]:disabled');
  $this
    ->assertCount(1, $submit_is_disabled, 'The submit button is disabled.');
}