diff --git a/tests/unit/test_matchers.py b/tests/unit/test_matchers.py index 3e69456..2462fce 100644 --- a/tests/unit/test_matchers.py +++ b/tests/unit/test_matchers.py @@ -35,8 +35,21 @@ def test_url_matcher(): assert matched +def test_query_matcher(): + req1 = request.Request('GET', 'http://host.com:80/?a=b&c=d', '', {}) + req2 = request.Request('GET', 'http://host.com:80/?c=d&a=b', '', {}) + assert matchers.query(req1, req2) + + req1 = request.Request('GET', 'http://host.com:80/?a=b&a=b&c=d', '', {}) + req2 = request.Request('GET', 'http://host.com:80/?a=b&c=d&a=b', '', {}) + req3 = request.Request('GET', 'http://host.com:80/?c=d&a=b&a=b', '', {}) + assert matchers.query(req1, req2) + assert matchers.query(req1, req3) + + def test_metchers(): assert_matcher('method') assert_matcher('host') assert_matcher('port') assert_matcher('path') + assert_matcher('query') diff --git a/vcr/matchers.py b/vcr/matchers.py index 1bdc515..4dde6a0 100644 --- a/vcr/matchers.py +++ b/vcr/matchers.py @@ -21,6 +21,10 @@ def path(r1, r2): return r1.path == r2.path +def query(r1, r2): + return r1.query == r2.query + + def body(r1, r2): return r1.body == r2.body diff --git a/vcr/request.py b/vcr/request.py index 3cae183..ca6faee 100644 --- a/vcr/request.py +++ b/vcr/request.py @@ -27,6 +27,11 @@ class Request(object): def path(self): return urlparse(self.uri).path + @property + def query(self): + q = urlparse(self.uri).query + return sorted(parse_qsl(q)) + @property def url(self): return self.uri