diff --git a/jira/resilientsession.py b/jira/resilientsession.py index 039b449ed..fa138a36f 100644 --- a/jira/resilientsession.py +++ b/jira/resilientsession.py @@ -159,7 +159,7 @@ def _jira_prepare(self, **original_kwargs) -> dict: request_headers.update(original_kwargs.get("headers", {})) prepared_kwargs["headers"] = request_headers - data = original_kwargs.get("data", {}) + data = original_kwargs.get("data", None) if isinstance(data, dict): # mypy ensures we don't do this, # but for people subclassing we should preserve old behaviour diff --git a/tests/test_resilientsession.py b/tests/test_resilientsession.py index 22e875228..9191bcb0b 100644 --- a/tests/test_resilientsession.py +++ b/tests/test_resilientsession.py @@ -107,3 +107,22 @@ def test_passthrough_class(): # WHEN: the dict of request args are prepared # THEN: The exact same dict is returned assert passthrough_class.prepare(my_kwargs) is my_kwargs + + +@patch("requests.Session.request") +def test_unspecified_body_remains_unspecified(mocked_request_method: Mock): + # Disable retries for this test. + session = jira.resilientsession.ResilientSession(max_retries=0) + # Data is not specified here. + session.get(url="mocked_url") + kwargs = mocked_request_method.call_args.kwargs + assert "data" not in kwargs + + +@patch("requests.Session.request") +def test_nonempty_body_is_forwarded(mocked_request_method: Mock): + # Disable retries for this test. + session = jira.resilientsession.ResilientSession(max_retries=0) + session.get(url="mocked_url", data={"some": "fake-data"}) + kwargs = mocked_request_method.call_args.kwargs + assert kwargs["data"] == '{"some": "fake-data"}'