diff --git a/requests_mock/compat.py b/requests_mock/compat.py index 1f23daf..7e35b4e 100644 --- a/requests_mock/compat.py +++ b/requests_mock/compat.py @@ -20,31 +20,41 @@ def _versiontuple(v): _requests_version = _versiontuple(requests.__version__) -if _requests_version < (2, 3): +class _FakeHTTPMessage(object): + def __init__(self, headers): + self.headers = headers + + def getheaders(self, name): + try: + return [self.headers[name]] + except KeyError: + return [] + + def get_all(self, name, failobj=None): + # python 3 only, overrides email.message.Message.get_all + try: + return [self.headers[name]] + except KeyError: + return failobj + + +class _FakeHTTPResponse(object): + + def __init__(self, headers): + self.msg = _FakeHTTPMessage(headers) + + def isclosed(self): + # Don't let urllib try to close me + return False + + +if _requests_version < (2, 3): # NOTE(jamielennox): There is a problem with requests < 2.3.0 such that it # needs a httplib message for use with cookie extraction. It has been fixed # but it is needed until we can rely on a recent enough requests version. - class _FakeHTTPMessage(object): - - def getheaders(self, name): - return None - - def get_all(self, name, failobj=None): - # python 3 only, overrides email.message.Message.get_all - return failobj - - class _FakeHTTPResponse(object): - - def __init__(self): - self.msg = _FakeHTTPMessage() - - def isclosed(self): - # Don't let urllib try to close me - return False - - _fake_http_response = _FakeHTTPResponse() + _fake_http_response = _FakeHTTPResponse({}) else: _fake_http_response = None