def test_read_partial(self): txt = b"This is a test of the emergency broadcasting system." response = binding.ResponseReader(BytesIO(txt)) self.assertEqual(response.peek(5), txt[:5]) self.assertFalse(response.empty) self.assertEqual(response.read(), txt) self.assertTrue(response.empty) self.assertEqual(response.read(), b'')
def test_read_past_end(self): txt = b"abcd" response = binding.ResponseReader(BytesIO(txt)) self.assertFalse(response.empty) self.assertEqual(response.peek(10), txt) self.assertEqual(response.read(10), txt) self.assertTrue(response.empty) self.assertEqual(response.peek(10), b"") self.assertEqual(response.read(10), b"")
def test_empty(self): response = binding.ResponseReader(BytesIO(b"")) self.assertTrue(response.empty) self.assertEqual(response.peek(10), b"") self.assertEqual(response.read(10), b"") arr = bytearray(10) self.assertEqual(response.readinto(arr), 0) self.assertEqual(arr, bytearray(10)) self.assertTrue(response.empty)
def test_readinto_bytearray(self): txt = b"Checking readinto works as expected" response = binding.ResponseReader(BytesIO(txt)) arr = bytearray(10) self.assertEqual(response.readinto(arr), 10) self.assertEqual(arr[:10], b"Checking r") self.assertEqual(response.readinto(arr), 10) self.assertEqual(arr[:10], b"eadinto wo") self.assertEqual(response.readinto(arr), 10) self.assertEqual(arr[:10], b"rks as exp") self.assertEqual(response.readinto(arr), 5) self.assertEqual(arr[:5], b"ected") self.assertTrue(response.empty)
def request(url, message, **kwargs): # Split the URL into constituent components. scheme, host, port, path = _spliturl(url) body = message.get("body", "") # Setup the default headers. head = { "Content-Length": str(len(body)), "Host": host, "User-Agent": "http.py/1.0", "Accept": "*/*", } # Add in the passed in headers. for key, value in message["headers"]: head[key] = value # Note the HTTP method we're using, defaulting # to `GET`. method = message.get("method", "GET") # Note that we do not support proxies in this example # If running Python 2.7.9+, disable SSL certificate validation if sys.version_info >= (2, 7, 9): unverified_ssl_handler = urllib2.HTTPSHandler( context=ssl._create_unverified_context()) opener = urllib2.build_opener(unverified_ssl_handler) else: opener = urllib2.build_opener() # Unfortunately, we need to use the hack of # "overriding" `request.get_method` to specify # a method other than `GET` or `POST`. request = urllib2.Request(url, body, head) request.get_method = lambda: method # Make the request and get the response response = None try: response = opener.open(request) except Exception as e: response = e # Normalize the response to something the SDK expects, and # return it. return { 'status': response.code, 'reason': response.msg, 'headers': response.info().dict, 'body': binding.ResponseReader(response) }
def test_readinto_memoryview(self): import sys if sys.version_info < (2, 7, 0): return # memoryview is new to Python 2.7 txt = b"Checking readinto works as expected" response = binding.ResponseReader(BytesIO(txt)) arr = bytearray(10) mv = memoryview(arr) self.assertEqual(response.readinto(mv), 10) self.assertEqual(arr[:10], b"Checking r") self.assertEqual(response.readinto(mv), 10) self.assertEqual(arr[:10], b"eadinto wo") self.assertEqual(response.readinto(mv), 10) self.assertEqual(arr[:10], b"rks as exp") self.assertEqual(response.readinto(mv), 5) self.assertEqual(arr[:5], b"ected") self.assertTrue(response.empty)
def make_response_record(body, status=200): class _MocBufReader(object): def __init__(self, buf): if isinstance(buf, str): self._buf = buf.encode("utf-8") else: self._buf = buf def read(self, size=None): return self._buf return record({ "body": binding.ResponseReader(_MocBufReader(body)), "status": status, "reason": "", "headers": None, })
def test_readable(self): txt = "abcd" response = binding.ResponseReader(six.StringIO(txt)) self.assertTrue(response.readable())
def test_empty(self): response = binding.ResponseReader(StringIO("")) self.assertTrue(response.empty) self.assertEqual(response.peek(10), "") self.assertEqual(response.read(10), "") self.assertTrue(response.empty)