-
-
Notifications
You must be signed in to change notification settings - Fork 6.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG] Example values are not generated for enum types referenced with $ref #4300
Comments
👍 Thanks for opening this issue! The team will review the labels and make any necessary changes. |
I am able to resolve it by replacing this line Line 354 in a2b37d6
from However, I'm not sure if it is a correct fix. |
This would be a nice improvement 👍 |
It seems that this might only happen with scalar values, I've just found a $ref-ed "type object" that works. |
I believe this is happening with the GraphQL generator as well. Please note that I'm using a smithy generator to create a OpenAPI definition which I'm converting to the GQL schema. Input OpenAPI Schema: ...
"components": {
"schemas": {
"AccessType": {
"type": "string",
"minLength": 1,
"enum": [
"private",
"public"
]
},
"CreateScheduleRequestContent": {
"type": "object",
"properties": {
"scheduleData": {
"$ref": "#/components/schemas/ScheduleData"
},
"access": {
"$ref": "#/components/schemas/AccessType"
}
},
"required": [
"access",
"scheduleData"
]
},
"CreateScheduleResponseContent": {
"type": "object",
"properties": {
"scheduleId": {
"type": "string",
"pattern": "^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$"
},
"scheduleState": {
"$ref": "#/components/schemas/ScheduleState"
}
},
"required": [
"scheduleId",
"scheduleState"
]
},
"GetScheduleResponseContent": {
"type": "object",
"properties": {
"scheduleId": {
"type": "string",
"pattern": "^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$"
},
"scheduleData": {
"$ref": "#/components/schemas/ScheduleData"
},
"scheduleState": {
"$ref": "#/components/schemas/ScheduleState"
}
},
"required": [
"scheduleData",
"scheduleId",
"scheduleState"
]
},
"ScheduleData": {
"type": "object",
"properties": {
"name": {
"type": "string"
}
}
},
"ScheduleState": {
"type": "string",
"enum": [
"active",
"depricated"
]
}
}
}
... GQL output: # model/access_type.graphql
type AccessType {
}
# model/schedule_state.graphql
type ScheduleState {
}
# model/schedule_data.graphql
type ScheduleData {
name: String!
}
|
This is really bugging me as I want to rejuvenate the flask generator and fix a load of bugs and gaps in enum handling but this one probem has me stuck. I cannot figure out how to get the generated code to contain a legal example value or legal enum value of any kind. And I hate that. Any way folk ... What's the required behaviour here?
(PS @lwlee2608 that change above didn't work for me) The python code I get generated in the controller test is just wrong. The substituted example value "openapi_server.OuterEnumInteger()" can't even compile. Even "openapi_server.models.OuterEnumInteger()" body = 'body_example'
query_string = [('enum_query_int', openapi_server.OuterEnumInteger())]
headers = {
'Accept': '*/*', /enum-post-json:
post:
description: Test serialization of enum properties with examples
operationId: enum_post_json
responses:
'200':
description: Output enum corncopia
content:
'*/*':
schema:
type: string
parameters:
- description: Query outer enum parameter
in: query
name: enum_query_int
required: false
# TODO Code gen doesn't pick this example up nor the one in the referred type unfortunately - and the generated controller test is not valid code
# https://github.com/OpenAPITools/openapi-generator/issues/4300
example: 1
schema:
$ref: '#/components/schemas/OuterEnumInteger'
requestBody:
required: true
content:
application/json:
schema:
type: string
What the param type is ...
OuterEnumInteger:
type: integer
enum:
- 0
- 1
- 2
example: 2
|
Suffering from the same issue. Any updates now? |
Description
openapi-generator only produces example schemas/responses for
enum
types when they are inlined in the response type. When anenum
is$ref
erenced, no example value is produced. Because this happens with bothopenapi
andspring
generators, I assume this is a core bug and not specific to either generator.With the declaration file below, I get
"Specification" : { "example" : {"bar" : "BAR_A"} }
for openapi rather than the expected"Specification" : { "example" : {"foo" : "FOO_A", "bar" : "BAR_A"} }
andsetExampleResponse(request, "application/json", "{ \"bar\" : \"BAR_A\"}")
for Spring rather than the expectedsetExampleResponse(request, "application/json", "{ \"foo\": \"FOO_A\", \"bar\" : \"BAR_A\"}")
.openapi-generator version
Problem seen at least in 4.0.3, 4.1.3, latest 4.2.0-SNAPSHOT and 5.0.0-SNAPSHOT.
OpenAPI declaration file content or url
Command line used for generation
java -jar openapi-generator-cli-4.2.0-20191028.135625-129.jar generate -i api.yaml -g openapi -o oa-420/
java -jar openapi-generator-cli-4.2.0-20191028.135625-129.jar generate -i api.yaml -g spring -o spring-420/
Steps to reproduce
Generate an Openapi JSON file or a Spring application with the above command lines and check
$.components.schemas.Specification.example
andHelloApi::helloGet()
, respectivelyRelated issues/PRs
Could not find anything related to examples for
enum
s;in:title enum example
returned 0 matches.The text was updated successfully, but these errors were encountered: