function MaximumFileSizeExceededUploadTest::testUploadFileExceedingMaximumFileSize

Same name in other branches
  1. 9 core/modules/file/tests/src/FunctionalJavascript/MaximumFileSizeExceededUploadTest.php \Drupal\Tests\file\FunctionalJavascript\MaximumFileSizeExceededUploadTest::testUploadFileExceedingMaximumFileSize()
  2. 10 core/modules/file/tests/src/FunctionalJavascript/MaximumFileSizeExceededUploadTest.php \Drupal\Tests\file\FunctionalJavascript\MaximumFileSizeExceededUploadTest::testUploadFileExceedingMaximumFileSize()
  3. 11.x core/modules/file/tests/src/FunctionalJavascript/MaximumFileSizeExceededUploadTest.php \Drupal\Tests\file\FunctionalJavascript\MaximumFileSizeExceededUploadTest::testUploadFileExceedingMaximumFileSize()

Tests that uploading files exceeding maximum size are handled correctly.

File

core/modules/file/tests/src/FunctionalJavascript/MaximumFileSizeExceededUploadTest.php, line 98

Class

MaximumFileSizeExceededUploadTest
Tests uploading a file that exceeds the maximum file size.

Namespace

Drupal\Tests\file\FunctionalJavascript

Code

public function testUploadFileExceedingMaximumFileSize() {
    $session = $this->getSession();
    // Create a test file that exceeds the maximum POST size with 1 kilobyte.
    $post_max_size = Bytes::toInt(ini_get('post_max_size'));
    $invalid_file = $this->generateFile('exceeding_post_max_size', ceil(($post_max_size + 1024) / 1024), 1024);
    // Go to the node creation form and try to upload the test file.
    $this->drupalGet('node/add/article');
    $page = $session->getPage();
    $page->attachFileToField("files[field_file_0]", $this->fileSystem
        ->realpath($invalid_file));
    // An error message should appear informing the user that the file exceeded
    // the maximum file size.
    $this->assertSession()
        ->waitForElement('css', '.messages--error');
    // The error message includes the actual file size limit which depends on
    // the current environment, so we check for a part of the message.
    $this->assertSession()
        ->pageTextContains('An unrecoverable error occurred. The uploaded file likely exceeded the maximum file size');
    // Now upload a valid file and check that the error message disappears.
    $valid_file = $this->generateFile('not_exceeding_post_max_size', 8, 8);
    $page->attachFileToField("files[field_file_0]", $this->fileSystem
        ->realpath($valid_file));
    $this->assertSession()
        ->waitForElement('named', [
        'id_or_name',
        'field_file_0_remove_button',
    ]);
    $this->assertSession()
        ->elementNotExists('css', '.messages--error');
}

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