sonarrradarrplexorganizrnginxdashboardstartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboardmuximuxlandingpage
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
4.4 KiB
143 lines
4.4 KiB
<?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\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('Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException');
|
|
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('Symfony\Component\HttpFoundation\File\File', $movedFile);
|
|
|
|
$this->assertFileExists($targetPath);
|
|
$this->assertFileNotExists($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->assertFileNotExists($path);
|
|
$this->assertEquals(realpath($targetPath), $movedFile->getRealPath());
|
|
|
|
@unlink($targetPath);
|
|
}
|
|
|
|
public 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('Symfony\Component\HttpFoundation\File\File', $movedFile);
|
|
|
|
$this->assertFileExists($targetPath);
|
|
$this->assertFileNotExists($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->assertFileNotExists($sourcePath);
|
|
$this->assertEquals(realpath($targetPath), $movedFile->getRealPath());
|
|
|
|
@unlink($sourcePath);
|
|
@unlink($targetPath);
|
|
@rmdir($targetDir);
|
|
}
|
|
}
|
|
|