Skip to content

Commit ecb06bc

Browse files
authored
openapi3: add test from #731 showing validating doc first is required (#762)
closes #731
1 parent 409e0dc commit ecb06bc

File tree

1 file changed

+38
-3
lines changed

1 file changed

+38
-3
lines changed

openapi3/loader_test.go

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,18 +55,53 @@ paths:
5555
`)
5656

5757
loader := NewLoader()
58+
5859
doc, err := loader.LoadFromData(spec)
5960
require.NoError(t, err)
6061
require.Equal(t, "An API", doc.Info.Title)
6162
require.Equal(t, 2, len(doc.Components.Schemas))
6263
require.Equal(t, 1, len(doc.Paths))
63-
def := doc.Paths["/items"].Put.Responses.Default().Value
64-
desc := "unexpected error"
65-
require.Equal(t, &desc, def.Description)
64+
require.Equal(t, "unexpected error", *doc.Paths["/items"].Put.Responses.Default().Value.Description)
65+
6666
err = doc.Validate(loader.Context)
6767
require.NoError(t, err)
6868
}
6969

70+
func TestIssue731(t *testing.T) {
71+
spec := []byte(`
72+
openapi: 3.0.0
73+
info:
74+
title: An API
75+
version: v1
76+
paths:
77+
/items:
78+
put:
79+
description: ''
80+
requestBody:
81+
required: true
82+
# Note mis-indented content block
83+
content:
84+
application/json:
85+
schema:
86+
type: object
87+
responses:
88+
default:
89+
description: unexpected error
90+
content:
91+
application/json:
92+
schema:
93+
type: object
94+
`[1:])
95+
96+
loader := NewLoader()
97+
98+
doc, err := loader.LoadFromData(spec)
99+
require.NoError(t, err)
100+
101+
err = doc.Validate(loader.Context)
102+
require.ErrorContains(t, err, `content of the request body is required`)
103+
}
104+
70105
func ExampleLoader() {
71106
const source = `{"info":{"description":"An API"}}`
72107
doc, err := NewLoader().LoadFromData([]byte(source))

0 commit comments

Comments
 (0)