149 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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;
 | |
| 
 | |
| use Symfony\Component\HttpFoundation\File\UploadedFile;
 | |
| use Symfony\Component\HttpFoundation\FileBag;
 | |
| 
 | |
| /**
 | |
|  * FileBagTest.
 | |
|  *
 | |
|  * @author Fabien Potencier <fabien@symfony.com>
 | |
|  * @author Bulat Shakirzyanov <mallluhuct@gmail.com>
 | |
|  */
 | |
| class FileBagTest extends \PHPUnit_Framework_TestCase
 | |
| {
 | |
|     /**
 | |
|      * @expectedException \InvalidArgumentException
 | |
|      */
 | |
|     public function testFileMustBeAnArrayOrUploadedFile()
 | |
|     {
 | |
|         new FileBag(array('file' => 'foo'));
 | |
|     }
 | |
| 
 | |
|     public function testShouldConvertsUploadedFiles()
 | |
|     {
 | |
|         $tmpFile = $this->createTempFile();
 | |
|         $file = new UploadedFile($tmpFile, basename($tmpFile), 'text/plain', 100, 0);
 | |
| 
 | |
|         $bag = new FileBag(array('file' => array(
 | |
|             'name' => basename($tmpFile),
 | |
|             'type' => 'text/plain',
 | |
|             'tmp_name' => $tmpFile,
 | |
|             'error' => 0,
 | |
|             'size' => 100,
 | |
|         )));
 | |
| 
 | |
|         $this->assertEquals($file, $bag->get('file'));
 | |
|     }
 | |
| 
 | |
|     public function testShouldSetEmptyUploadedFilesToNull()
 | |
|     {
 | |
|         $bag = new FileBag(array('file' => array(
 | |
|             'name' => '',
 | |
|             'type' => '',
 | |
|             'tmp_name' => '',
 | |
|             'error' => UPLOAD_ERR_NO_FILE,
 | |
|             'size' => 0,
 | |
|         )));
 | |
| 
 | |
|         $this->assertNull($bag->get('file'));
 | |
|     }
 | |
| 
 | |
|     public function testShouldConvertUploadedFilesWithPhpBug()
 | |
|     {
 | |
|         $tmpFile = $this->createTempFile();
 | |
|         $file = new UploadedFile($tmpFile, basename($tmpFile), 'text/plain', 100, 0);
 | |
| 
 | |
|         $bag = new FileBag(array(
 | |
|             'child' => array(
 | |
|                 'name' => array(
 | |
|                     'file' => basename($tmpFile),
 | |
|                 ),
 | |
|                 'type' => array(
 | |
|                     'file' => 'text/plain',
 | |
|                 ),
 | |
|                 'tmp_name' => array(
 | |
|                     'file' => $tmpFile,
 | |
|                 ),
 | |
|                 'error' => array(
 | |
|                     'file' => 0,
 | |
|                 ),
 | |
|                 'size' => array(
 | |
|                     'file' => 100,
 | |
|                 ),
 | |
|             ),
 | |
|         ));
 | |
| 
 | |
|         $files = $bag->all();
 | |
|         $this->assertEquals($file, $files['child']['file']);
 | |
|     }
 | |
| 
 | |
|     public function testShouldConvertNestedUploadedFilesWithPhpBug()
 | |
|     {
 | |
|         $tmpFile = $this->createTempFile();
 | |
|         $file = new UploadedFile($tmpFile, basename($tmpFile), 'text/plain', 100, 0);
 | |
| 
 | |
|         $bag = new FileBag(array(
 | |
|             'child' => array(
 | |
|                 'name' => array(
 | |
|                     'sub' => array('file' => basename($tmpFile)),
 | |
|                 ),
 | |
|                 'type' => array(
 | |
|                     'sub' => array('file' => 'text/plain'),
 | |
|                 ),
 | |
|                 'tmp_name' => array(
 | |
|                     'sub' => array('file' => $tmpFile),
 | |
|                 ),
 | |
|                 'error' => array(
 | |
|                     'sub' => array('file' => 0),
 | |
|                 ),
 | |
|                 'size' => array(
 | |
|                     'sub' => array('file' => 100),
 | |
|                 ),
 | |
|             ),
 | |
|         ));
 | |
| 
 | |
|         $files = $bag->all();
 | |
|         $this->assertEquals($file, $files['child']['sub']['file']);
 | |
|     }
 | |
| 
 | |
|     public function testShouldNotConvertNestedUploadedFiles()
 | |
|     {
 | |
|         $tmpFile = $this->createTempFile();
 | |
|         $file = new UploadedFile($tmpFile, basename($tmpFile), 'text/plain', 100, 0);
 | |
|         $bag = new FileBag(array('image' => array('file' => $file)));
 | |
| 
 | |
|         $files = $bag->all();
 | |
|         $this->assertEquals($file, $files['image']['file']);
 | |
|     }
 | |
| 
 | |
|     protected function createTempFile()
 | |
|     {
 | |
|         return tempnam(sys_get_temp_dir().'/form_test', 'FormTest');
 | |
|     }
 | |
| 
 | |
|     protected function setUp()
 | |
|     {
 | |
|         mkdir(sys_get_temp_dir().'/form_test', 0777, true);
 | |
|     }
 | |
| 
 | |
|     protected function tearDown()
 | |
|     {
 | |
|         foreach (glob(sys_get_temp_dir().'/form_test/*') as $file) {
 | |
|             unlink($file);
 | |
|         }
 | |
| 
 | |
|         rmdir(sys_get_temp_dir().'/form_test');
 | |
|     }
 | |
| }
 | 
