11package openapi3
22
33import (
4+ "net/url"
45 "testing"
56
67 "github.com/stretchr/testify/require"
@@ -14,6 +15,44 @@ func TestLoaderSupportsRecursiveReference(t *testing.T) {
1415 err = doc .Validate (loader .Context )
1516 require .NoError (t , err )
1617 require .Equal (t , "bar" , doc .Paths ["/foo" ].Get .Responses .Get (200 ).Value .Content .Get ("application/json" ).Schema .Value .Properties ["foo2" ].Value .Properties ["foo" ].Value .Properties ["bar" ].Value .Example )
18+ require .Equal (t , "ErrorDetails" , doc .Paths ["/foo" ].Get .Responses .Get (400 ).Value .Content .Get ("application/json" ).Schema .Value .Title )
19+ require .Equal (t , "ErrorDetails" , doc .Paths ["/double-ref-foo" ].Get .Responses .Get (400 ).Value .Content .Get ("application/json" ).Schema .Value .Title )
20+ }
21+
22+ func TestResolvePath (t * testing.T ) {
23+ // relative path of folder
24+ var b = & url.URL {Path : "testdata/recursiveRef" }
25+ var c = & url.URL {Path : "./components/models/error.yaml" }
26+ u , err := resolvePath (b , c )
27+
28+ require .NoError (t , err )
29+ require .Equal (t , & url.URL {Path : "testdata/recursiveRef/components/models/error.yaml" }, u )
30+
31+ // relative path of specification file
32+ b = & url.URL {Path : "testdata/recursiveRef/openapi.yaml" }
33+ c = & url.URL {Path : "./components/models/error.yaml" }
34+ u , err = resolvePath (b , c )
35+
36+ require .NoError (t , err )
37+ require .Equal (t , & url.URL {Path : "testdata/recursiveRef/components/models/error.yaml" }, u )
38+
39+ // URL point to root of the resource
40+ b , err = url .Parse ("https://testdata/recursiveRef" )
41+ c = & url.URL {Path : "./components/models/error.yaml" }
42+ u , err = resolvePath (b , c )
43+
44+ require .NoError (t , err )
45+ var expected , _ = url .Parse ("https://testdata/recursiveRef/components/models/error.yaml" )
46+ require .Equal (t , expected , u )
47+
48+ // URL point to the resource
49+ b , err = url .Parse ("https://testdata/recursiveRef/openapi.yaml" )
50+ c = & url.URL {Path : "./components/models/error.yaml" }
51+ u , err = resolvePath (b , c )
52+
53+ require .NoError (t , err )
54+ expected , _ = url .Parse ("https://testdata/recursiveRef/components/models/error.yaml" )
55+ require .Equal (t , expected , u )
1756}
1857
1958func TestIssue447 (t * testing.T ) {
0 commit comments