# -*- coding: utf-8 -*- import urllib3 from io import BytesIO from mock import MagicMock, Mock from drfreverseproxy.views import ProxyView DEFAULT_BODY_CONTENT = u'áéíóú'.encode('utf-8') URLOPEN = 'urllib3.PoolManager.urlopen' class CustomProxyView(ProxyView): upstream = "http://www.example.com" diazo_rules = None def get_urlopen_mock(body=DEFAULT_BODY_CONTENT, headers=None, status=200): mockHttpResponse = Mock(name='httplib.HTTPResponse') headers = urllib3.response.HTTPHeaderDict(headers) if not hasattr(body, 'read'): body = BytesIO(body) else: body.seek(0) urllib3_response = urllib3.HTTPResponse(body, headers, status, preload_content=False, original_response=mockHttpResponse) return MagicMock(return_value=urllib3_response) class MockFile(): def __init__(self, content, read_size=4): self.content = content self.mock_file = BytesIO(content) self.mock_read_size = read_size def closed(self): return self.mock_file.closed def close(self): self.mock_file.close() def read(self, size=-1): return self.mock_file.read(self.mock_read_size) def seek(self, size): return self.mock_file.seek(size)