Skip to content

Commit d482121

Browse files
committed
Test query params
1 parent 2963d43 commit d482121

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

abe/unittest.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import os
2+
import urlparse
23

34
from .mocks import AbeMock
45
from .utils import normalize, subkeys
@@ -125,6 +126,18 @@ def assert_headers_contain(self, response_data, spec_data):
125126
"header {0}".format(expected_header)
126127
)
127128

129+
def assert_query_params_equal(self, request_data, spec_data):
130+
qs = urlparse.parse_qs(request_data)
131+
for k, expected_value in spec_data.items():
132+
try:
133+
actual_value = qs[k]
134+
except KeyError:
135+
raise AssertionError('Missing {0} from request'.format(k))
136+
137+
if len(actual_value) == 1:
138+
actual_value = actual_value[0]
139+
self.assertEqual(expected_value, actual_value)
140+
128141
def assert_matches_request(self, sample_request, wsgi_request,
129142
non_strict=None):
130143
"""
@@ -144,6 +157,12 @@ def assert_matches_request(self, sample_request, wsgi_request,
144157
wsgi_request.META, sample_request['headers']
145158
)
146159

160+
if 'queryParams' in sample_request and 'queryParams' not in non_strict:
161+
self.assert_query_params_equal(
162+
wsgi_request.META['QUERY_STRING'],
163+
sample_request['queryParams']
164+
)
165+
147166
if 'body' in sample_request:
148167
self.assert_data_equal(
149168
wsgi_request.POST, sample_request['body'], non_strict)

tests/test_assertions.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,10 @@ def setUp(self):
115115
"examples": {
116116
"OK": {
117117
"request": {
118-
"queryParams": {},
118+
"queryParams": {
119+
"foo": "1",
120+
"bar": "2"
121+
},
119122
"body": {
120123
"name": "My Resource"
121124
},
@@ -133,7 +136,8 @@ def setUp(self):
133136
META={
134137
'HTTP_THIS_CUSTOM_HEADER': 'Foo',
135138
'REQUEST_METHOD': 'POST',
136-
'PATH_INFO': '/resource/'
139+
'PATH_INFO': '/resource/',
140+
'QUERY_STRING': 'foo=1&bar=2'
137141
},
138142
)
139143

@@ -172,6 +176,13 @@ def test_matches_non_strict(self):
172176
self.sample_request, self.mock_wsgi_request, non_strict=['name']
173177
)
174178

179+
def test_assertion_error_if_query_params_mismatch(self):
180+
self.mock_wsgi_request.META['QUERY_STRING'] = "foo=1"
181+
with self.assertRaises(AssertionError):
182+
self.assert_matches_request(
183+
self.sample_request, self.mock_wsgi_request
184+
)
185+
175186

176187
def _abe_wrap_response(response):
177188
abe_mock = AbeMock({

0 commit comments

Comments
 (0)