60
60
/**
61
61
* Unit tests for {@link RequestPartMethodArgumentResolver}.
62
62
* @author Rossen Stoyanchev
63
+ * @author Ilya Lukyanovich
63
64
*/
64
65
public class RequestPartMethodArgumentResolverTests {
65
66
@@ -131,6 +132,15 @@ public void listPerson() {
131
132
assertThat (actual .get (1 ).getName ()).isEqualTo ("James" );
132
133
}
133
134
135
+ @ Test // gh-23060
136
+ public void listPersonNotRequired () {
137
+ MethodParameter param = this .testMethod .annot (requestPart ().notRequired ()).arg (List .class , Person .class );
138
+ MultipartBodyBuilder bodyBuilder = new MultipartBodyBuilder ();
139
+ List <Person > actual = resolveArgument (param , bodyBuilder );
140
+
141
+ assertThat (actual ).isEmpty ();
142
+ }
143
+
134
144
@ Test
135
145
public void monoPerson () {
136
146
MethodParameter param = this .testMethod .annot (requestPart ()).arg (Mono .class , Person .class );
@@ -141,6 +151,15 @@ public void monoPerson() {
141
151
assertThat (actual .block ().getName ()).isEqualTo ("Jones" );
142
152
}
143
153
154
+ @ Test // gh-23060
155
+ public void monoPersonNotRequired () {
156
+ MethodParameter param = this .testMethod .annot (requestPart ().notRequired ()).arg (Mono .class , Person .class );
157
+ MultipartBodyBuilder bodyBuilder = new MultipartBodyBuilder ();
158
+ Mono <Person > actual = resolveArgument (param , bodyBuilder );
159
+
160
+ assertThat (actual .block ()).isNull ();
161
+ }
162
+
144
163
@ Test
145
164
public void fluxPerson () {
146
165
MethodParameter param = this .testMethod .annot (requestPart ()).arg (Flux .class , Person .class );
@@ -154,6 +173,15 @@ public void fluxPerson() {
154
173
assertThat (persons .get (1 ).getName ()).isEqualTo ("James" );
155
174
}
156
175
176
+ @ Test // gh-23060
177
+ public void fluxPersonNotRequired () {
178
+ MethodParameter param = this .testMethod .annot (requestPart ().notRequired ()).arg (Flux .class , Person .class );
179
+ MultipartBodyBuilder bodyBuilder = new MultipartBodyBuilder ();
180
+ Flux <Person > actual = resolveArgument (param , bodyBuilder );
181
+
182
+ assertThat (actual .collectList ().block ()).isEmpty ();
183
+ }
184
+
157
185
@ Test
158
186
public void part () {
159
187
MethodParameter param = this .testMethod .annot (requestPart ()).arg (Part .class );
@@ -177,6 +205,15 @@ public void listPart() {
177
205
assertThat (partToUtf8String (actual .get (1 ))).isEqualTo ("{\" name\" :\" James\" }" );
178
206
}
179
207
208
+ @ Test // gh-23060
209
+ public void listPartNotRequired () {
210
+ MethodParameter param = this .testMethod .annot (requestPart ().notRequired ()).arg (List .class , Part .class );
211
+ MultipartBodyBuilder bodyBuilder = new MultipartBodyBuilder ();
212
+ List <Part > actual = resolveArgument (param , bodyBuilder );
213
+
214
+ assertThat (actual ).isEmpty ();
215
+ }
216
+
180
217
@ Test
181
218
public void monoPart () {
182
219
MethodParameter param = this .testMethod .annot (requestPart ()).arg (Mono .class , Part .class );
@@ -188,6 +225,15 @@ public void monoPart() {
188
225
assertThat (partToUtf8String (part )).isEqualTo ("{\" name\" :\" Jones\" }" );
189
226
}
190
227
228
+ @ Test // gh-23060
229
+ public void monoPartNotRequired () {
230
+ MethodParameter param = this .testMethod .annot (requestPart ().notRequired ()).arg (Mono .class , Part .class );
231
+ MultipartBodyBuilder bodyBuilder = new MultipartBodyBuilder ();
232
+ Mono <Part > actual = resolveArgument (param , bodyBuilder );
233
+
234
+ assertThat (actual .block ()).isNull ();
235
+ }
236
+
191
237
@ Test
192
238
public void fluxPart () {
193
239
MethodParameter param = this .testMethod .annot (requestPart ()).arg (Flux .class , Part .class );
@@ -201,6 +247,15 @@ public void fluxPart() {
201
247
assertThat (partToUtf8String (parts .get (1 ))).isEqualTo ("{\" name\" :\" James\" }" );
202
248
}
203
249
250
+ @ Test // gh-23060
251
+ public void fluxPartNotRequired () {
252
+ MethodParameter param = this .testMethod .annot (requestPart ().notRequired ()).arg (Flux .class , Part .class );
253
+ MultipartBodyBuilder bodyBuilder = new MultipartBodyBuilder ();
254
+ Flux <Part > actual = resolveArgument (param , bodyBuilder );
255
+
256
+ assertThat (actual .collectList ().block ()).isEmpty ();
257
+ }
258
+
204
259
@ Test
205
260
public void personRequired () {
206
261
MethodParameter param = this .testMethod .annot (requestPart ()).arg (Person .class );
@@ -278,7 +333,13 @@ void handle(
278
333
@ RequestPart ("name" ) Flux <Part > partFlux ,
279
334
@ RequestPart ("name" ) List <Part > partList ,
280
335
@ RequestPart (name = "anotherPart" , required = false ) Person anotherPerson ,
336
+ @ RequestPart (name = "name" , required = false ) Mono <Person > anotherPersonMono ,
337
+ @ RequestPart (name = "name" , required = false ) Flux <Person > anotherPersonFlux ,
338
+ @ RequestPart (name = "name" , required = false ) List <Person > anotherPersonList ,
281
339
@ RequestPart (name = "anotherPart" , required = false ) Part anotherPart ,
340
+ @ RequestPart (name = "name" , required = false ) Mono <Part > anotherPartMono ,
341
+ @ RequestPart (name = "name" , required = false ) Flux <Part > anotherPartFlux ,
342
+ @ RequestPart (name = "name" , required = false ) List <Part > anotherPartList ,
282
343
Person notAnnotated ) {}
283
344
284
345
0 commit comments