Skip to content

Commit

Permalink
Fix issue with Ruby client where strings from example properties are …
Browse files Browse the repository at this point in the history
…not wrapped with quotes (#987)
  • Loading branch information
ndbroadbent authored and wing328 committed Nov 4, 2018
1 parent eb5a8cc commit 63b1c23
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
package org.openapitools.codegen.languages;

import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.oas.models.parameters.Parameter;
import io.swagger.v3.oas.models.examples.Example;
import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*;
import org.slf4j.Logger;
Expand Down Expand Up @@ -536,6 +538,34 @@ public void setParameterExampleValue(CodegenParameter p) {
p.example = example;
}

/**
* Return the example value of the parameter. Overrides the
* setParameterExampleValue(CodegenParameter, Parameter) method in
* DefaultCodegen to always call setParameterExampleValue(CodegenParameter)
* in this class, which adds single quotes around strings from the
* x-example property.
*
* @param codegenParameter Codegen parameter
* @param parameter Parameter
*/
public void setParameterExampleValue(CodegenParameter codegenParameter, Parameter parameter) {
if (parameter.getExample() != null) {
codegenParameter.example = parameter.getExample().toString();
} else if (parameter.getExamples() != null && !parameter.getExamples().isEmpty()) {
Example example = parameter.getExamples().values().iterator().next();
if (example.getValue() != null) {
codegenParameter.example = example.getValue().toString();
}
} else {
Schema schema = parameter.getSchema();
if (schema != null && schema.getExample() != null) {
codegenParameter.example = schema.getExample().toString();
}
}

setParameterExampleValue(codegenParameter);
}

public void setGemName(String gemName) {
this.gemName = gemName;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -271,4 +271,33 @@ public void nullableParameterOAS2Test() {
// TODO comment out the following until https://github.com/swagger-api/swagger-parser/issues/820 is solved
//Assert.assertTrue(status.isNullable);
}

@Test(description = "test example string imported from x-example parameterr (OAS2)")
public void exampleStringFromExampleParameterOAS2Test() {
final OpenAPI openAPI = new OpenAPIParser().readLocation("src/test/resources/2_0/petstore-nullable.yaml", null, new ParseOptions()).getOpenAPI();
final RubyClientCodegen codegen = new RubyClientCodegen();
codegen.setModuleName("OnlinePetstore");
final String path = "/store/order/{orderId}";

final Operation p = openAPI.getPaths().get(path).getDelete();
final CodegenOperation op = codegen.fromOperation(path, "delete", p, openAPI.getComponents().getSchemas());

CodegenParameter pp = op.pathParams.get(0);
Assert.assertEquals(pp.example, "'orderid123'");
}

@Test(description = "test example string imported from example in schema (OAS3)")
public void exampleStringFromXExampleParameterOAS3Test() {
final OpenAPI openAPI = new OpenAPIParser()
.readLocation("src/test/resources/3_0/petstore_oas3_test.yaml", null, new ParseOptions()).getOpenAPI();
final RubyClientCodegen codegen = new RubyClientCodegen();
codegen.setModuleName("OnlinePetstore");
final String path = "/store/order/{orderId}";

final Operation p = openAPI.getPaths().get(path).getDelete();
final CodegenOperation op = codegen.fromOperation(path, "delete", p, openAPI.getComponents().getSchemas());

CodegenParameter pp = op.pathParams.get(0);
Assert.assertEquals(pp.example, "'orderid123'");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,7 @@ paths:
description: ID of the order that needs to be deleted
required: true
type: string
x-example: orderid123
responses:
'400':
description: Invalid ID supplied
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,7 @@ paths:
required: true
schema:
type: string
example: orderid123
responses:
'400':
description: Invalid ID supplied
Expand Down

0 comments on commit 63b1c23

Please sign in to comment.