@@ -29,7 +29,7 @@ protected function setUp(): void
2929 parent ::setUp ();
3030
3131 // Clear superglobals before each test
32- $ _SERVER = $ _GET = $ _POST = $ _COOKIE = $ _REQUEST = [];
32+ $ _SERVER = $ _GET = $ _POST = $ _COOKIE = $ _REQUEST = $ _FILES = [];
3333
3434 $ this ->superglobals = new Superglobals ();
3535 }
@@ -302,14 +302,87 @@ public function testRequestSetArray(): void
302302 $ this ->assertSame ($ data , $ _REQUEST );
303303 }
304304
305- // Generic array methods
305+ // $_FILES tests
306+ public function testFilesGetArray (): void
307+ {
308+ $ filesData = [
309+ 'upload ' => [
310+ 'name ' => 'document.pdf ' ,
311+ 'type ' => 'application/pdf ' ,
312+ 'tmp_name ' => '/tmp/phpTest ' ,
313+ 'error ' => UPLOAD_ERR_OK ,
314+ 'size ' => 12345 ,
315+ ],
316+ ];
317+
318+ $ this ->superglobals ->setFilesArray ($ filesData );
319+
320+ $ this ->assertSame ($ filesData , $ this ->superglobals ->getFilesArray ());
321+ $ this ->assertSame ($ filesData , $ _FILES );
322+ }
323+
324+ public function testFilesSetArrayWithMultipleFiles (): void
325+ {
326+ $ filesData = [
327+ 'photos ' => [
328+ 'name ' => ['photo1.jpg ' , 'photo2.jpg ' ],
329+ 'type ' => ['image/jpeg ' , 'image/jpeg ' ],
330+ 'tmp_name ' => ['/tmp/phpA ' , '/tmp/phpB ' ],
331+ 'error ' => [UPLOAD_ERR_OK , UPLOAD_ERR_OK ],
332+ 'size ' => [1234 , 5678 ],
333+ ],
334+ ];
335+
336+ $ this ->superglobals ->setFilesArray ($ filesData );
337+
338+ $ this ->assertSame ($ filesData , $ this ->superglobals ->getFilesArray ());
339+ $ this ->assertSame ($ filesData , $ _FILES );
340+ }
341+
342+ public function testFilesSetArrayEmpty (): void
343+ {
344+ $ this ->superglobals ->setFilesArray ([
345+ 'upload ' => [
346+ 'name ' => 'test.txt ' ,
347+ 'type ' => 'text/plain ' ,
348+ 'tmp_name ' => '/tmp/test ' ,
349+ 'error ' => UPLOAD_ERR_OK ,
350+ 'size ' => 100 ,
351+ ],
352+ ]);
353+
354+ // Reset to empty
355+ $ this ->superglobals ->setFilesArray ([]);
356+
357+ $ this ->assertSame ([], $ this ->superglobals ->getFilesArray ());
358+ $ this ->assertSame ([], $ _FILES );
359+ }
360+
361+ // Generic methods
306362 public function testGetGlobalArray (): void
307363 {
308364 $ this ->superglobals ->setGet ('test ' , 'value ' );
309365
310366 $ this ->assertSame (['test ' => 'value ' ], $ this ->superglobals ->getGlobalArray ('get ' ));
311367 }
312368
369+ public function testGetGlobalArrayForFiles (): void
370+ {
371+ $ filesData = [
372+ 'upload ' => [
373+ 'name ' => 'test.pdf ' ,
374+ 'type ' => 'application/pdf ' ,
375+ 'tmp_name ' => '/tmp/phpTest ' ,
376+ 'error ' => UPLOAD_ERR_OK ,
377+ 'size ' => 999 ,
378+ ],
379+ ];
380+
381+ $ this ->superglobals ->setFilesArray ($ filesData );
382+
383+ $ this ->assertSame ($ filesData , $ this ->superglobals ->getGlobalArray ('files ' ));
384+ }
385+
313386 public function testGetGlobalArrayReturnsEmptyForInvalid (): void
314387 {
315388 $ this ->assertSame ([], $ this ->superglobals ->getGlobalArray ('invalid ' ));
@@ -325,6 +398,24 @@ public function testSetGlobalArray(): void
325398 $ this ->assertSame ($ data , $ _POST );
326399 }
327400
401+ public function testSetGlobalArrayForFiles (): void
402+ {
403+ $ filesData = [
404+ 'doc ' => [
405+ 'name ' => 'file.txt ' ,
406+ 'type ' => 'text/plain ' ,
407+ 'tmp_name ' => '/tmp/test ' ,
408+ 'error ' => UPLOAD_ERR_OK ,
409+ 'size ' => 555 ,
410+ ],
411+ ];
412+
413+ $ this ->superglobals ->setGlobalArray ('files ' , $ filesData );
414+
415+ $ this ->assertSame ($ filesData , $ this ->superglobals ->getFilesArray ());
416+ $ this ->assertSame ($ filesData , $ _FILES );
417+ }
418+
328419 public function testSetGlobalArrayWithInvalidNameDoesNothing (): void
329420 {
330421 $ this ->superglobals ->setGlobalArray ('invalid ' , ['key ' => 'value ' ]);
@@ -341,13 +432,23 @@ public function testConstructorWithCustomArrays(): void
341432 $ post = ['post_key ' => 'post_value ' ];
342433 $ cookie = ['cookie_key ' => 'cookie_value ' ];
343434 $ request = ['request_key ' => 'request_value ' ];
344-
345- $ superglobals = new Superglobals ($ server , $ get , $ post , $ cookie , $ request );
435+ $ files = [
436+ 'upload ' => [
437+ 'name ' => 'custom.pdf ' ,
438+ 'type ' => 'application/pdf ' ,
439+ 'tmp_name ' => '/tmp/custom ' ,
440+ 'error ' => UPLOAD_ERR_OK ,
441+ 'size ' => 7777 ,
442+ ],
443+ ];
444+
445+ $ superglobals = new Superglobals ($ server , $ get , $ post , $ cookie , $ request , $ files );
346446
347447 $ this ->assertSame ('server_value ' , $ superglobals ->server ('SERVER_KEY ' ));
348448 $ this ->assertSame ('get_value ' , $ superglobals ->get ('get_key ' ));
349449 $ this ->assertSame ('post_value ' , $ superglobals ->post ('post_key ' ));
350450 $ this ->assertSame ('cookie_value ' , $ superglobals ->cookie ('cookie_key ' ));
351451 $ this ->assertSame ('request_value ' , $ superglobals ->request ('request_key ' ));
452+ $ this ->assertSame ($ files , $ superglobals ->getFilesArray ());
352453 }
353454}
0 commit comments