1
1
import pytest
2
2
3
- from openapi_spec_validator import validate_spec , validate_spec_url
4
- from openapi_spec_validator import validate_v2_spec , validate_v2_spec_url
3
+ from openapi_spec_validator import (
4
+ validate_spec , validate_spec_url ,
5
+ validate_v2_spec , validate_v2_spec_url ,
6
+ validate_spec_url_factory ,
7
+ openapi_v2_spec_validator , openapi_v3_spec_validator ,
8
+ )
5
9
from openapi_spec_validator .exceptions import OpenAPIValidationError
10
+ from openapi_spec_validator .handlers .urllib import UrllibHandler
6
11
7
12
8
13
class BaseTestValidValidteV2Spec :
@@ -31,11 +36,32 @@ def test_failed(self, spec):
31
36
validate_spec (spec )
32
37
33
38
34
- class BaseTestValidValidteV2SpecUrl :
39
+ class BaseTestValidValidateSpecUrl :
40
+
41
+ @pytest .fixture
42
+ def urllib_handlers (self ):
43
+ all_urls_handler = UrllibHandler ('http' , 'https' , 'file' )
44
+ return {
45
+ '<all_urls>' : all_urls_handler ,
46
+ 'http' : UrllibHandler ('http' ),
47
+ 'https' : UrllibHandler ('https' ),
48
+ 'file' : UrllibHandler ('file' ),
49
+ }
50
+
51
+
52
+ class BaseTestValidValidateV2SpecUrl (BaseTestValidValidateSpecUrl ):
53
+
54
+ @pytest .fixture
55
+ def validate_spec_url_callable (self , urllib_handlers ):
56
+ return validate_spec_url_factory (
57
+ openapi_v2_spec_validator .validate , urllib_handlers )
35
58
36
59
def test_valid (self , spec_url ):
37
60
validate_v2_spec_url (spec_url )
38
61
62
+ def test_urllib_valid (self , validate_spec_url_callable , spec_url ):
63
+ validate_spec_url_callable (spec_url )
64
+
39
65
40
66
class BaseTestFaliedValidateV2SpecUrl :
41
67
@@ -44,11 +70,19 @@ def test_failed(self, spec_url):
44
70
validate_v2_spec_url (spec_url )
45
71
46
72
47
- class BaseTestValidValidteSpecUrl :
73
+ class BaseTestValidValidateV3SpecUrl ( BaseTestValidValidateSpecUrl ) :
48
74
49
- def test_valid (self , spec_url ):
75
+ @pytest .fixture
76
+ def validate_spec_url_callable (self , urllib_handlers ):
77
+ return validate_spec_url_factory (
78
+ openapi_v3_spec_validator .validate , urllib_handlers )
79
+
80
+ def test_default_valid (self , spec_url ):
50
81
validate_spec_url (spec_url )
51
82
83
+ def test_urllib_valid (self , validate_spec_url_callable , spec_url ):
84
+ validate_spec_url_callable (spec_url )
85
+
52
86
53
87
class BaseTestFaliedValidateSpecUrl :
54
88
@@ -78,7 +112,7 @@ def spec(self, factory):
78
112
return factory .spec_from_file ("data/v3.0/petstore.yaml" )
79
113
80
114
81
- class TestPetstoreV2Example (BaseTestValidValidteV2SpecUrl ):
115
+ class TestPetstoreV2Example (BaseTestValidValidateV2SpecUrl ):
82
116
83
117
@pytest .fixture
84
118
def spec_url (self ):
@@ -89,7 +123,7 @@ def spec_url(self):
89
123
)
90
124
91
125
92
- class TestApiV2WithExampe (BaseTestValidValidteV2SpecUrl ):
126
+ class TestApiV2WithExampe (BaseTestValidValidateV2SpecUrl ):
93
127
94
128
@pytest .fixture
95
129
def spec_url (self ):
@@ -100,7 +134,7 @@ def spec_url(self):
100
134
)
101
135
102
136
103
- class TestPetstoreV2ExpandedExample (BaseTestValidValidteV2SpecUrl ):
137
+ class TestPetstoreV2ExpandedExample (BaseTestValidValidateV2SpecUrl ):
104
138
105
139
@pytest .fixture
106
140
def spec_url (self ):
@@ -111,7 +145,7 @@ def spec_url(self):
111
145
)
112
146
113
147
114
- class TestPetstoreExample (BaseTestValidValidteSpecUrl ):
148
+ class TestPetstoreExample (BaseTestValidValidateV3SpecUrl ):
115
149
116
150
@pytest .fixture
117
151
def spec_url (self ):
@@ -122,7 +156,7 @@ def spec_url(self):
122
156
)
123
157
124
158
125
- class TestApiWithExampe (BaseTestValidValidteSpecUrl ):
159
+ class TestApiWithExampe (BaseTestValidValidateV3SpecUrl ):
126
160
127
161
@pytest .fixture
128
162
def spec_url (self ):
@@ -133,7 +167,7 @@ def spec_url(self):
133
167
)
134
168
135
169
136
- class TestPetstoreExpandedExample (BaseTestValidValidteSpecUrl ):
170
+ class TestPetstoreExpandedExample (BaseTestValidValidateV3SpecUrl ):
137
171
138
172
@pytest .fixture
139
173
def spec_url (self ):
0 commit comments