11import os
2+ try :
3+ from urlparse import parse_qs
4+ except ImportError :
5+ from urllib .parse import parse_qs
26
37from .mocks import AbeMock
48from .utils import normalize , subkeys
@@ -125,6 +129,18 @@ def assert_headers_contain(self, response_data, spec_data):
125129 "header {0}" .format (expected_header )
126130 )
127131
132+ def assert_query_params_equal (self , request_data , spec_data ):
133+ qs = parse_qs (request_data )
134+ for k , expected_value in spec_data .items ():
135+ try :
136+ actual_value = qs [k ]
137+ except KeyError :
138+ raise AssertionError ('Missing {0} from request' .format (k ))
139+
140+ if len (actual_value ) == 1 :
141+ actual_value = actual_value [0 ]
142+ self .assertEqual (expected_value , actual_value )
143+
128144 def assert_matches_request (self , sample_request , wsgi_request ,
129145 non_strict = None ):
130146 """
@@ -144,6 +160,12 @@ def assert_matches_request(self, sample_request, wsgi_request,
144160 wsgi_request .META , sample_request ['headers' ]
145161 )
146162
163+ if 'queryParams' in sample_request and 'queryParams' not in non_strict :
164+ self .assert_query_params_equal (
165+ wsgi_request .META ['QUERY_STRING' ],
166+ sample_request ['queryParams' ]
167+ )
168+
147169 if 'body' in sample_request :
148170 self .assert_data_equal (
149171 wsgi_request .POST , sample_request ['body' ], non_strict )
0 commit comments