@@ -43,6 +43,7 @@ def django_settings(self):
43
43
settings .ROOT_URLCONF = (
44
44
path ("admin/" , admin .site .urls ),
45
45
re_path ("^test/test-regexp/$" , lambda d : None ),
46
+ re_path ("^object/(?P<pk>[^/.]+)/action/$" , lambda d : None ),
46
47
)
47
48
48
49
@pytest .fixture
@@ -68,81 +69,53 @@ def test_no_resolver(self, request_factory):
68
69
69
70
openapi_request = DjangoOpenAPIRequest (request )
70
71
71
- path = {}
72
- query = ImmutableMultiDict (
73
- [
74
- ("test1" , "test2" ),
75
- ]
76
- )
77
- headers = Headers (
78
- {
79
- "Cookie" : "" ,
80
- }
81
- )
82
- cookies = {}
83
72
assert openapi_request .parameters == RequestParameters (
84
- path = path ,
85
- query = query ,
86
- header = headers ,
87
- cookie = cookies ,
73
+ path = {} ,
74
+ query = ImmutableMultiDict ([( "test1" , "test2" )]) ,
75
+ header = Headers ({ "Cookie" : "" }) ,
76
+ cookie = {} ,
88
77
)
89
78
assert openapi_request .method == request .method .lower ()
90
79
assert openapi_request .host_url == request ._current_scheme_host
91
80
assert openapi_request .path == request .path
81
+ assert openapi_request .path_pattern is None
92
82
assert openapi_request .body == ""
93
83
assert openapi_request .mimetype == request .content_type
94
84
95
85
def test_simple (self , request_factory ):
96
86
from django .urls import resolve
97
87
98
88
request = request_factory .get ("/admin/" )
99
- request .resolver_match = resolve ("/admin/" )
89
+ request .resolver_match = resolve (request . path )
100
90
101
91
openapi_request = DjangoOpenAPIRequest (request )
102
92
103
- path = {}
104
- query = {}
105
- headers = Headers (
106
- {
107
- "Cookie" : "" ,
108
- }
109
- )
110
- cookies = {}
111
93
assert openapi_request .parameters == RequestParameters (
112
- path = path ,
113
- query = query ,
114
- header = headers ,
115
- cookie = cookies ,
94
+ path = {} ,
95
+ query = {} ,
96
+ header = Headers ({ "Cookie" : "" }) ,
97
+ cookie = {} ,
116
98
)
117
99
assert openapi_request .method == request .method .lower ()
118
100
assert openapi_request .host_url == request ._current_scheme_host
119
101
assert openapi_request .path == request .path
102
+ assert openapi_request .path_pattern == request .path
120
103
assert openapi_request .body == ""
121
104
assert openapi_request .mimetype == request .content_type
122
105
123
106
def test_url_rule (self , request_factory ):
124
107
from django .urls import resolve
125
108
126
109
request = request_factory .get ("/admin/auth/group/1/" )
127
- request .resolver_match = resolve ("/admin/auth/group/1/" )
110
+ request .resolver_match = resolve (request . path )
128
111
129
112
openapi_request = DjangoOpenAPIRequest (request )
130
113
131
- path = {
132
- "object_id" : "1" ,
133
- }
134
- query = {}
135
- headers = Headers (
136
- {
137
- "Cookie" : "" ,
138
- }
139
- )
140
- cookies = {}
141
114
assert openapi_request .parameters == RequestParameters (
142
- path = path ,
143
- query = query ,
144
- header = headers ,
145
- cookie = cookies ,
115
+ path = { "object_id" : "1" } ,
116
+ query = {} ,
117
+ header = Headers ({ "Cookie" : "" }) ,
118
+ cookie = {} ,
146
119
)
147
120
assert openapi_request .method == request .method .lower ()
148
121
assert openapi_request .host_url == request ._current_scheme_host
@@ -155,27 +128,41 @@ def test_url_regexp_pattern(self, request_factory):
155
128
from django .urls import resolve
156
129
157
130
request = request_factory .get ("/test/test-regexp/" )
158
- request .resolver_match = resolve ("/test/test-regexp/" )
131
+ request .resolver_match = resolve (request . path )
159
132
160
133
openapi_request = DjangoOpenAPIRequest (request )
161
134
162
- path = {}
163
- query = {}
164
- headers = Headers (
165
- {
166
- "Cookie" : "" ,
167
- }
135
+ assert openapi_request .parameters == RequestParameters (
136
+ path = {},
137
+ query = {},
138
+ header = Headers ({"Cookie" : "" }),
139
+ cookie = {},
168
140
)
169
- cookies = {}
141
+ assert openapi_request .method == request .method .lower ()
142
+ assert openapi_request .host_url == request ._current_scheme_host
143
+ assert openapi_request .path == request .path
144
+ assert openapi_request .path_pattern == request .path
145
+ assert openapi_request .body == ""
146
+ assert openapi_request .mimetype == request .content_type
147
+
148
+ def test_drf_default_value_pattern (self , request_factory ):
149
+ from django .urls import resolve
150
+
151
+ request = request_factory .get ("/object/123/action/" )
152
+ request .resolver_match = resolve (request .path )
153
+
154
+ openapi_request = DjangoOpenAPIRequest (request )
155
+
170
156
assert openapi_request .parameters == RequestParameters (
171
- path = path ,
172
- query = query ,
173
- header = headers ,
174
- cookie = cookies ,
157
+ path = { "pk" : "123" } ,
158
+ query = {} ,
159
+ header = Headers ({ "Cookie" : "" }) ,
160
+ cookie = {} ,
175
161
)
176
162
assert openapi_request .method == request .method .lower ()
177
163
assert openapi_request .host_url == request ._current_scheme_host
178
- assert openapi_request .path == "/test/test-regexp/"
164
+ assert openapi_request .path == request .path
165
+ assert openapi_request .path_pattern == "/object/{pk}/action/"
179
166
assert openapi_request .body == ""
180
167
assert openapi_request .mimetype == request .content_type
181
168
0 commit comments