123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Component\HttpFoundation\Tests\File;
- use PHPUnit\Framework\TestCase;
- use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
- use Symfony\Component\HttpFoundation\File\File;
- /**
- * @requires extension fileinfo
- */
- class FileTest extends TestCase
- {
- protected $file;
- public function testGetMimeTypeUsesMimeTypeGuessers()
- {
- $file = new File(__DIR__.'/Fixtures/test.gif');
- $this->assertEquals('image/gif', $file->getMimeType());
- }
- public function testGuessExtensionWithoutGuesser()
- {
- $file = new File(__DIR__.'/Fixtures/directory/.empty');
- $this->assertNull($file->guessExtension());
- }
- public function testGuessExtensionIsBasedOnMimeType()
- {
- $file = new File(__DIR__.'/Fixtures/test');
- $this->assertEquals('gif', $file->guessExtension());
- }
- public function testConstructWhenFileNotExists()
- {
- $this->expectException(FileNotFoundException::class);
- new File(__DIR__.'/Fixtures/not_here');
- }
- public function testMove()
- {
- $path = __DIR__.'/Fixtures/test.copy.gif';
- $targetDir = __DIR__.'/Fixtures/directory';
- $targetPath = $targetDir.'/test.copy.gif';
- @unlink($path);
- @unlink($targetPath);
- copy(__DIR__.'/Fixtures/test.gif', $path);
- $file = new File($path);
- $movedFile = $file->move($targetDir);
- $this->assertInstanceOf(File::class, $movedFile);
- $this->assertFileExists($targetPath);
- $this->assertFileDoesNotExist($path);
- $this->assertEquals(realpath($targetPath), $movedFile->getRealPath());
- @unlink($targetPath);
- }
- public function testMoveWithNewName()
- {
- $path = __DIR__.'/Fixtures/test.copy.gif';
- $targetDir = __DIR__.'/Fixtures/directory';
- $targetPath = $targetDir.'/test.newname.gif';
- @unlink($path);
- @unlink($targetPath);
- copy(__DIR__.'/Fixtures/test.gif', $path);
- $file = new File($path);
- $movedFile = $file->move($targetDir, 'test.newname.gif');
- $this->assertFileExists($targetPath);
- $this->assertFileDoesNotExist($path);
- $this->assertEquals(realpath($targetPath), $movedFile->getRealPath());
- @unlink($targetPath);
- }
- public function testGetContent()
- {
- $file = new File(__FILE__);
- $this->assertStringEqualsFile(__FILE__, $file->getContent());
- }
- public static function getFilenameFixtures()
- {
- return [
- ['original.gif', 'original.gif'],
- ['..\\..\\original.gif', 'original.gif'],
- ['../../original.gif', 'original.gif'],
- ['файлfile.gif', 'файлfile.gif'],
- ['..\\..\\файлfile.gif', 'файлfile.gif'],
- ['../../файлfile.gif', 'файлfile.gif'],
- ];
- }
- /**
- * @dataProvider getFilenameFixtures
- */
- public function testMoveWithNonLatinName($filename, $sanitizedFilename)
- {
- $path = __DIR__.'/Fixtures/'.$sanitizedFilename;
- $targetDir = __DIR__.'/Fixtures/directory/';
- $targetPath = $targetDir.$sanitizedFilename;
- @unlink($path);
- @unlink($targetPath);
- copy(__DIR__.'/Fixtures/test.gif', $path);
- $file = new File($path);
- $movedFile = $file->move($targetDir, $filename);
- $this->assertInstanceOf(File::class, $movedFile);
- $this->assertFileExists($targetPath);
- $this->assertFileDoesNotExist($path);
- $this->assertEquals(realpath($targetPath), $movedFile->getRealPath());
- @unlink($targetPath);
- }
- public function testMoveToAnUnexistentDirectory()
- {
- $sourcePath = __DIR__.'/Fixtures/test.copy.gif';
- $targetDir = __DIR__.'/Fixtures/directory/sub';
- $targetPath = $targetDir.'/test.copy.gif';
- @unlink($sourcePath);
- @unlink($targetPath);
- @rmdir($targetDir);
- copy(__DIR__.'/Fixtures/test.gif', $sourcePath);
- $file = new File($sourcePath);
- $movedFile = $file->move($targetDir);
- $this->assertFileExists($targetPath);
- $this->assertFileDoesNotExist($sourcePath);
- $this->assertEquals(realpath($targetPath), $movedFile->getRealPath());
- @unlink($sourcePath);
- @unlink($targetPath);
- @rmdir($targetDir);
- }
- }
|