1
0
mirror of https://github.com/kevin1024/vcrpy.git synced 2025-12-09 01:03:24 +00:00

Update VCR params to use new filters.

This commit is contained in:
Aron Griffis
2015-08-24 22:38:36 -04:00
parent cb40a45eba
commit 77de8dc47e
2 changed files with 43 additions and 24 deletions

View File

@@ -47,31 +47,44 @@ def test_vcr_before_record_request_params():
if request.path != '/get': if request.path != '/get':
return request return request
test_vcr = VCR(filter_headers=('cookie',), before_record_request=before_record_cb, test_vcr = VCR(filter_headers=('cookie', ('bert', 'ernie')),
before_record_request=before_record_cb,
ignore_hosts=('www.test.com',), ignore_localhost=True, ignore_hosts=('www.test.com',), ignore_localhost=True,
filter_query_parameters=('foo',)) filter_query_parameters=('foo', ('tom', 'jerry')),
filter_post_data_parameters=('posted', ('no', 'trespassing')))
with test_vcr.use_cassette('test') as cassette: with test_vcr.use_cassette('test') as cassette:
assert cassette.filter_request(Request('GET', base_path + 'get', '', {})) is None # Test explicit before_record_cb
assert cassette.filter_request(Request('GET', base_path + 'get2', '', {})) is not None request_get = Request('GET', base_path + 'get', '', {})
assert cassette.filter_request(request_get) is None
request = Request('GET', base_path + 'get2', '', {})
assert cassette.filter_request(request) is not None
assert cassette.filter_request(Request('GET', base_path + '?foo=bar', '', {})).query == [] # Test filter_query_parameters
assert cassette.filter_request( request = Request('GET', base_path + '?foo=bar', '', {})
Request('GET', base_path + '?foo=bar', '', assert cassette.filter_request(request).query == []
{'cookie': 'test', 'other': 'fun'})).headers == {'other': 'fun'} request = Request('GET', base_path + '?tom=nobody', '', {})
assert cassette.filter_request( assert cassette.filter_request(request).query == [('tom', 'jerry')]
Request(
'GET', base_path + '?foo=bar', '',
{'cookie': 'test', 'other': 'fun'}
)
).headers == {'other': 'fun'}
assert cassette.filter_request(Request('GET', 'http://www.test.com' + '?foo=bar', '', # Test filter_headers
{'cookie': 'test', 'other': 'fun'})) is None request = Request('GET', base_path + '?foo=bar', '',
{'cookie': 'test', 'other': 'fun', 'bert': 'nobody'})
assert (cassette.filter_request(request).headers ==
{'other': 'fun', 'bert': 'ernie'})
# Test ignore_hosts
request = Request('GET', 'http://www.test.com' + '?foo=bar', '',
{'cookie': 'test', 'other': 'fun'})
assert cassette.filter_request(request) is None
# Test ignore_localhost
request = Request('GET', 'http://localhost:8000' + '?foo=bar', '',
{'cookie': 'test', 'other': 'fun'})
assert cassette.filter_request(request) is None
with test_vcr.use_cassette('test', before_record_request=None) as cassette: with test_vcr.use_cassette('test', before_record_request=None) as cassette:
# Test that before_record can be overwritten with # Test that before_record can be overwritten in context manager.
assert cassette.filter_request(Request('GET', base_path + 'get', '', {})) is not None assert cassette.filter_request(request_get) is not None
def test_vcr_before_record_response_iterable(): def test_vcr_before_record_response_iterable():

View File

@@ -199,22 +199,28 @@ class VCR(object):
'ignore_localhost', self.ignore_localhost 'ignore_localhost', self.ignore_localhost
) )
if filter_headers: if filter_headers:
replacements = [h if isinstance(h, tuple) else (h, None)
for h in filter_headers]
filter_functions.append( filter_functions.append(
functools.partial( functools.partial(
filters.remove_headers, filters.replace_headers,
headers_to_remove=filter_headers replacements=replacements,
) )
) )
if filter_query_parameters: if filter_query_parameters:
replacements = [p if isinstance(p, tuple) else (p, None)
for p in filter_query_parameters]
filter_functions.append(functools.partial( filter_functions.append(functools.partial(
filters.remove_query_parameters, filters.replace_query_parameters,
query_parameters_to_remove=filter_query_parameters replacements=replacements,
)) ))
if filter_post_data_parameters: if filter_post_data_parameters:
replacements = [p if isinstance(p, tuple) else (p, None)
for p in filter_post_data_parameters]
filter_functions.append( filter_functions.append(
functools.partial( functools.partial(
filters.remove_post_data_parameters, filters.replace_post_data_parameters,
post_data_parameters_to_remove=filter_post_data_parameters replacements=replacements,
) )
) )