Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions httmock.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,14 @@ def response(status_code=200, content='', headers=None, reason=None, elapsed=0,
request=None, stream=False, http_vsn=11):
res = requests.Response()
res.status_code = status_code
res.headers = structures.CaseInsensitiveDict(headers or {})
res.encoding = utils.get_encoding_from_headers(res.headers)
if isinstance(content, (dict, list)):
content = json.dumps(content).encode('utf-8')
content = json.dumps(content).encode(res.encoding or 'utf-8')
if isinstance(content, text_type):
content = content.encode('utf-8')
content = content.encode(res.encoding or 'utf-8')
res._content = content
res._content_consumed = content
res.headers = structures.CaseInsensitiveDict(headers or {})
res.encoding = utils.get_encoding_from_headers(res.headers)
res.reason = reason
res.elapsed = datetime.timedelta(elapsed)
res.request = request
Expand Down
16 changes: 16 additions & 0 deletions tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,15 @@ def charset_utf8(url, request):
}
}

@all_requests
def charset_ISO88591(url, request):
return {
'content': u'<div>google</div>'.encode('ISO-8859-1'),
'status_code': 200,
'headers': {
'Content-Type': 'text/html; charset=ISO-8859-1'
}
}

def any_mock(url, request):
return 'Hello from %s' % (url.netloc,)
Expand Down Expand Up @@ -137,6 +146,13 @@ def test_encoding_from_contenttype(self):
self.assertEqual(r.text, u'Motörhead')
self.assertEqual(r.content, r.text.encode('utf-8'))

def test_encoding_from_non_utf8_contenttype(self):
with HTTMock(charset_ISO88591):
r = requests.get('http://google.com/')
self.assertEqual(r.encoding, 'ISO-8859-1')
self.assertEqual(r.text, u'<div>google</div>')
self.assertEqual(r.content, r.text.encode('ISO-8859-1'))

def test_has_raw_version(self):
with HTTMock(any_mock):
r = requests.get('http://example.com')
Expand Down