-
-
Notifications
You must be signed in to change notification settings - Fork 446
/
Copy pathloader_recursive_ref_test.go
61 lines (54 loc) · 1.45 KB
/
loader_recursive_ref_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package openapi3
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestLoaderSupportsRecursiveReference(t *testing.T) {
loader := NewLoader()
loader.IsExternalRefsAllowed = true
doc, err := loader.LoadFromFile("testdata/recursiveRef/openapi.yml")
require.NoError(t, err)
err = doc.Validate(loader.Context)
require.NoError(t, err)
require.Equal(t, "bar", doc.
Paths.Value("/foo").
Get.Responses.Status(200).Value.
Content.Get("application/json").
Schema.Value.Properties["foo2"].Value.Properties["foo"].Value.Properties["bar"].Value.Example)
require.Equal(t, "ErrorDetails", doc.
Paths.Value("/foo").
Get.Responses.Status(400).Value.
Content.Get("application/json").
Schema.Value.Title)
require.Equal(t, "ErrorDetails", doc.
Paths.Value("/double-ref-foo").
Get.Responses.Status(400).Value.
Content.Get("application/json").
Schema.Value.Title)
}
func TestIssue447(t *testing.T) {
loader := NewLoader()
doc, err := loader.LoadFromData([]byte(`
openapi: 3.0.1
info:
title: Recursive refs example
version: "1.0"
paths: {}
components:
schemas:
Complex:
type: object
properties:
parent:
$ref: '#/components/schemas/Complex'
`))
require.NoError(t, err)
err = doc.Validate(loader.Context)
require.NoError(t, err)
require.Equal(t, &Types{"object"}, doc.Components.
Schemas["Complex"].
Value.Properties["parent"].
Value.Properties["parent"].
Value.Properties["parent"].
Value.Type)
}