|
|
@@ -18,6 +18,7 @@ use Cake\Core\Configure;
|
|
|
use Cake\Http\ServerRequestFactory;
|
|
|
use Cake\Http\Session;
|
|
|
use Cake\TestSuite\TestCase;
|
|
|
+use Zend\Diactoros\UploadedFile;
|
|
|
|
|
|
/**
|
|
|
* Test case for the server factory.
|
|
|
@@ -280,4 +281,100 @@ class ServerRequestFactoryTest extends TestCase
|
|
|
$this->assertEquals('/index.php', $res->getAttribute('base'));
|
|
|
$this->assertEquals('/posts/add', $res->getUri()->getPath());
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Tests the default file upload merging behavior.
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function testFromGlobalsWithFilesAsObjectsDefault()
|
|
|
+ {
|
|
|
+ $this->assertNull(Configure::read('ServerRequest.mergeFilesAsObjects'));
|
|
|
+
|
|
|
+ $files = [
|
|
|
+ 'file' => [
|
|
|
+ 'name' => 'file.txt',
|
|
|
+ 'type' => 'text/plain',
|
|
|
+ 'tmp_name' => __FILE__,
|
|
|
+ 'error' => 0,
|
|
|
+ 'size' => 1234,
|
|
|
+ ],
|
|
|
+ ];
|
|
|
+ $request = ServerRequestFactory::fromGlobals(null, null, null, null, $files);
|
|
|
+
|
|
|
+ $expected = [
|
|
|
+ 'file' => [
|
|
|
+ 'tmp_name' => __FILE__,
|
|
|
+ 'error' => 0,
|
|
|
+ 'name' => 'file.txt',
|
|
|
+ 'type' => 'text/plain',
|
|
|
+ 'size' => 1234
|
|
|
+ ],
|
|
|
+ ];
|
|
|
+ $this->assertEquals($expected, $request->getData());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Tests the "as arrays" file upload merging behavior.
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function testFromGlobalsWithFilesAsObjectsDisabled()
|
|
|
+ {
|
|
|
+ Configure::write('ServerRequest.mergeFilesAsObjects', false);
|
|
|
+
|
|
|
+ $files = [
|
|
|
+ 'file' => [
|
|
|
+ 'name' => 'file.txt',
|
|
|
+ 'type' => 'text/plain',
|
|
|
+ 'tmp_name' => __FILE__,
|
|
|
+ 'error' => 0,
|
|
|
+ 'size' => 1234,
|
|
|
+ ],
|
|
|
+ ];
|
|
|
+ $request = ServerRequestFactory::fromGlobals(null, null, null, null, $files);
|
|
|
+
|
|
|
+ $expected = [
|
|
|
+ 'file' => [
|
|
|
+ 'tmp_name' => __FILE__,
|
|
|
+ 'error' => 0,
|
|
|
+ 'name' => 'file.txt',
|
|
|
+ 'type' => 'text/plain',
|
|
|
+ 'size' => 1234
|
|
|
+ ],
|
|
|
+ ];
|
|
|
+ $this->assertEquals($expected, $request->getData());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Tests the "as objects" file upload merging behavior.
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function testFromGlobalsWithFilesAsObjectsEnabled()
|
|
|
+ {
|
|
|
+ Configure::write('ServerRequest.mergeFilesAsObjects', true);
|
|
|
+
|
|
|
+ $files = [
|
|
|
+ 'file' => [
|
|
|
+ 'name' => 'file.txt',
|
|
|
+ 'type' => 'text/plain',
|
|
|
+ 'tmp_name' => __FILE__,
|
|
|
+ 'error' => 0,
|
|
|
+ 'size' => 1234,
|
|
|
+ ],
|
|
|
+ ];
|
|
|
+ $request = ServerRequestFactory::fromGlobals(null, null, null, null, $files);
|
|
|
+
|
|
|
+ $expected = [
|
|
|
+ 'file' => new UploadedFile(
|
|
|
+ __FILE__,
|
|
|
+ 1234,
|
|
|
+ 0,
|
|
|
+ 'file.txt',
|
|
|
+ 'text/plain'
|
|
|
+ ),
|
|
|
+ ];
|
|
|
+ $this->assertEquals($expected, $request->getData());
|
|
|
+ }
|
|
|
}
|