def test_interactions_cache(path): Cassette._cache = {} path.write('\n'.join([ 'interactions:', '- request:', ' body: request body', ' endpoint: foo', ' headers: headers', ' serviceName: bar', ' response:', ' body: response body', ' headers: headers', ' code: 0', 'version: 1', ])) assert len(Cassette._cache) == 0 with Cassette(str(path)) as cass: assert len(Cassette._cache) == 1 mock_serializer = Mock() with Cassette(str(path), serializer=mock_serializer) as cass: assert not mock_serializer.load.called assert len(Cassette._cache) == 1 assert len(cass._available) == 1
def test_record_into_nonexistent_directory(tmpdir): path = tmpdir.join('somedir/data.yaml') request = requests.example() response = responses.example() with Cassette(str(path)) as cass: cass.record(request, response) with Cassette(str(path)) as cass: assert cass.can_replay(request) assert cass.replay(request) == response
def test_record_mode_none(path): req = requests.example() res = responses.example() with Cassette(str(path), record_mode=RecordMode.NONE) as cass: with pytest.raises(AssertionError): cass.record(req, res) # save and try again with Cassette(str(path)) as cass: cass.record(req, res) with Cassette(str(path), record_mode=RecordMode.NONE) as cass: assert res == cass.replay(req)
def test_record_same(path): request = requests.example() response1 = responses.example() response2 = responses.example() with Cassette(str(path)) as cass: cass.record(request, response1) cass.record(request, response2) with Cassette(str(path)) as cass: assert cass.replay(request) == response1 assert cass.replay(request) == response2 assert cass.play_count == 2
def test_does_not_forget_on_new_interactions(path): req1 = requests.example() res1 = responses.example() with Cassette(str(path)) as cass: cass.record(req1, res1) req2 = requests.example() res2 = responses.example() with Cassette(str(path), record_mode=RecordMode.NEW_EPISODES) as cass: cass.record(req2, res2) with Cassette(str(path)) as cass: assert res1 == cass.replay(req1) assert res2 == cass.replay(req2)
def test_replay_unknown(path): request = requests.example() with Cassette(str(path)) as cass: cass.record(requests.example(), responses.example()) assert not cass.can_replay(request) with pytest.raises(RequestNotFoundError): cass.replay(request)
def test_save_and_replay(path): request = requests.example() response = responses.example() with Cassette(str(path)) as cass: cass.record(request, response) # Can't replay until saved. assert not cass.can_replay(request) with Cassette(str(path)) as cass: assert cass.can_replay(request) assert cass.replay(request) == response assert cass.play_count == 1 with pytest.raises(RequestNotFoundError): # a single request can only be played once in a given session. cass.replay(request)
def test_record_mode_all(path): req = requests.example() res = responses.example() res2 = responses.example() with Cassette(str(path)) as cass: cass.record(req, res) with Cassette(str(path), record_mode=RecordMode.ALL) as cass: assert not cass.can_replay(req) with pytest.raises(AssertionError): cass.replay(req) with Cassette(str(path), record_mode=RecordMode.ALL) as cass: cass.record(req, res2) with Cassette(str(path)) as cass: assert res2 == cass.replay(req)
def test_unsupported_version(path): path.write('\n'.join([ 'interactions:', '- request:', ' body: request body', ' endpoint: foo', ' headers: headers', ' service: bar', ' response:', ' body: response body', ' headers: headers', ' status: 0', 'version: 2', ])) with pytest.raises(UnsupportedVersionError): Cassette(str(path))
def test_empty_file(path): path.write('') cass = Cassette(str(path)) assert len(cass.data) == 0
def test_invalid_matcher(path): with pytest.raises(KeyError): Cassette(str(path), matchers=('serviceName', 'not a matcher'))
def test_record_mode_invalid(path): with pytest.raises(VCRError): Cassette(str(path), record_mode='not_valid')
def test_save_without_recording(path): cass = Cassette(str(path)) cass.save() assert not path.check()
def test_path_does_not_exist(path): cass = Cassette(str(path)) assert len(cass.data) == 0