From 35bd1bd1b451d6f808185a0a4a4d129e09e282d5 Mon Sep 17 00:00:00 2001 From: mayureshsonawane17 Date: Mon, 5 Oct 2026 15:28:17 +0530 Subject: [PATCH] fix: preserve falsy scalar JSON primitives in json_params_matcher (#834) --- responses/matchers.py | 2 +- responses/tests/test_matchers.py | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/responses/matchers.py b/responses/matchers.py index 15df1884..552f98f2 100644 --- a/responses/matchers.py +++ b/responses/matchers.py @@ -135,7 +135,7 @@ def json_params_matcher( def match(request: PreparedRequest) -> Tuple[bool, str]: reason = "" request_body = request.body - json_params = (params or {}) if not isinstance(params, list) else params + json_params = {} if params is None else params try: if isinstance(request.body, bytes): try: diff --git a/responses/tests/test_matchers.py b/responses/tests/test_matchers.py index 4f67810c..e3c09a47 100644 --- a/responses/tests/test_matchers.py +++ b/responses/tests/test_matchers.py @@ -272,6 +272,23 @@ def test_json_params_matcher_body_is_gzipped(): assert result == (True, "") +@pytest.mark.parametrize( + ("param", "body_str"), + [ + (0, "0"), + (False, "false"), + ("", '""'), + (0.0, "0.0"), + (True, "true"), + ("hello", '"hello"'), + ], +) +def test_json_params_matcher_primitives(param, body_str): + mock_request = Mock(body=body_str) + result = matchers.json_params_matcher(param)(mock_request) + assert result == (True, "") + + def test_urlencoded_params_matcher_blank(): @responses.activate def run():