18
18
use Symfony \Component \HttpKernel \Attribute \ValueResolver ;
19
19
use Symfony \Component \HttpKernel \Controller \ArgumentResolver \RequestPayloadValueResolver ;
20
20
use Symfony \Component \HttpKernel \ControllerMetadata \ArgumentMetadata ;
21
+ use Symfony \Component \HttpKernel \Event \ControllerArgumentsEvent ;
21
22
use Symfony \Component \HttpKernel \Exception \HttpException ;
23
+ use Symfony \Component \HttpKernel \HttpKernelInterface ;
24
+ use Symfony \Component \HttpKernel \KernelInterface ;
22
25
use Symfony \Component \Serializer \Encoder \JsonEncoder ;
23
26
use Symfony \Component \Serializer \Encoder \XmlEncoder ;
24
27
use Symfony \Component \Serializer \Exception \PartialDenormalizationException ;
@@ -63,8 +66,12 @@ public function testWithoutValidatorAndCouldNotDenormalize()
63
66
]);
64
67
$ request = Request::create ('/ ' , 'POST ' , server: ['CONTENT_TYPE ' => 'application/json ' ], content: $ content );
65
68
69
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
70
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
71
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
72
+
66
73
try {
67
- $ resolver ->resolve ( $ request , $ argument );
74
+ $ resolver ->onKernelControllerArguments ( $ event );
68
75
$ this ->fail (sprintf ('Expected "%s" to be thrown. ' , HttpException::class));
69
76
} catch (HttpException $ e ) {
70
77
$ this ->assertInstanceOf (PartialDenormalizationException::class, $ e ->getPrevious ());
@@ -90,8 +97,12 @@ public function testValidationNotPassed()
90
97
]);
91
98
$ request = Request::create ('/ ' , 'POST ' , server: ['CONTENT_TYPE ' => 'application/json ' ], content: $ content );
92
99
100
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
101
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
102
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
103
+
93
104
try {
94
- $ resolver ->resolve ( $ request , $ argument );
105
+ $ resolver ->onKernelControllerArguments ( $ event );
95
106
$ this ->fail (sprintf ('Expected "%s" to be thrown. ' , HttpException::class));
96
107
} catch (HttpException $ e ) {
97
108
$ validationFailedException = $ e ->getPrevious ();
@@ -112,9 +123,12 @@ public function testUnsupportedMedia()
112
123
]);
113
124
$ request = Request::create ('/ ' , 'POST ' , server: ['CONTENT_TYPE ' => 'foo/bar ' ], content: 'foo-bar ' );
114
125
115
- try {
116
- $ resolver ->resolve ($ request , $ argument );
126
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
127
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
128
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
117
129
130
+ try {
131
+ $ resolver ->onKernelControllerArguments ($ event );
118
132
$ this ->fail (sprintf ('Expected "%s" to be thrown. ' , HttpException::class));
119
133
} catch (HttpException $ e ) {
120
134
$ this ->assertSame (415 , $ e ->getStatusCode ());
@@ -139,7 +153,13 @@ public function testRequestContentValidationPassed()
139
153
]);
140
154
$ request = Request::create ('/ ' , 'POST ' , server: ['CONTENT_TYPE ' => 'application/json ' ], content: $ content );
141
155
142
- $ this ->assertEquals ($ payload , $ resolver ->resolve ($ request , $ argument )[0 ]);
156
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
157
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
158
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
159
+
160
+ $ resolver ->onKernelControllerArguments ($ event );
161
+
162
+ $ this ->assertEquals ([$ payload ], $ event ->getArguments ());
143
163
}
144
164
145
165
public function testQueryStringValidationPassed ()
@@ -161,7 +181,13 @@ public function testQueryStringValidationPassed()
161
181
]);
162
182
$ request = Request::create ('/ ' , 'GET ' , $ query );
163
183
164
- $ this ->assertEquals ($ payload , $ resolver ->resolve ($ request , $ argument )[0 ]);
184
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
185
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
186
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
187
+
188
+ $ resolver ->onKernelControllerArguments ($ event );
189
+
190
+ $ this ->assertEquals ([$ payload ], $ event ->getArguments ());
165
191
}
166
192
167
193
public function testRequestInputValidationPassed ()
@@ -183,7 +209,13 @@ public function testRequestInputValidationPassed()
183
209
]);
184
210
$ request = Request::create ('/ ' , 'POST ' , $ input );
185
211
186
- $ this ->assertEquals ($ payload , $ resolver ->resolve ($ request , $ argument )[0 ]);
212
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
213
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
214
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
215
+
216
+ $ resolver ->onKernelControllerArguments ($ event );
217
+
218
+ $ this ->assertEquals ([$ payload ], $ event ->getArguments ());
187
219
}
188
220
189
221
/**
@@ -202,10 +234,13 @@ public function testAcceptFormatPassed(mixed $acceptFormat, string $contentType,
202
234
MapRequestPayload::class => new MapRequestPayload (acceptFormat: $ acceptFormat ),
203
235
]);
204
236
205
- $ resolved = $ resolver ->resolve ($ request , $ argument );
237
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
238
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
239
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
206
240
207
- $ this ->assertCount (1 , $ resolved );
208
- $ this ->assertEquals (new RequestPayload (50 ), $ resolved [0 ]);
241
+ $ resolver ->onKernelControllerArguments ($ event );
242
+
243
+ $ this ->assertEquals ([new RequestPayload (50 )], $ event ->getArguments ());
209
244
}
210
245
211
246
public static function provideMatchedFormatContext (): iterable
@@ -262,9 +297,12 @@ public function testAcceptFormatNotPassed(mixed $acceptFormat, string $contentTy
262
297
MapRequestPayload::class => new MapRequestPayload (acceptFormat: $ acceptFormat ),
263
298
]);
264
299
265
- try {
266
- $ resolver ->resolve ($ request , $ argument );
300
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
301
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
302
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
267
303
304
+ try {
305
+ $ resolver ->onKernelControllerArguments ($ event );
268
306
$ this ->fail (sprintf ('Expected "%s" to be thrown. ' , HttpException::class));
269
307
} catch (HttpException $ e ) {
270
308
$ this ->assertSame (415 , $ e ->getStatusCode ());
@@ -330,10 +368,13 @@ public function testValidationGroupsPassed(string $method, ValueResolver $attrib
330
368
$ attribute ::class => $ attribute ,
331
369
]);
332
370
333
- $ resolved = $ resolver ->resolve ($ request , $ argument );
371
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
372
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
373
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
374
+
375
+ $ resolver ->onKernelControllerArguments ($ event );
334
376
335
- $ this ->assertCount (1 , $ resolved );
336
- $ this ->assertEquals ($ payload , $ resolved [0 ]);
377
+ $ this ->assertEquals ([$ payload ], $ event ->getArguments ());
337
378
}
338
379
339
380
/**
@@ -352,8 +393,12 @@ public function testValidationGroupsNotPassed(string $method, ValueResolver $att
352
393
]);
353
394
$ request = Request::create ('/ ' , $ method , $ input );
354
395
396
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
397
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
398
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
399
+
355
400
try {
356
- $ resolver ->resolve ( $ request , $ argument );
401
+ $ resolver ->onKernelControllerArguments ( $ event );
357
402
$ this ->fail (sprintf ('Expected "%s" to be thrown. ' , HttpException::class));
358
403
} catch (HttpException $ e ) {
359
404
$ validationFailedException = $ e ->getPrevious ();
0 commit comments