Quellcode durchsuchen

[HttpKernel] Fix and test previous commit

Victor Berchet vor 14 Jahren
Ursprung
Commit
38b3b7474f

+ 8 - 1
src/Symfony/Component/HttpKernel/Client.php

@@ -121,7 +121,14 @@ EOF;
                 $filtered[$key] = $this->filterFiles($value);
             } elseif ($value instanceof UploadedFile) {
                 // Create a test mode UploadedFile
-                $filtered[$key] = new UploadedFile($value->getPath(), $value->getName(), $value->getMimeType(), $value->getSize(), $value->getError(), true);
+                $filtered[$key] = new UploadedFile(
+                    $value->getPathname(),
+                    $value->getClientOriginalName(),
+                    $value->getClientMimeType(),
+                    $value->getClientSize(),
+                    $value->getError(),
+                    true
+                );
             } else {
                 $filtered[$key] = $value;
             }

+ 29 - 0
tests/Symfony/Tests/Component/HttpKernel/ClientTest.php

@@ -16,6 +16,7 @@ use Symfony\Component\HttpKernel\HttpKernel;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\HttpFoundation\Cookie;
+use Symfony\Component\HttpFoundation\File\UploadedFile;
 
 require_once __DIR__.'/TestHttpKernel.php';
 
@@ -76,4 +77,32 @@ class ClientTest extends \PHPUnit_Framework_TestCase
         $domResponse = $m->invoke($client, $response);
         $this->assertEquals('foo=bar; expires=Sun, 15-Feb-2009 20:00:00 GMT; domain=http://example.com; path=/foo; secure; httponly, foo1=bar1; expires=Sun, 15-Feb-2009 20:00:00 GMT; domain=http://example.com; path=/foo; secure; httponly', $domResponse->getHeader('Set-Cookie'));
     }
+
+    public function testUploadedFile()
+    {
+        $source = tempnam(sys_get_temp_dir(), 'source');
+        $target = sys_get_temp_dir().'/sf.moved.file';
+        @unlink($target);
+
+        $kernel = new TestHttpKernel();
+        $client = new Client($kernel);
+
+        $client->request('POST', '/', array(), array(new UploadedFile($source, 'original', 'mime/original', 123, UPLOAD_ERR_OK)));
+
+        $files = $kernel->request->files->all();
+
+        $this->assertEquals(1, count($files));
+
+        $file = $files[0];
+
+        $this->assertEquals('original', $file->getClientOriginalName());
+        $this->assertEquals('mime/original', $file->getClientMimeType());
+        $this->assertEquals('123', $file->getClientSize());
+        $this->assertTrue($file->isValid());
+
+        $file->move(dirname($target), basename($target));
+
+        $this->assertFileExists($target);
+        unlink($target);
+    }
 }

+ 3 - 0
tests/Symfony/Tests/Component/HttpKernel/TestHttpKernel.php

@@ -19,6 +19,8 @@ use Symfony\Component\EventDispatcher\EventDispatcher;
 
 class TestHttpKernel extends HttpKernel implements ControllerResolverInterface
 {
+    public $request;
+
     public function __construct()
     {
         parent::__construct(new EventDispatcher(), $this);
@@ -36,6 +38,7 @@ class TestHttpKernel extends HttpKernel implements ControllerResolverInterface
 
     public function callController(Request $request)
     {
+        $this->request = $request;
         return new Response('Request: '.$request->getRequestUri());
     }
 }