From e35205c5c88e380fbce58cac4af89da57b52e196 Mon Sep 17 00:00:00 2001 From: Sebastian Pipping Date: Sat, 8 Jul 2023 01:06:17 +0200 Subject: [PATCH] matchers.py: Support transforming the request body multiple times --- vcr/matchers.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/vcr/matchers.py b/vcr/matchers.py index 98395b6..f397e72 100644 --- a/vcr/matchers.py +++ b/vcr/matchers.py @@ -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):