45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
"""
|
|
VCR.py configuration for recording/replaying HTTP interactions.
|
|
|
|
This allows tests to run fast by replaying recorded API responses instead of
|
|
making real HTTP calls every time.
|
|
"""
|
|
|
|
import vcr
|
|
|
|
# Configure VCR instance
|
|
my_vcr = vcr.VCR(
|
|
# Store cassettes in tests/cassettes/ directory
|
|
cassette_library_dir="tests/cassettes",
|
|
# Record mode: once = record once, then replay
|
|
# Use 'new_episodes' to record new interactions but replay existing ones
|
|
record_mode="once",
|
|
# Match requests by method and URI
|
|
match_on=["method", "scheme", "host", "port", "path", "query"],
|
|
# Filter out sensitive data from recordings
|
|
filter_headers=["authorization", "x-api-key"],
|
|
# Decode compressed responses for better diffs
|
|
decode_compressed_response=True,
|
|
# Serialize as YAML for human-readable diffs
|
|
serializer="yaml",
|
|
# Path transformer to organize cassettes
|
|
path_transformer=vcr.VCR.ensure_suffix(".yaml"),
|
|
)
|
|
|
|
|
|
def scrub_request(request):
|
|
"""Remove sensitive data from recorded requests."""
|
|
# Add any request scrubbing logic here
|
|
return request
|
|
|
|
|
|
def scrub_response(response):
|
|
"""Remove sensitive data from recorded responses."""
|
|
# Add any response scrubbing logic here
|
|
return response
|
|
|
|
|
|
# Register request/response scrubbers
|
|
my_vcr.before_record_request = scrub_request
|
|
my_vcr.before_record_response = scrub_response
|