public function MaximumFileSizeExceededUploadTest::testUploadFileExceedingMaximumFileSize in Drupal 8
Same name and namespace in other branches
- 9 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\FunctionalJavascriptCode
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');
}