@@ -307,6 +307,66 @@ static function () {},
307
307
$ resolver ->onKernelControllerArguments ($ event );
308
308
}
309
309
310
+ /**
311
+ * @dataProvider provideContext
312
+ */
313
+ public function testShouldAllowEmptyWhenNullable (RequestPayloadValueResolver $ resolver , Request $ request )
314
+ {
315
+ $ attribute = new MapUploadedFile ();
316
+ $ argument = new ArgumentMetadata (
317
+ 'qux ' ,
318
+ UploadedFile::class,
319
+ false ,
320
+ false ,
321
+ null ,
322
+ true ,
323
+ [$ attribute ::class => $ attribute ]
324
+ );
325
+ /** @var HttpKernelInterface&MockObject $httpKernel */
326
+ $ httpKernel = $ this ->createMock (HttpKernelInterface::class);
327
+ $ event = new ControllerArgumentsEvent (
328
+ $ httpKernel ,
329
+ static function () {},
330
+ $ resolver ->resolve ($ request , $ argument ),
331
+ $ request ,
332
+ HttpKernelInterface::MAIN_REQUEST
333
+ );
334
+ $ resolver ->onKernelControllerArguments ($ event );
335
+ $ data = $ event ->getArguments ()[0 ];
336
+
337
+ $ this ->assertNull ($ data );
338
+ }
339
+
340
+ /**
341
+ * @dataProvider provideContext
342
+ */
343
+ public function testShouldAllowEmptyWhenHasDefaultValue (RequestPayloadValueResolver $ resolver , Request $ request )
344
+ {
345
+ $ attribute = new MapUploadedFile ();
346
+ $ argument = new ArgumentMetadata (
347
+ 'qux ' ,
348
+ UploadedFile::class,
349
+ false ,
350
+ true ,
351
+ null ,
352
+ false ,
353
+ [$ attribute ::class => $ attribute ]
354
+ );
355
+ /** @var HttpKernelInterface&MockObject $httpKernel */
356
+ $ httpKernel = $ this ->createMock (HttpKernelInterface::class);
357
+ $ event = new ControllerArgumentsEvent (
358
+ $ httpKernel ,
359
+ static function () {},
360
+ $ resolver ->resolve ($ request , $ argument ),
361
+ $ request ,
362
+ HttpKernelInterface::MAIN_REQUEST
363
+ );
364
+ $ resolver ->onKernelControllerArguments ($ event );
365
+ $ data = $ event ->getArguments ()[0 ];
366
+
367
+ $ this ->assertNull ($ data );
368
+ }
369
+
310
370
public static function provideContext (): iterable
311
371
{
312
372
$ resolver = new RequestPayloadValueResolver (
0 commit comments