1
0
mirror of https://github.com/kevin1024/vcrpy.git synced 2025-12-08 16:53:23 +00:00

matchers.py: Support transforming the request body multiple times

This commit is contained in:
Sebastian Pipping
2023-07-08 01:06:17 +02:00
parent 4f70152e7c
commit e35205c5c8

View File

@@ -49,11 +49,17 @@ def raw_body(r1, r2):
def body(r1, r2):
transformer = _get_transformer(r1)
r2_transformer = _get_transformer(r2)
if transformer != r2_transformer:
transformer = _identity
if transformer(read_body(r1)) != transformer(read_body(r2)):
transformers = list(_get_transformers(r1))
if transformers != list(_get_transformers(r2)):
transformers = []
b1 = read_body(r1)
b2 = read_body(r2)
for transform in transformers:
b1 = transform(b1)
b2 = transform(b2)
if b1 != b2:
raise AssertionError
@@ -92,16 +98,10 @@ _checker_transformer_pairs = (
)
def _identity(x):
return x
def _get_transformer(request):
def _get_transformers(request):
for checker, transformer in _checker_transformer_pairs:
if checker(request.headers):
return transformer
else:
return _identity
yield transformer
def requests_match(r1, r2, matchers):