@@ -186,6 +186,77 @@ public void testRequestBodyRefConsumesList() {
186186 Assert .assertEquals (codegenOp .consumes .get (1 ).get ("mediaType" ), "application/xml" );
187187 }
188188
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+
189260 private static class P_DefaultCodegenConfig extends DefaultCodegenConfig {
190261 @ Override
191262 public String getArgumentsLocation () {
0 commit comments