123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- <?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 PHPUnit\Framework\TestCase;
- 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 TestCase
- {
- /**
- * @expectedException \InvalidArgumentException
- */
- public function testFileMustBeAnArrayOrUploadedFile()
- {
- new FileBag(['file' => 'foo']);
- }
- public function testShouldConvertsUploadedFiles()
- {
- $tmpFile = $this->createTempFile();
- $file = new UploadedFile($tmpFile, basename($tmpFile), 'text/plain', 100, 0);
- $bag = new FileBag(['file' => [
- '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(['file' => [
- 'name' => '',
- 'type' => '',
- 'tmp_name' => '',
- 'error' => UPLOAD_ERR_NO_FILE,
- 'size' => 0,
- ]]);
- $this->assertNull($bag->get('file'));
- }
- public function testShouldRemoveEmptyUploadedFilesForMultiUpload()
- {
- $bag = new FileBag(['files' => [
- 'name' => [''],
- 'type' => [''],
- 'tmp_name' => [''],
- 'error' => [UPLOAD_ERR_NO_FILE],
- 'size' => [0],
- ]]);
- $this->assertSame([], $bag->get('files'));
- }
- public function testShouldNotRemoveEmptyUploadedFilesForAssociativeArray()
- {
- $bag = new FileBag(['files' => [
- 'name' => ['file1' => ''],
- 'type' => ['file1' => ''],
- 'tmp_name' => ['file1' => ''],
- 'error' => ['file1' => UPLOAD_ERR_NO_FILE],
- 'size' => ['file1' => 0],
- ]]);
- $this->assertSame(['file1' => null], $bag->get('files'));
- }
- public function testShouldConvertUploadedFilesWithPhpBug()
- {
- $tmpFile = $this->createTempFile();
- $file = new UploadedFile($tmpFile, basename($tmpFile), 'text/plain', 100, 0);
- $bag = new FileBag([
- 'child' => [
- 'name' => [
- 'file' => basename($tmpFile),
- ],
- 'type' => [
- 'file' => 'text/plain',
- ],
- 'tmp_name' => [
- 'file' => $tmpFile,
- ],
- 'error' => [
- 'file' => 0,
- ],
- 'size' => [
- '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([
- 'child' => [
- 'name' => [
- 'sub' => ['file' => basename($tmpFile)],
- ],
- 'type' => [
- 'sub' => ['file' => 'text/plain'],
- ],
- 'tmp_name' => [
- 'sub' => ['file' => $tmpFile],
- ],
- 'error' => [
- 'sub' => ['file' => 0],
- ],
- 'size' => [
- 'sub' => ['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(['image' => ['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');
- }
- }
|