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():