Blame | Last modification | View Log | RSS feed
<?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 Symfony\Component\HttpFoundation\File\File;use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser;class FileTest extends \PHPUnit_Framework_TestCase{protected $file;public function testGetMimeTypeUsesMimeTypeGuessers(){$file = new File(__DIR__.'/Fixtures/test.gif');$guesser = $this->createMockGuesser($file->getPathname(), 'image/gif');MimeTypeGuesser::getInstance()->register($guesser);$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');$guesser = $this->createMockGuesser($file->getPathname(), 'image/gif');MimeTypeGuesser::getInstance()->register($guesser);$this->assertEquals('gif', $file->guessExtension());}/*** @requires extension fileinfo*/public function testGuessExtensionWithReset(){$file = new File(__DIR__.'/Fixtures/other-file.example');$guesser = $this->createMockGuesser($file->getPathname(), 'image/gif');MimeTypeGuesser::getInstance()->register($guesser);$this->assertEquals('gif', $file->guessExtension());MimeTypeGuesser::reset();$this->assertNull($file->guessExtension());}public function testConstructWhenFileNotExists(){$this->setExpectedException('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 array(array('original.gif', 'original.gif'),array('..\\..\\original.gif', 'original.gif'),array('../../original.gif', 'original.gif'),array('файлfile.gif', 'файлfile.gif'),array('..\\..\\файлfile.gif', 'файлfile.gif'),array('../../файл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);}protected function createMockGuesser($path, $mimeType){$guesser = $this->getMock('Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface');$guesser->expects($this->once())->method('guess')->with($this->equalTo($path))->will($this->returnValue($mimeType));return $guesser;}}