@@ -307,6 +307,66 @@ static function () {},
307307 $ resolver ->onKernelControllerArguments ($ event );
308308 }
309309
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+ 'default-value ' ,
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 ->assertSame ('default-value ' , $ data );
368+ }
369+
310370 public static function provideContext (): iterable
311371 {
312372 $ resolver = new RequestPayloadValueResolver (
0 commit comments