Skip to content

Commit

Permalink
matchers.py: Support transforming the request body multiple times
Browse files Browse the repository at this point in the history
  • Loading branch information
hartwork committed Jul 7, 2023
1 parent 4f70152 commit e35205c
Showing 1 changed file with 13 additions and 13 deletions.
26 changes: 13 additions & 13 deletions vcr/matchers.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down Expand Up @@ -92,16 +98,10 @@ def _transform_json(body):
)


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):
Expand Down

0 comments on commit e35205c

Please sign in to comment.