tests: Set encoding for mock HTTP responses.

Fixes warnings like ‘UserWarning: Trying to detect encoding from a
tiny portion of (2) byte(s).’

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg 2021-08-24 18:02:59 -07:00
parent e8bb65b188
commit 1e6513136a
2 changed files with 5 additions and 1 deletions

View file

@ -11,5 +11,6 @@
}, },
"response": "invalid key", "response": "invalid key",
"response-headers": { "response-headers": {
"content-type": "text/plain; charset=utf-8"
} }
} }

View file

@ -4,6 +4,7 @@ from typing import Any, Dict, List
from unittest.mock import patch from unittest.mock import patch
import requests import requests
from requests.utils import get_encoding_from_headers
@contextmanager @contextmanager
@ -25,11 +26,13 @@ def mock_http_conversation(http_data: Dict[str, Any]) -> Any:
response headers. response headers.
""" """
mock_result = requests.Response() mock_result = requests.Response()
mock_result.status_code = http_headers.pop("status", 200)
mock_result.headers.update(http_headers)
mock_result.encoding = get_encoding_from_headers(mock_result.headers)
if is_raw_response: if is_raw_response:
mock_result._content = http_response.encode() # type: ignore # This modifies a "hidden" attribute. mock_result._content = http_response.encode() # type: ignore # This modifies a "hidden" attribute.
else: else:
mock_result._content = json.dumps(http_response).encode() mock_result._content = json.dumps(http_response).encode()
mock_result.status_code = http_headers.get("status", 200)
return mock_result return mock_result
def assert_called_with_fields( def assert_called_with_fields(