From 93efe9056907d467aae1031f58e394c8c10d60f1 Mon Sep 17 00:00:00 2001
From: Joshua Westerheide <dev@jdoubleu.de>
Date: Sat, 11 Nov 2017 17:42:05 +0100
Subject: [PATCH] [TASK] Extend untangleFilesArray function test in
 RequestBuilder

Check for cases where the files array is nested more complex or
keywords (e.g. "error") are used as field names.

Run `curl -F "d0[]=@d12.txt" -F "d0[d1][d2][d3]=@d12.txt"
-F "error=@error_file.txt" localhost:8080` against a custom
php script to generate the testing $_FILES array.

Resolves: #82976
Releases: master, 8.7, 7.6
Change-Id: I51fb9da7c87871b6bb1e8ac4de317973f307dd49
Reviewed-on: https://review.typo3.org/55811
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Stefan Neufeind <typo3.neufeind@speedpartner.de>
Tested-by: Stefan Neufeind <typo3.neufeind@speedpartner.de>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
---
 .../Tests/Unit/Mvc/Web/RequestBuilderTest.php | 26 +++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/typo3/sysext/extbase/Tests/Unit/Mvc/Web/RequestBuilderTest.php b/typo3/sysext/extbase/Tests/Unit/Mvc/Web/RequestBuilderTest.php
index 1c25cc6e2879..298bf3c6a70b 100644
--- a/typo3/sysext/extbase/Tests/Unit/Mvc/Web/RequestBuilderTest.php
+++ b/typo3/sysext/extbase/Tests/Unit/Mvc/Web/RequestBuilderTest.php
@@ -650,6 +650,7 @@ class RequestBuilderTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
             'd0' => [
                 'name' => [
                     'd1' => [
+                        0 => 'd12.txt',
                         'd2' => [
                             'd3' => 'd.txt'
                         ]
@@ -657,6 +658,7 @@ class RequestBuilderTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
                 ],
                 'type' => [
                     'd1' => [
+                        0 => 'text/plain',
                         'd2' => [
                             'd3' => 'text/plain'
                         ]
@@ -664,6 +666,7 @@ class RequestBuilderTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
                 ],
                 'tmp_name' => [
                     'd1' => [
+                        0 => '/private/var/tmp/phpMf9Qx9',
                         'd2' => [
                             'd3' => '/private/var/tmp/phprR3fax'
                         ]
@@ -671,6 +674,7 @@ class RequestBuilderTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
                 ],
                 'error' => [
                     'd1' => [
+                        0 => 0,
                         'd2' => [
                             'd3' => 0
                         ]
@@ -678,6 +682,7 @@ class RequestBuilderTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
                 ],
                 'size' => [
                     'd1' => [
+                        0 => 200,
                         'd2' => [
                             'd3' => 400
                         ]
@@ -725,6 +730,13 @@ class RequestBuilderTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
                         ]
                     ]
                 ]
+            ],
+            'error' => [
+                'name' => 'error_file.txt',
+                'type' => 'text/plain',
+                'tmp_name' => '/private/var/tmp/phpADDu87fE',
+                'error' => 0,
+                'size' => 120
             ]
         ];
         $untangledFiles = [
@@ -755,6 +767,13 @@ class RequestBuilderTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
             ],
             'd0' => [
                 'd1' => [
+                    0 => [
+                        'name' => 'd12.txt',
+                        'type' => 'text/plain',
+                        'tmp_name' => '/private/var/tmp/phpMf9Qx9',
+                        'error' => 0,
+                        'size' => 200
+                    ],
                     'd2' => [
                         'd3' => [
                             'name' => 'd.txt',
@@ -785,6 +804,13 @@ class RequestBuilderTest extends \TYPO3\CMS\Core\Tests\UnitTestCase
                         ]
                     ]
                 ]
+            ]     ,
+            'error' => [
+                'name' => 'error_file.txt',
+                'type' => 'text/plain',
+                'tmp_name' => '/private/var/tmp/phpADDu87fE',
+                'error' => 0,
+                'size' => 120
             ]
         ];
         $requestBuilder = $this->getAccessibleMock(\TYPO3\CMS\Extbase\Mvc\Web\RequestBuilder::class, ['dummy'], [], '', false);
-- 
GitLab