1
0
mirror of https://github.com/kevin1024/vcrpy.git synced 2025-12-08 16:53:23 +00:00
Files
vcrpy/tests/unit/test_matchers.py
2014-04-30 02:27:52 +02:00

56 lines
1.9 KiB
Python

import itertools
from vcr import matchers
from vcr import request
# the dict contains requests with corresponding to its key difference
# with 'base' request.
REQUESTS = {
'base': request.Request('GET', 'http://host.com:80/', '', {}),
'method': request.Request('POST', 'http://host.com:80/', '', {}),
'protocol': request.Request('GET', 'https://host.com:80/', '', {}),
'host': request.Request('GET', 'http://another-host.com:80/', '', {}),
'port': request.Request('GET', 'http://host.com:90/', '', {}),
'path': request.Request('GET', 'http://host.com:80/a', '', {}),
'query': request.Request('GET', 'http://host.com:80/?a=b', '', {}),
}
def assert_matcher(matcher_name):
matcher = getattr(matchers, matcher_name)
for k1, k2 in itertools.permutations(REQUESTS, 2):
matched = matcher(REQUESTS[k1], REQUESTS[k2])
if matcher_name in {k1, k2}:
assert not matched
else:
assert matched
def test_url_matcher():
for k1, k2 in itertools.permutations(REQUESTS, 2):
matched = matchers.url(REQUESTS[k1], REQUESTS[k2])
if {k1, k2} != {'base', 'method'}:
assert not matched
else:
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')