@@ -7,10 +7,17 @@ import (
77 "github.com/stretchr/testify/require"
88)
99
10+ func unsetIncludeOrigin () {
11+ IncludeOrigin = false
12+ }
13+
1014func TestOrigin_Info (t * testing.T ) {
1115 loader := NewLoader ()
1216 loader .IsExternalRefsAllowed = true
13- loader .IncludeOrigin = true
17+
18+ IncludeOrigin = true
19+ defer unsetIncludeOrigin ()
20+
1421 loader .Context = context .Background ()
1522
1623 doc , err := loader .LoadFromFile ("testdata/origin/simple.yaml" )
@@ -42,7 +49,10 @@ func TestOrigin_Info(t *testing.T) {
4249func TestOrigin_Paths (t * testing.T ) {
4350 loader := NewLoader ()
4451 loader .IsExternalRefsAllowed = true
45- loader .IncludeOrigin = true
52+
53+ IncludeOrigin = true
54+ defer unsetIncludeOrigin ()
55+
4656 loader .Context = context .Background ()
4757
4858 doc , err := loader .LoadFromFile ("testdata/origin/simple.yaml" )
@@ -78,7 +88,10 @@ func TestOrigin_Paths(t *testing.T) {
7888func TestOrigin_RequestBody (t * testing.T ) {
7989 loader := NewLoader ()
8090 loader .IsExternalRefsAllowed = true
81- loader .IncludeOrigin = true
91+
92+ IncludeOrigin = true
93+ defer unsetIncludeOrigin ()
94+
8295 loader .Context = context .Background ()
8396
8497 doc , err := loader .LoadFromFile ("testdata/origin/request_body.yaml" )
@@ -105,7 +118,10 @@ func TestOrigin_RequestBody(t *testing.T) {
105118func TestOrigin_Responses (t * testing.T ) {
106119 loader := NewLoader ()
107120 loader .IsExternalRefsAllowed = true
108- loader .IncludeOrigin = true
121+
122+ IncludeOrigin = true
123+ defer unsetIncludeOrigin ()
124+
109125 loader .Context = context .Background ()
110126
111127 doc , err := loader .LoadFromFile ("testdata/origin/simple.yaml" )
@@ -140,7 +156,10 @@ func TestOrigin_Responses(t *testing.T) {
140156func TestOrigin_Parameters (t * testing.T ) {
141157 loader := NewLoader ()
142158 loader .IsExternalRefsAllowed = true
143- loader .IncludeOrigin = true
159+
160+ IncludeOrigin = true
161+ defer unsetIncludeOrigin ()
162+
144163 loader .Context = context .Background ()
145164
146165 doc , err := loader .LoadFromFile ("testdata/origin/parameters.yaml" )
@@ -173,7 +192,10 @@ func TestOrigin_Parameters(t *testing.T) {
173192func TestOrigin_SchemaInAdditionalProperties (t * testing.T ) {
174193 loader := NewLoader ()
175194 loader .IsExternalRefsAllowed = true
176- loader .IncludeOrigin = true
195+
196+ IncludeOrigin = true
197+ defer unsetIncludeOrigin ()
198+
177199 loader .Context = context .Background ()
178200
179201 doc , err := loader .LoadFromFile ("testdata/origin/additional_properties.yaml" )
@@ -201,7 +223,10 @@ func TestOrigin_SchemaInAdditionalProperties(t *testing.T) {
201223func TestOrigin_ExternalDocs (t * testing.T ) {
202224 loader := NewLoader ()
203225 loader .IsExternalRefsAllowed = true
204- loader .IncludeOrigin = true
226+
227+ IncludeOrigin = true
228+ defer unsetIncludeOrigin ()
229+
205230 loader .Context = context .Background ()
206231
207232 doc , err := loader .LoadFromFile ("testdata/origin/external_docs.yaml" )
@@ -235,7 +260,10 @@ func TestOrigin_ExternalDocs(t *testing.T) {
235260func TestOrigin_Security (t * testing.T ) {
236261 loader := NewLoader ()
237262 loader .IsExternalRefsAllowed = true
238- loader .IncludeOrigin = true
263+
264+ IncludeOrigin = true
265+ defer unsetIncludeOrigin ()
266+
239267 loader .Context = context .Background ()
240268
241269 doc , err := loader .LoadFromFile ("testdata/origin/security.yaml" )
@@ -283,7 +311,10 @@ func TestOrigin_Security(t *testing.T) {
283311func TestOrigin_Example (t * testing.T ) {
284312 loader := NewLoader ()
285313 loader .IsExternalRefsAllowed = true
286- loader .IncludeOrigin = true
314+
315+ IncludeOrigin = true
316+ defer unsetIncludeOrigin ()
317+
287318 loader .Context = context .Background ()
288319
289320 doc , err := loader .LoadFromFile ("testdata/origin/example.yaml" )
@@ -319,7 +350,10 @@ func TestOrigin_Example(t *testing.T) {
319350func TestOrigin_XML (t * testing.T ) {
320351 loader := NewLoader ()
321352 loader .IsExternalRefsAllowed = true
322- loader .IncludeOrigin = true
353+
354+ IncludeOrigin = true
355+ defer unsetIncludeOrigin ()
356+
323357 loader .Context = context .Background ()
324358
325359 doc , err := loader .LoadFromFile ("testdata/origin/xml.yaml" )
@@ -348,3 +382,37 @@ func TestOrigin_XML(t *testing.T) {
348382 },
349383 base .Origin .Fields ["prefix" ])
350384}
385+
386+ // TestOrigin_OriginExistsInProperties verifies that loading fails when a specification
387+ // contains a property named "__origin__", highlighting a limitation in the current implementation.
388+ func TestOrigin_OriginExistsInProperties (t * testing.T ) {
389+ var data = `
390+ paths:
391+ /foo:
392+ get:
393+ responses:
394+ "200":
395+ description: OK
396+ content:
397+ application/json:
398+ schema:
399+ $ref: "#/components/schemas/Foo"
400+ components:
401+ schemas:
402+ Foo:
403+ type: object
404+ properties:
405+ __origin__:
406+ type: string
407+ `
408+
409+ loader := NewLoader ()
410+
411+ IncludeOrigin = true
412+ defer unsetIncludeOrigin ()
413+
414+ _ , err := loader .LoadFromData ([]byte (data ))
415+ require .Error (t , err )
416+ require .Equal (t , `failed to unmarshal data: json error: invalid character 'p' looking for beginning of value, yaml error: error converting YAML to JSON: yaml: unmarshal errors:
417+ line 0: mapping key "__origin__" already defined at line 17` , err .Error ())
418+ }
0 commit comments