@@ -186,6 +186,77 @@ public void testRequestBodyRefConsumesList() {
186
186
Assert .assertEquals (codegenOp .consumes .get (1 ).get ("mediaType" ), "application/xml" );
187
187
}
188
188
189
+ /**
190
+ * Tests when a 'application/x-www-form-urlencoded' request body is marked as required that all form
191
+ * params are also marked as required.
192
+ *
193
+ * @see #testOptionalFormParams()
194
+ */
195
+ @ Test
196
+ public void testRequiredFormParams () {
197
+ // Setup
198
+ final P_DefaultCodegenConfig codegen = new P_DefaultCodegenConfig ();
199
+
200
+ final OpenAPI openAPI = new OpenAPIV3Parser ().read ("src/test/resources/3_0_0/requiredFormParamsTest.yaml" );
201
+ final String path = "/test_required" ;
202
+
203
+ final Operation op = openAPI .getPaths ().get (path ).getPost ();
204
+ Assert .assertNotNull (op );
205
+
206
+ // Test
207
+ final CodegenOperation codegenOp = codegen .fromOperation (path , "post" , op , openAPI .getComponents ().getSchemas (), openAPI );
208
+
209
+ // Verification
210
+ List <CodegenParameter > formParams = codegenOp .getFormParams ();
211
+ Assert .assertNotNull (formParams );
212
+ Assert .assertEquals (formParams .size (), 2 );
213
+
214
+ for (CodegenParameter formParam : formParams ) {
215
+ Assert .assertTrue (formParam .getRequired (), "Form param '" + formParam .getParamName () + "' is not required." );
216
+ }
217
+
218
+ // Required params must be updated as well.
219
+ List <CodegenParameter > requiredParams = codegenOp .getRequiredParams ();
220
+ Assert .assertNotNull (requiredParams );
221
+ Assert .assertEquals (requiredParams .size (), 2 );
222
+ requiredParams .get (0 ).getParamName ().equals ("id" );
223
+ requiredParams .get (1 ).getParamName ().equals ("name" );
224
+ }
225
+
226
+ /**
227
+ * Tests when a 'application/x-www-form-urlencoded' request body is marked as optional that all form
228
+ * params are also marked as optional.
229
+ *
230
+ * @see #testRequiredFormParams()
231
+ */
232
+ @ Test
233
+ public void testOptionalFormParams () {
234
+ // Setup
235
+ final P_DefaultCodegenConfig codegen = new P_DefaultCodegenConfig ();
236
+
237
+ final OpenAPI openAPI = new OpenAPIV3Parser ().read ("src/test/resources/3_0_0/requiredFormParamsTest.yaml" );
238
+ final String path = "/test_optional" ;
239
+
240
+ final Operation op = openAPI .getPaths ().get (path ).getPost ();
241
+ Assert .assertNotNull (op );
242
+
243
+ // Test
244
+ final CodegenOperation codegenOp = codegen .fromOperation (path , "post" , op , openAPI .getComponents ().getSchemas (), openAPI );
245
+
246
+ // Verification
247
+ List <CodegenParameter > formParams = codegenOp .getFormParams ();
248
+ Assert .assertNotNull (formParams );
249
+ Assert .assertEquals (formParams .size (), 2 );
250
+
251
+ for (CodegenParameter formParam : formParams ) {
252
+ Assert .assertFalse (formParam .getRequired (), "Form param '" + formParam .getParamName () + "' is required." );
253
+ }
254
+
255
+ // Required params must be updated as well.
256
+ List <CodegenParameter > requiredParams = codegenOp .getRequiredParams ();
257
+ Assert .assertTrue (requiredParams == null || requiredParams .size () == 0 );
258
+ }
259
+
189
260
private static class P_DefaultCodegenConfig extends DefaultCodegenConfig {
190
261
@ Override
191
262
public String getArgumentsLocation () {
0 commit comments