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 ;
22
24
use Symfony \Component \Serializer \Encoder \JsonEncoder ;
23
25
use Symfony \Component \Serializer \Encoder \XmlEncoder ;
24
26
use Symfony \Component \Serializer \Exception \PartialDenormalizationException ;
@@ -45,10 +47,14 @@ public function testNotTypedArgument()
45
47
]);
46
48
$ request = Request::create ('/ ' , 'POST ' , server: ['HTTP_CONTENT_TYPE ' => 'application/json ' ]);
47
49
50
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
51
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
52
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
53
+
48
54
$ this ->expectException (\LogicException::class);
49
55
$ this ->expectExceptionMessage ('Could not resolve the "$notTyped" controller argument: argument should be typed. ' );
50
56
51
- $ resolver ->resolve ( $ request , $ argument );
57
+ $ resolver ->onKernelControllerArguments ( $ event );
52
58
}
53
59
54
60
public function testWithoutValidatorAndCouldNotDenormalize ()
@@ -63,8 +69,12 @@ public function testWithoutValidatorAndCouldNotDenormalize()
63
69
]);
64
70
$ request = Request::create ('/ ' , 'POST ' , server: ['CONTENT_TYPE ' => 'application/json ' ], content: $ content );
65
71
72
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
73
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
74
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
75
+
66
76
try {
67
- $ resolver ->resolve ( $ request , $ argument );
77
+ $ resolver ->onKernelControllerArguments ( $ event );
68
78
$ this ->fail (sprintf ('Expected "%s" to be thrown. ' , HttpException::class));
69
79
} catch (HttpException $ e ) {
70
80
$ this ->assertInstanceOf (PartialDenormalizationException::class, $ e ->getPrevious ());
@@ -90,8 +100,12 @@ public function testValidationNotPassed()
90
100
]);
91
101
$ request = Request::create ('/ ' , 'POST ' , server: ['CONTENT_TYPE ' => 'application/json ' ], content: $ content );
92
102
103
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
104
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
105
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
106
+
93
107
try {
94
- $ resolver ->resolve ( $ request , $ argument );
108
+ $ resolver ->onKernelControllerArguments ( $ event );
95
109
$ this ->fail (sprintf ('Expected "%s" to be thrown. ' , HttpException::class));
96
110
} catch (HttpException $ e ) {
97
111
$ validationFailedException = $ e ->getPrevious ();
@@ -112,9 +126,12 @@ public function testUnsupportedMedia()
112
126
]);
113
127
$ request = Request::create ('/ ' , 'POST ' , server: ['CONTENT_TYPE ' => 'foo/bar ' ], content: 'foo-bar ' );
114
128
115
- try {
116
- $ resolver ->resolve ($ request , $ argument );
129
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
130
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
131
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
117
132
133
+ try {
134
+ $ resolver ->onKernelControllerArguments ($ event );
118
135
$ this ->fail (sprintf ('Expected "%s" to be thrown. ' , HttpException::class));
119
136
} catch (HttpException $ e ) {
120
137
$ this ->assertSame (415 , $ e ->getStatusCode ());
@@ -139,7 +156,13 @@ public function testRequestContentValidationPassed()
139
156
]);
140
157
$ request = Request::create ('/ ' , 'POST ' , server: ['CONTENT_TYPE ' => 'application/json ' ], content: $ content );
141
158
142
- $ this ->assertEquals ($ payload , $ resolver ->resolve ($ request , $ argument )[0 ]);
159
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
160
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
161
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
162
+
163
+ $ resolver ->onKernelControllerArguments ($ event );
164
+
165
+ $ this ->assertEquals ([$ payload ], $ event ->getArguments ());
143
166
}
144
167
145
168
public function testQueryStringValidationPassed ()
@@ -161,7 +184,13 @@ public function testQueryStringValidationPassed()
161
184
]);
162
185
$ request = Request::create ('/ ' , 'GET ' , $ query );
163
186
164
- $ this ->assertEquals ($ payload , $ resolver ->resolve ($ request , $ argument )[0 ]);
187
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
188
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
189
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
190
+
191
+ $ resolver ->onKernelControllerArguments ($ event );
192
+
193
+ $ this ->assertEquals ([$ payload ], $ event ->getArguments ());
165
194
}
166
195
167
196
public function testRequestInputValidationPassed ()
@@ -183,7 +212,13 @@ public function testRequestInputValidationPassed()
183
212
]);
184
213
$ request = Request::create ('/ ' , 'POST ' , $ input );
185
214
186
- $ this ->assertEquals ($ payload , $ resolver ->resolve ($ request , $ argument )[0 ]);
215
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
216
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
217
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
218
+
219
+ $ resolver ->onKernelControllerArguments ($ event );
220
+
221
+ $ this ->assertEquals ([$ payload ], $ event ->getArguments ());
187
222
}
188
223
189
224
/**
@@ -202,10 +237,13 @@ public function testAcceptFormatPassed(mixed $acceptFormat, string $contentType,
202
237
MapRequestPayload::class => new MapRequestPayload (acceptFormat: $ acceptFormat ),
203
238
]);
204
239
205
- $ resolved = $ resolver ->resolve ($ request , $ argument );
240
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
241
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
242
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
243
+
244
+ $ resolver ->onKernelControllerArguments ($ event );
206
245
207
- $ this ->assertCount (1 , $ resolved );
208
- $ this ->assertEquals (new RequestPayload (50 ), $ resolved [0 ]);
246
+ $ this ->assertEquals ([new RequestPayload (50 )], $ event ->getArguments ());
209
247
}
210
248
211
249
public static function provideMatchedFormatContext (): iterable
@@ -262,9 +300,12 @@ public function testAcceptFormatNotPassed(mixed $acceptFormat, string $contentTy
262
300
MapRequestPayload::class => new MapRequestPayload (acceptFormat: $ acceptFormat ),
263
301
]);
264
302
265
- try {
266
- $ resolver ->resolve ($ request , $ argument );
303
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
304
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
305
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
267
306
307
+ try {
308
+ $ resolver ->onKernelControllerArguments ($ event );
268
309
$ this ->fail (sprintf ('Expected "%s" to be thrown. ' , HttpException::class));
269
310
} catch (HttpException $ e ) {
270
311
$ this ->assertSame (415 , $ e ->getStatusCode ());
@@ -330,10 +371,13 @@ public function testValidationGroupsPassed(string $method, ValueResolver $attrib
330
371
$ attribute ::class => $ attribute ,
331
372
]);
332
373
333
- $ resolved = $ resolver ->resolve ($ request , $ argument );
374
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
375
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
376
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
334
377
335
- $ this ->assertCount (1 , $ resolved );
336
- $ this ->assertEquals ($ payload , $ resolved [0 ]);
378
+ $ resolver ->onKernelControllerArguments ($ event );
379
+
380
+ $ this ->assertEquals ([$ payload ], $ event ->getArguments ());
337
381
}
338
382
339
383
/**
@@ -352,8 +396,12 @@ public function testValidationGroupsNotPassed(string $method, ValueResolver $att
352
396
]);
353
397
$ request = Request::create ('/ ' , $ method , $ input );
354
398
399
+ $ kernel = $ this ->createMock (HttpKernelInterface::class);
400
+ $ arguments = $ resolver ->resolve ($ request , $ argument );
401
+ $ event = new ControllerArgumentsEvent ($ kernel , function () {}, $ arguments , $ request , HttpKernelInterface::MAIN_REQUEST );
402
+
355
403
try {
356
- $ resolver ->resolve ( $ request , $ argument );
404
+ $ resolver ->onKernelControllerArguments ( $ event );
357
405
$ this ->fail (sprintf ('Expected "%s" to be thrown. ' , HttpException::class));
358
406
} catch (HttpException $ e ) {
359
407
$ validationFailedException = $ e ->getPrevious ();
0 commit comments