@@ -7,10 +7,17 @@ import (
7
7
"github.com/stretchr/testify/require"
8
8
)
9
9
10
+ func unsetIncludeOrigin () {
11
+ IncludeOrigin = false
12
+ }
13
+
10
14
func TestOrigin_Info (t * testing.T ) {
11
15
loader := NewLoader ()
12
16
loader .IsExternalRefsAllowed = true
13
- loader .IncludeOrigin = true
17
+
18
+ IncludeOrigin = true
19
+ defer unsetIncludeOrigin ()
20
+
14
21
loader .Context = context .Background ()
15
22
16
23
doc , err := loader .LoadFromFile ("testdata/origin/simple.yaml" )
@@ -42,7 +49,10 @@ func TestOrigin_Info(t *testing.T) {
42
49
func TestOrigin_Paths (t * testing.T ) {
43
50
loader := NewLoader ()
44
51
loader .IsExternalRefsAllowed = true
45
- loader .IncludeOrigin = true
52
+
53
+ IncludeOrigin = true
54
+ defer unsetIncludeOrigin ()
55
+
46
56
loader .Context = context .Background ()
47
57
48
58
doc , err := loader .LoadFromFile ("testdata/origin/simple.yaml" )
@@ -78,7 +88,10 @@ func TestOrigin_Paths(t *testing.T) {
78
88
func TestOrigin_RequestBody (t * testing.T ) {
79
89
loader := NewLoader ()
80
90
loader .IsExternalRefsAllowed = true
81
- loader .IncludeOrigin = true
91
+
92
+ IncludeOrigin = true
93
+ defer unsetIncludeOrigin ()
94
+
82
95
loader .Context = context .Background ()
83
96
84
97
doc , err := loader .LoadFromFile ("testdata/origin/request_body.yaml" )
@@ -105,7 +118,10 @@ func TestOrigin_RequestBody(t *testing.T) {
105
118
func TestOrigin_Responses (t * testing.T ) {
106
119
loader := NewLoader ()
107
120
loader .IsExternalRefsAllowed = true
108
- loader .IncludeOrigin = true
121
+
122
+ IncludeOrigin = true
123
+ defer unsetIncludeOrigin ()
124
+
109
125
loader .Context = context .Background ()
110
126
111
127
doc , err := loader .LoadFromFile ("testdata/origin/simple.yaml" )
@@ -140,7 +156,10 @@ func TestOrigin_Responses(t *testing.T) {
140
156
func TestOrigin_Parameters (t * testing.T ) {
141
157
loader := NewLoader ()
142
158
loader .IsExternalRefsAllowed = true
143
- loader .IncludeOrigin = true
159
+
160
+ IncludeOrigin = true
161
+ defer unsetIncludeOrigin ()
162
+
144
163
loader .Context = context .Background ()
145
164
146
165
doc , err := loader .LoadFromFile ("testdata/origin/parameters.yaml" )
@@ -173,7 +192,10 @@ func TestOrigin_Parameters(t *testing.T) {
173
192
func TestOrigin_SchemaInAdditionalProperties (t * testing.T ) {
174
193
loader := NewLoader ()
175
194
loader .IsExternalRefsAllowed = true
176
- loader .IncludeOrigin = true
195
+
196
+ IncludeOrigin = true
197
+ defer unsetIncludeOrigin ()
198
+
177
199
loader .Context = context .Background ()
178
200
179
201
doc , err := loader .LoadFromFile ("testdata/origin/additional_properties.yaml" )
@@ -201,7 +223,10 @@ func TestOrigin_SchemaInAdditionalProperties(t *testing.T) {
201
223
func TestOrigin_ExternalDocs (t * testing.T ) {
202
224
loader := NewLoader ()
203
225
loader .IsExternalRefsAllowed = true
204
- loader .IncludeOrigin = true
226
+
227
+ IncludeOrigin = true
228
+ defer unsetIncludeOrigin ()
229
+
205
230
loader .Context = context .Background ()
206
231
207
232
doc , err := loader .LoadFromFile ("testdata/origin/external_docs.yaml" )
@@ -235,7 +260,10 @@ func TestOrigin_ExternalDocs(t *testing.T) {
235
260
func TestOrigin_Security (t * testing.T ) {
236
261
loader := NewLoader ()
237
262
loader .IsExternalRefsAllowed = true
238
- loader .IncludeOrigin = true
263
+
264
+ IncludeOrigin = true
265
+ defer unsetIncludeOrigin ()
266
+
239
267
loader .Context = context .Background ()
240
268
241
269
doc , err := loader .LoadFromFile ("testdata/origin/security.yaml" )
@@ -283,7 +311,10 @@ func TestOrigin_Security(t *testing.T) {
283
311
func TestOrigin_Example (t * testing.T ) {
284
312
loader := NewLoader ()
285
313
loader .IsExternalRefsAllowed = true
286
- loader .IncludeOrigin = true
314
+
315
+ IncludeOrigin = true
316
+ defer unsetIncludeOrigin ()
317
+
287
318
loader .Context = context .Background ()
288
319
289
320
doc , err := loader .LoadFromFile ("testdata/origin/example.yaml" )
@@ -319,7 +350,10 @@ func TestOrigin_Example(t *testing.T) {
319
350
func TestOrigin_XML (t * testing.T ) {
320
351
loader := NewLoader ()
321
352
loader .IsExternalRefsAllowed = true
322
- loader .IncludeOrigin = true
353
+
354
+ IncludeOrigin = true
355
+ defer unsetIncludeOrigin ()
356
+
323
357
loader .Context = context .Background ()
324
358
325
359
doc , err := loader .LoadFromFile ("testdata/origin/xml.yaml" )
@@ -348,3 +382,37 @@ func TestOrigin_XML(t *testing.T) {
348
382
},
349
383
base .Origin .Fields ["prefix" ])
350
384
}
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