@@ -76,6 +76,8 @@ void setup() throws IOException {
76
76
.noContent (HttpMethod .GET , "/health/optional" )
77
77
.noContent (HttpMethod .GET , "/health/optional?param=value" )
78
78
.noContent (HttpMethod .GET , "/health/optional?param" )
79
+ .noContent (HttpMethod .POST , "/health/withNonRequiredRequestBody" )
80
+ .noContent (HttpMethod .POST , "/health/withRequiredRequestBody" )
79
81
.noContent (HttpMethod .GET , "/health/1?deep=true" )
80
82
.noContent (HttpMethod .GET , "/health/1?deep=true&dryRun=true" )
81
83
.noContent (HttpMethod .GET , "/health/name?deep=true&dryRun=true" )
@@ -166,6 +168,32 @@ void optionalNullable() {
166
168
mockClient .verifyOne (HttpMethod .GET , "/health/optional" );
167
169
}
168
170
171
+ @ Test
172
+ void requiredRequestBodyIsNull () {
173
+ Throwable exception =
174
+ assertThrows (
175
+ IllegalArgumentException .class , () -> resource .checkWithRequiredRequestBody (null ));
176
+ assertThat (exception .getMessage ()).contains ("Body parameter 0 was null" );
177
+ }
178
+
179
+ @ Test
180
+ void nonRequiredRequestBodyIsNull () {
181
+ resource .checkWithNonRequiredRequestBody (null );
182
+
183
+ Request request = mockClient .verifyOne (HttpMethod .POST , "/health/withNonRequiredRequestBody" );
184
+ assertThat (request .requestTemplate ().body ()).asString ().isEqualTo ("null" );
185
+ }
186
+
187
+ @ Test
188
+ void nonRequiredRequestBodyIsObject () {
189
+ UserObject object = new UserObject ();
190
+ object .setName ("hello" );
191
+ resource .checkWithNonRequiredRequestBody (object );
192
+
193
+ Request request = mockClient .verifyOne (HttpMethod .POST , "/health/withNonRequiredRequestBody" );
194
+ assertThat (request .requestTemplate ().body ()).asString ().contains ("\" name\" : \" hello\" " );
195
+ }
196
+
169
197
@ Test
170
198
void requestPart () {
171
199
resource .checkRequestPart ("1" , "hello" , "6" );
@@ -302,6 +330,12 @@ void checkWithName(
302
330
@ RequestMapping (value = "/optional" , method = RequestMethod .GET )
303
331
void checkWithOptional (@ RequestParam (name = "param" ) Optional <String > param );
304
332
333
+ @ RequestMapping (value = "/withNonRequiredRequestBody" , method = RequestMethod .POST )
334
+ void checkWithNonRequiredRequestBody (@ RequestBody (required = false ) UserObject obj );
335
+
336
+ @ RequestMapping (value = "/withRequiredRequestBody" , method = RequestMethod .POST )
337
+ void checkWithRequiredRequestBody (@ RequestBody () UserObject obj );
338
+
305
339
@ RequestMapping (value = "/part/{id}" , method = RequestMethod .POST )
306
340
void checkRequestPart (
307
341
@ PathVariable (name = "id" ) String campaignId ,
@@ -319,6 +353,19 @@ void checkRequestHeader(
319
353
void checkRequestHeaderPojo (@ RequestHeader HeaderMapUserObject object );
320
354
}
321
355
356
+ class UserObject {
357
+ @ Param ("name1" )
358
+ private String name ;
359
+
360
+ public String getName () {
361
+ return name ;
362
+ }
363
+
364
+ public void setName (String name ) {
365
+ this .name = name ;
366
+ }
367
+ }
368
+
322
369
class HeaderMapUserObject {
323
370
@ Param ("name1" )
324
371
private String name ;
0 commit comments