Issue #3031539 by mondrake, amateescu, larowlan, Berdir: FileFieldTestBase tests fail under PHPUnit 7
parent
1546b4b85a
commit
3954b06d3c
|
@ -88,7 +88,7 @@ class FileFieldAnonymousSubmissionTest extends FileFieldTestBase {
|
|||
$this->assertNotEqual($nid, 0, 'The node ID was extracted from the URL.');
|
||||
$node = Node::load($nid);
|
||||
$this->assertNotEqual($node, NULL, 'The node was loaded successfully.');
|
||||
$this->assertFileExists(File::load($node->field_image->target_id), 'The image was uploaded successfully.');
|
||||
$this->assertFileExists(File::load($node->field_image->target_id)->getFileUri(), 'The image was uploaded successfully.');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -162,7 +162,7 @@ class FileFieldAnonymousSubmissionTest extends FileFieldTestBase {
|
|||
$this->assertNotEqual($nid, 0, 'The node ID was extracted from the URL.');
|
||||
$node = Node::load($nid);
|
||||
$this->assertNotEqual($node, NULL, 'The node was loaded successfully.');
|
||||
$this->assertFileExists(File::load($node->field_image->target_id), 'The image was uploaded successfully.');
|
||||
$this->assertFileExists(File::load($node->field_image->target_id)->getFileUri(), 'The image was uploaded successfully.');
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ class FileFieldRevisionTest extends FileFieldTestBase {
|
|||
$node = $node_storage->load($nid);
|
||||
$node_file_r1 = File::load($node->{$field_name}->target_id);
|
||||
$node_vid_r1 = $node->getRevisionId();
|
||||
$this->assertFileExists($node_file_r1, 'New file saved to disk on node creation.');
|
||||
$this->assertFileExists($node_file_r1->getFileUri(), 'New file saved to disk on node creation.');
|
||||
$this->assertFileEntryExists($node_file_r1, 'File entry exists in database on node creation.');
|
||||
$this->assertFileIsPermanent($node_file_r1, 'File is permanent.');
|
||||
|
||||
|
@ -56,7 +56,7 @@ class FileFieldRevisionTest extends FileFieldTestBase {
|
|||
$node = $node_storage->load($nid);
|
||||
$node_file_r2 = File::load($node->{$field_name}->target_id);
|
||||
$node_vid_r2 = $node->getRevisionId();
|
||||
$this->assertFileExists($node_file_r2, 'Replacement file exists on disk after creating new revision.');
|
||||
$this->assertFileExists($node_file_r2->getFileUri(), 'Replacement file exists on disk after creating new revision.');
|
||||
$this->assertFileEntryExists($node_file_r2, 'Replacement file entry exists in database after creating new revision.');
|
||||
$this->assertFileIsPermanent($node_file_r2, 'Replacement file is permanent.');
|
||||
|
||||
|
@ -64,7 +64,7 @@ class FileFieldRevisionTest extends FileFieldTestBase {
|
|||
$node = node_revision_load($node_vid_r1);
|
||||
$current_file = File::load($node->{$field_name}->target_id);
|
||||
$this->assertEqual($node_file_r1->id(), $current_file->id(), 'Original file still in place after replacing file in new revision.');
|
||||
$this->assertFileExists($node_file_r1, 'Original file still in place after replacing file in new revision.');
|
||||
$this->assertFileExists($node_file_r1->getFileUri(), 'Original file still in place after replacing file in new revision.');
|
||||
$this->assertFileEntryExists($node_file_r1, 'Original file entry still in place after replacing file in new revision');
|
||||
$this->assertFileIsPermanent($node_file_r1, 'Original file is still permanent.');
|
||||
|
||||
|
@ -89,7 +89,7 @@ class FileFieldRevisionTest extends FileFieldTestBase {
|
|||
// Delete the second revision and check that the file is kept (since it is
|
||||
// still being used by the third revision).
|
||||
$this->drupalPostForm('node/' . $nid . '/revisions/' . $node_vid_r2 . '/delete', [], t('Delete'));
|
||||
$this->assertFileExists($node_file_r3, 'Second file is still available after deleting second revision, since it is being used by the third revision.');
|
||||
$this->assertFileExists($node_file_r3->getFileUri(), 'Second file is still available after deleting second revision, since it is being used by the third revision.');
|
||||
$this->assertFileEntryExists($node_file_r3, 'Second file entry is still available after deleting second revision, since it is being used by the third revision.');
|
||||
$this->assertFileIsPermanent($node_file_r3, 'Second file entry is still permanent after deleting second revision, since it is being used by the third revision.');
|
||||
|
||||
|
@ -102,7 +102,7 @@ class FileFieldRevisionTest extends FileFieldTestBase {
|
|||
|
||||
// Delete the third revision and check that the file is not deleted yet.
|
||||
$this->drupalPostForm('node/' . $nid . '/revisions/' . $node_vid_r3 . '/delete', [], t('Delete'));
|
||||
$this->assertFileExists($node_file_r3, 'Second file is still available after deleting third revision, since it is being used by the user.');
|
||||
$this->assertFileExists($node_file_r3->getFileUri(), 'Second file is still available after deleting third revision, since it is being used by the user.');
|
||||
$this->assertFileEntryExists($node_file_r3, 'Second file entry is still available after deleting third revision, since it is being used by the user.');
|
||||
$this->assertFileIsPermanent($node_file_r3, 'Second file entry is still permanent after deleting third revision, since it is being used by the user.');
|
||||
|
||||
|
@ -129,7 +129,7 @@ class FileFieldRevisionTest extends FileFieldTestBase {
|
|||
->execute();
|
||||
\Drupal::service('cron')->run();
|
||||
|
||||
$this->assertFileNotExists($node_file_r3, 'Second file is now deleted after deleting third revision, since it is no longer being used by any other nodes.');
|
||||
$this->assertFileNotExists($node_file_r3->getFileUri(), 'Second file is now deleted after deleting third revision, since it is no longer being used by any other nodes.');
|
||||
$this->assertFileEntryNotExists($node_file_r3, 'Second file entry is now deleted after deleting third revision, since it is no longer being used by any other nodes.');
|
||||
|
||||
// Delete the entire node and check that the original file is deleted.
|
||||
|
@ -145,7 +145,7 @@ class FileFieldRevisionTest extends FileFieldTestBase {
|
|||
->condition('fid', $node_file_r1->id())
|
||||
->execute();
|
||||
\Drupal::service('cron')->run();
|
||||
$this->assertFileNotExists($node_file_r1, 'Original file is deleted after deleting the entire node with two revisions remaining.');
|
||||
$this->assertFileNotExists($node_file_r1->getFileUri(), 'Original file is deleted after deleting the entire node with two revisions remaining.');
|
||||
$this->assertFileEntryNotExists($node_file_r1, 'Original file entry is deleted after deleting the entire node with two revisions remaining.');
|
||||
}
|
||||
|
||||
|
|
|
@ -209,11 +209,16 @@ abstract class FileFieldTestBase extends BrowserTestBase {
|
|||
* Either the file entity or the file URI.
|
||||
* @param string $message
|
||||
* (optional) A message to display with the assertion.
|
||||
*
|
||||
* @see https://www.drupal.org/node/3057326
|
||||
*/
|
||||
public static function assertFileExists($file, $message = NULL) {
|
||||
$message = isset($message) ? $message : format_string('File %file exists on the disk.', ['%file' => $file->getFileUri()]);
|
||||
$filename = $file instanceof FileInterface ? $file->getFileUri() : $file;
|
||||
parent::assertFileExists($filename, $message);
|
||||
if ($file instanceof FileInterface) {
|
||||
@trigger_error('Passing a File entity as $file argument to FileFieldTestBase::assertFileExists is deprecated in drupal:8.8.0. It will be removed from drupal:9.0.0. Instead, pass the File entity URI via File::getFileUri(). See https://www.drupal.org/node/3057326', E_USER_DEPRECATED);
|
||||
$file = $file->getFileUri();
|
||||
}
|
||||
$message = isset($message) ? $message : format_string('File %file exists on the disk.', ['%file' => $file]);
|
||||
parent::assertFileExists($file, $message);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -229,18 +234,23 @@ abstract class FileFieldTestBase extends BrowserTestBase {
|
|||
/**
|
||||
* Asserts that a file does not exist on disk.
|
||||
*
|
||||
* Overrides PHPUnit\Framework\Assert::assertFileExists() to also work with
|
||||
* file entities.
|
||||
* Overrides PHPUnit\Framework\Assert::assertFileNotExists() to also work
|
||||
* with file entities.
|
||||
*
|
||||
* @param \Drupal\File\FileInterface|string $file
|
||||
* Either the file entity or the file URI.
|
||||
* @param string $message
|
||||
* (optional) A message to display with the assertion.
|
||||
*
|
||||
* @see https://www.drupal.org/node/3057326
|
||||
*/
|
||||
public static function assertFileNotExists($file, $message = NULL) {
|
||||
$message = isset($message) ? $message : format_string('File %file exists on the disk.', ['%file' => $file->getFileUri()]);
|
||||
$filename = $file instanceof FileInterface ? $file->getFileUri() : $file;
|
||||
parent::assertFileNotExists($filename, $message);
|
||||
if ($file instanceof FileInterface) {
|
||||
@trigger_error('Passing a File entity as $file argument to FileFieldTestBase::assertFileNotExists is deprecated in drupal:8.8.0. It will be removed from drupal:9.0.0. Instead, pass the File entity URI via File::getFileUri(). See https://www.drupal.org/node/3057326', E_USER_DEPRECATED);
|
||||
$file = $file->getFileUri();
|
||||
}
|
||||
$message = isset($message) ? $message : format_string('File %file exists on the disk.', ['%file' => $file]);
|
||||
parent::assertFileNotExists($file, $message);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -40,7 +40,7 @@ class FileFieldValidateTest extends FileFieldTestBase {
|
|||
$node = $node_storage->load($nid);
|
||||
|
||||
$node_file = File::load($node->{$field_name}->target_id);
|
||||
$this->assertFileExists($node_file, 'File exists after uploading to the required field.');
|
||||
$this->assertFileExists($node_file->getFileUri(), 'File exists after uploading to the required field.');
|
||||
$this->assertFileEntryExists($node_file, 'File entry exists after uploading to the required field.');
|
||||
|
||||
// Try again with a multiple value field.
|
||||
|
@ -58,7 +58,7 @@ class FileFieldValidateTest extends FileFieldTestBase {
|
|||
$node_storage->resetCache([$nid]);
|
||||
$node = $node_storage->load($nid);
|
||||
$node_file = File::load($node->{$field_name}->target_id);
|
||||
$this->assertFileExists($node_file, 'File exists after uploading to the required multiple value field.');
|
||||
$this->assertFileExists($node_file->getFileUri(), 'File exists after uploading to the required multiple value field.');
|
||||
$this->assertFileEntryExists($node_file, 'File entry exists after uploading to the required multiple value field.');
|
||||
}
|
||||
|
||||
|
@ -92,7 +92,7 @@ class FileFieldValidateTest extends FileFieldTestBase {
|
|||
$node_storage->resetCache([$nid]);
|
||||
$node = $node_storage->load($nid);
|
||||
$node_file = File::load($node->{$field_name}->target_id);
|
||||
$this->assertFileExists($node_file, format_string('File exists after uploading a file (%filesize) under the max limit (%maxsize).', ['%filesize' => format_size($small_file->getSize()), '%maxsize' => $max_filesize]));
|
||||
$this->assertFileExists($node_file->getFileUri(), format_string('File exists after uploading a file (%filesize) under the max limit (%maxsize).', ['%filesize' => format_size($small_file->getSize()), '%maxsize' => $max_filesize]));
|
||||
$this->assertFileEntryExists($node_file, format_string('File entry exists after uploading a file (%filesize) under the max limit (%maxsize).', ['%filesize' => format_size($small_file->getSize()), '%maxsize' => $max_filesize]));
|
||||
|
||||
// Check that uploading the large file fails (1M limit).
|
||||
|
@ -109,7 +109,7 @@ class FileFieldValidateTest extends FileFieldTestBase {
|
|||
$node_storage->resetCache([$nid]);
|
||||
$node = $node_storage->load($nid);
|
||||
$node_file = File::load($node->{$field_name}->target_id);
|
||||
$this->assertFileExists($node_file, format_string('File exists after uploading a file (%filesize) with no max limit.', ['%filesize' => format_size($large_file->getSize())]));
|
||||
$this->assertFileExists($node_file->getFileUri(), format_string('File exists after uploading a file (%filesize) with no max limit.', ['%filesize' => format_size($large_file->getSize())]));
|
||||
$this->assertFileEntryExists($node_file, format_string('File entry exists after uploading a file (%filesize) with no max limit.', ['%filesize' => format_size($large_file->getSize())]));
|
||||
}
|
||||
|
||||
|
@ -133,7 +133,7 @@ class FileFieldValidateTest extends FileFieldTestBase {
|
|||
$node_storage->resetCache([$nid]);
|
||||
$node = $node_storage->load($nid);
|
||||
$node_file = File::load($node->{$field_name}->target_id);
|
||||
$this->assertFileExists($node_file, 'File exists after uploading a file with no extension checking.');
|
||||
$this->assertFileExists($node_file->getFileUri(), 'File exists after uploading a file with no extension checking.');
|
||||
$this->assertFileEntryExists($node_file, 'File entry exists after uploading a file with no extension checking.');
|
||||
|
||||
// Enable extension checking for text files.
|
||||
|
@ -152,7 +152,7 @@ class FileFieldValidateTest extends FileFieldTestBase {
|
|||
$node_storage->resetCache([$nid]);
|
||||
$node = $node_storage->load($nid);
|
||||
$node_file = File::load($node->{$field_name}->target_id);
|
||||
$this->assertFileExists($node_file, 'File exists after uploading a file with extension checking.');
|
||||
$this->assertFileExists($node_file->getFileUri(), 'File exists after uploading a file with extension checking.');
|
||||
$this->assertFileEntryExists($node_file, 'File entry exists after uploading a file with extension checking.');
|
||||
}
|
||||
|
||||
|
@ -175,7 +175,7 @@ class FileFieldValidateTest extends FileFieldTestBase {
|
|||
$node_storage->resetCache([$nid]);
|
||||
$node = $node_storage->load($nid);
|
||||
$node_file = File::load($node->{$field_name}->target_id);
|
||||
$this->assertFileExists($node_file, 'File exists after uploading a file with no extension checking.');
|
||||
$this->assertFileExists($node_file->getFileUri(), 'File exists after uploading a file with no extension checking.');
|
||||
$this->assertFileEntryExists($node_file, 'File entry exists after uploading a file with no extension checking.');
|
||||
|
||||
// Enable extension checking for text files.
|
||||
|
@ -187,4 +187,33 @@ class FileFieldValidateTest extends FileFieldTestBase {
|
|||
$this->assertText('Article ' . $node->getTitle() . ' has been updated.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests deprecation of the assertFileExists and assertFileNotExists methods.
|
||||
*
|
||||
* @group legacy
|
||||
*
|
||||
* @expectedDeprecation Passing a File entity as $file argument to FileFieldTestBase::assertFileExists is deprecated in drupal:8.8.0. It will be removed from drupal:9.0.0. Instead, pass the File entity URI via File::getFileUri(). See https://www.drupal.org/node/3057326
|
||||
* @expectedDeprecation Passing a File entity as $file argument to FileFieldTestBase::assertFileNotExists is deprecated in drupal:8.8.0. It will be removed from drupal:9.0.0. Instead, pass the File entity URI via File::getFileUri(). See https://www.drupal.org/node/3057326
|
||||
*/
|
||||
public function testAssertFileExistsDeprecation() {
|
||||
$node_storage = $this->container->get('entity.manager')->getStorage('node');
|
||||
$type_name = 'article';
|
||||
$field_name = 'file_test';
|
||||
$this->createFileField($field_name, 'node', $type_name);
|
||||
|
||||
$test_file = $this->getTestFile('image');
|
||||
|
||||
// Disable extension checking.
|
||||
$this->updateFileField($field_name, $type_name, ['file_extensions' => '']);
|
||||
|
||||
// Check that the file can be uploaded with no extension checking.
|
||||
$nid = $this->uploadNodeFile($test_file, $field_name, $type_name);
|
||||
$node_storage->resetCache([$nid]);
|
||||
$node = $node_storage->load($nid);
|
||||
$node_file = File::load($node->{$field_name}->target_id);
|
||||
$this->assertFileExists($node_file, 'File exists after uploading a file with no extension checking.');
|
||||
unlink($node_file->getFileUri());
|
||||
$this->assertFileNotExists($node_file, 'File does not exists after having been deleted.');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ class FileFieldWidgetTest extends FileFieldTestBase {
|
|||
$nid = $this->uploadNodeFile($test_file, $field_name, $type_name);
|
||||
$node = $node_storage->loadUnchanged($nid);
|
||||
$node_file = File::load($node->{$field_name}->target_id);
|
||||
$this->assertFileExists($node_file, 'New file saved to disk on node creation.');
|
||||
$this->assertFileExists($node_file->getFileUri(), 'New file saved to disk on node creation.');
|
||||
|
||||
// Ensure the file can be downloaded.
|
||||
$this->drupalGet($node_file->createFileUrl());
|
||||
|
@ -257,7 +257,7 @@ class FileFieldWidgetTest extends FileFieldTestBase {
|
|||
$nid = $this->uploadNodeFile($test_file, $field_name, $type_name);
|
||||
$node = $node_storage->loadUnchanged($nid);
|
||||
$node_file = File::load($node->{$field_name}->target_id);
|
||||
$this->assertFileExists($node_file, 'New file saved to disk on node creation.');
|
||||
$this->assertFileExists($node_file->getFileUri(), 'New file saved to disk on node creation.');
|
||||
|
||||
// Ensure the private file is available to the user who uploaded it.
|
||||
$this->drupalGet($node_file->createFileUrl());
|
||||
|
@ -324,7 +324,7 @@ class FileFieldWidgetTest extends FileFieldTestBase {
|
|||
|
||||
$comment = Comment::load($cid);
|
||||
$comment_file = $comment->{'field_' . $name}->entity;
|
||||
$this->assertFileExists($comment_file, 'New file saved to disk on node creation.');
|
||||
$this->assertFileExists($comment_file->getFileUri(), 'New file saved to disk on node creation.');
|
||||
// Test authenticated file download.
|
||||
$url = $comment_file->createFileUrl();
|
||||
$this->assertNotEqual($url, NULL, 'Confirmed that the URL is valid');
|
||||
|
@ -501,7 +501,7 @@ class FileFieldWidgetTest extends FileFieldTestBase {
|
|||
|
||||
/** @var \Drupal\file\FileInterface $node_file */
|
||||
$node_file = File::load($node->{$field_name}->target_id);
|
||||
$this->assertFileExists($node_file, 'A file was saved to disk on node creation');
|
||||
$this->assertFileExists($node_file->getFileUri(), 'A file was saved to disk on node creation');
|
||||
$this->assertEqual($attacker_user->id(), $node_file->getOwnerId(), 'New file belongs to the attacker.');
|
||||
|
||||
// Ensure the file can be downloaded.
|
||||
|
@ -519,7 +519,7 @@ class FileFieldWidgetTest extends FileFieldTestBase {
|
|||
|
||||
// The victim's temporary file should not be removed by the attacker's
|
||||
// POST request.
|
||||
$this->assertFileExists($victim_tmp_file);
|
||||
$this->assertFileExists($victim_tmp_file->getFileUri());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue