Skip to content

Commit

Permalink
use_allof_for_refs: extend to example field (#3240)
Browse files Browse the repository at this point in the history
  • Loading branch information
igor-tsiglyar committed Mar 15, 2023
1 parent 4538837 commit bd9d579
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 4 deletions.
11 changes: 7 additions & 4 deletions protoc-gen-openapiv2/internal/genopenapi/template.go
Expand Up @@ -522,13 +522,16 @@ func renderMessageAsDefinition(msg *descriptor.Message, reg *descriptor.Registry
if fieldSchema.Ref != "" {
// Per the JSON Reference syntax: Any members other than "$ref" in a JSON Reference object SHALL be ignored.
// https://tools.ietf.org/html/draft-pbryan-zyp-json-ref-03#section-3
// However, use allOf to specify Title/Description/readOnly fields.
if fieldSchema.Title != "" || fieldSchema.Description != "" || fieldSchema.ReadOnly {
// However, use allOf to specify Title/Description/Example/readOnly fields.
if fieldSchema.Title != "" || fieldSchema.Description != "" || len(fieldSchema.Example) > 0 || fieldSchema.ReadOnly {
fieldSchema = openapiSchemaObject{
Title: fieldSchema.Title,
Description: fieldSchema.Description,
ReadOnly: fieldSchema.ReadOnly,
AllOf: []allOfEntry{{Ref: fieldSchema.Ref}},
schemaCore: schemaCore{
Example: fieldSchema.Example,
},
ReadOnly: fieldSchema.ReadOnly,
AllOf: []allOfEntry{{Ref: fieldSchema.Ref}},
}
} else {
fieldSchema = openapiSchemaObject{schemaCore: schemaCore{Ref: fieldSchema.Ref}}
Expand Down
17 changes: 17 additions & 0 deletions protoc-gen-openapiv2/internal/genopenapi/template_test.go
Expand Up @@ -5372,6 +5372,18 @@ func TestRenderMessagesAsDefinition(t *testing.T) {
},
},
},
openAPIOptions: &openapiconfig.OpenAPIOptions{
Field: []*openapiconfig.OpenAPIFieldOption{
{
Field: "example.Message.nested",
Option: &openapi_options.JSONSchema{
Title: "nested field title",
Description: "nested field desc",
Example: `"ok":"TRUE"`,
},
},
},
},
defs: map[string]openapiSchemaObject{
"exampleMessage": {
schemaCore: schemaCore{
Expand All @@ -5386,6 +5398,11 @@ func TestRenderMessagesAsDefinition(t *testing.T) {
Value: openapiSchemaObject{
AllOf: []allOfEntry{{Ref: "#/definitions/MessageNested"}},
ReadOnly: true,
schemaCore: schemaCore{
Example: RawExample(`"ok":"TRUE"`),
},
Title: "nested field title",
Description: "nested field desc",
},
},
},
Expand Down

0 comments on commit bd9d579

Please sign in to comment.