forked from loafle/openapi-generator-original
Fix parameter uniqueness for form- and body-params (#7577)
If a form-parameter had the same name as another (header-, query-, path-, or cookie-)parameter, a conflict could be caused (for example in the typescript generator). This fix executes the same uniqueness- check and renaming for form- and body-parameters as it is done for all other parameters. @see issue #7575 Co-authored-by: Alexander Rashed <alexander.rashed@ntsretail.com>
This commit is contained in:
parent
aca6927ce0
commit
54d6257865
@ -3856,10 +3856,20 @@ public class DefaultCodegen implements CodegenConfig {
|
||||
// add form/body parameter (if any) to the end of all parameter list
|
||||
if (!prependFormOrBodyParameters) {
|
||||
for (CodegenParameter cp : formParams) {
|
||||
if (ensureUniqueParams) {
|
||||
if (!isParameterNameUnique(cp, allParams)) {
|
||||
cp.paramName = generateNextName(cp.paramName);
|
||||
}
|
||||
}
|
||||
allParams.add(cp.copy());
|
||||
}
|
||||
|
||||
for (CodegenParameter cp : bodyParams) {
|
||||
if (ensureUniqueParams) {
|
||||
if (!isParameterNameUnique(cp, allParams)) {
|
||||
cp.paramName = generateNextName(cp.paramName);
|
||||
}
|
||||
}
|
||||
allParams.add(cp.copy());
|
||||
}
|
||||
}
|
||||
|
@ -409,6 +409,20 @@ public class DefaultCodegenTest {
|
||||
Assert.assertTrue(queryParamsNames.contains("myparam2"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUniquenessRenameOfFormParameters() throws Exception {
|
||||
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/form-duplicated-parameter.yaml");
|
||||
DefaultCodegen codegen = new DefaultCodegen();
|
||||
codegen.setOpenAPI(openAPI);
|
||||
Operation operation = openAPI.getPaths().get("/form-param-poc/{id}").getPut();
|
||||
CodegenOperation co = codegen.fromOperation("/form-param-poc/{id}", "put", operation, null);
|
||||
Assert.assertEquals(co.path, "/form-param-poc/{id}");
|
||||
Assert.assertEquals(co.allParams.size(), 2);
|
||||
List<String> allParamsNames = co.allParams.stream().map(p -> p.paramName).collect(Collectors.toList());
|
||||
Assert.assertTrue(allParamsNames.contains("id"));
|
||||
Assert.assertTrue(allParamsNames.contains("id2"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetSchemaTypeWithComposedSchemaWithOneOf() {
|
||||
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/composed-oneof.yaml");
|
||||
|
@ -0,0 +1,50 @@
|
||||
openapi: 3.0.1
|
||||
info:
|
||||
title: FormData Test Api Documentation
|
||||
description: Minimal OpenAPI spec file to showcase duplicated params for formData.
|
||||
version: 0.0.1
|
||||
servers:
|
||||
- url: /backend/rest
|
||||
tags:
|
||||
- name: form-param-poc
|
||||
description: File storage resource for Fiscalization France standard
|
||||
paths:
|
||||
'/form-param-poc/{id}':
|
||||
put:
|
||||
tags:
|
||||
- form-param-poc
|
||||
summary: fullUpdate
|
||||
operationId: form-param-poc_update
|
||||
parameters:
|
||||
- name: id
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: integer
|
||||
format: int64
|
||||
requestBody:
|
||||
content:
|
||||
multipart/form-data:
|
||||
schema:
|
||||
$ref: '#/components/schemas/FormParameters'
|
||||
responses:
|
||||
'200':
|
||||
description: OK.
|
||||
security:
|
||||
- oAuthConfig: []
|
||||
components:
|
||||
schemas:
|
||||
FormParameters:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
format: int64
|
||||
readOnly: true
|
||||
securitySchemes:
|
||||
oAuthConfig:
|
||||
type: oauth2
|
||||
flows:
|
||||
implicit:
|
||||
authorizationUrl: ../backend/login/openid
|
||||
scopes: {}
|
Loading…
x
Reference in New Issue
Block a user