From 99d4150df8a933f26ec82b6bcfb987b09882ccca Mon Sep 17 00:00:00 2001 From: Ivan Malison Date: Mon, 11 Jan 2016 15:53:04 -0800 Subject: [PATCH] allow filtering by response --- tests/unit/test_vcr.py | 15 +++++++++++++++ vcr/cassette.py | 2 ++ 2 files changed, 17 insertions(+) diff --git a/tests/unit/test_vcr.py b/tests/unit/test_vcr.py index 92c85ab..297595d 100644 --- a/tests/unit/test_vcr.py +++ b/tests/unit/test_vcr.py @@ -113,6 +113,21 @@ def test_vcr_before_record_response_iterable(): assert mock_filter.call_count == 1 +def test_before_record_response_as_filter(): + request = Request('GET', '/', '', {}) + response = object() # just can't be None + + # Prevent actually saving the cassette + with mock.patch('vcr.cassette.save_cassette'): + + filter_all = mock.Mock(return_value=None) + vcr = VCR(before_record_response=filter_all) + with vcr.use_cassette('test') as cassette: + cassette.append(request, response) + assert cassette.data == []e + assert not cassette.dirty + + def test_vcr_path_transformer(): # Regression test for #199 diff --git a/vcr/cassette.py b/vcr/cassette.py index db94224..2f5c293 100644 --- a/vcr/cassette.py +++ b/vcr/cassette.py @@ -211,6 +211,8 @@ class Cassette(object): if not request: return response = self._before_record_response(response) + if response is None: + return self.data.append((request, response)) self.dirty = True