Exemplo n.º 1
0
 def test_error_with_retry_after(self):
     # 503 Service Unavailable may include Retry-After header
     resp_mock = self.mock_response(503, {"Retry-After": "300"})
     try:
         Response(resp_mock, mock.MagicMock())
     except BaseHTTPError as e:
         self.assertIn("retry-after", e.headers)
         self.assertEqual(e.headers["retry-after"], "300")
     else:
         # We should have got an exception
         self.fail("HTTP Status 503 response didn't raised an exception")
Exemplo n.º 2
0
    def test_gzip_encoding(self):
        original_data = 'foo bar ponies, wooo gzip'

        if PY3:
            from io import BytesIO
            string_io = BytesIO()
        else:
            string_io = StringIO()

        stream = gzip.GzipFile(fileobj=string_io, mode='w')
        stream.write(b(original_data))
        stream.close()
        compressed_data = string_io.getvalue()

        self._mock_response.read.return_value = compressed_data
        self._mock_response.getheaders.return_value = \
            {'Content-Encoding': 'gzip'}

        response = Response(response=self._mock_response,
                            connection=self._mock_connection)

        body = response.parse_body()
        self.assertEqual(body, original_data)

        self._mock_response.getheaders.return_value = \
            {'Content-Encoding': 'x-gzip'}

        response = Response(response=self._mock_response,
                            connection=self._mock_connection)

        body = response.parse_body()
        self.assertEqual(body, original_data)
Exemplo n.º 3
0
 def test_error_with_retry_after_http_date_format(self, time_mock):
     retry_after = "Sat, 03 Jan 2009 18:20:05 -0000"
     # 503 Service Unavailable may include Retry-After header
     resp_mock = self.mock_response(503, {"Retry-After": retry_after})
     try:
         Response(resp_mock, mock.MagicMock())
     except BaseHTTPError as e:
         self.assertIn("retry-after", e.headers)
         # HTTP-date got translated to delay-secs
         self.assertEqual(e.headers["retry-after"], "300")
     else:
         # We should have got an exception
         self.fail("HTTP Status 503 response didn't raised an exception")
Exemplo n.º 4
0
 def test_rate_limit_response(self):
     resp_mock = self.mock_response(429, {"Retry-After": "120"})
     try:
         Response(resp_mock, mock.MagicMock())
     except RateLimitReachedError as e:
         self.assertEqual(e.retry_after, 120)
     except Exception:
         # We should have got a RateLimitReachedError
         self.fail(
             "Catched exception should have been RateLimitReachedError")
     else:
         # We should have got an exception
         self.fail("HTTP Status 429 response didn't raised an exception")
Exemplo n.º 5
0
    def test_rate_limit_error(self):
        sock = Mock()
        con = Connection()

        try:
            with patch('libcloud.utils.py3.httplib.HTTPResponse.getheaders',
                       MagicMock(return_value=CONFLICT_RESPONSE_STATUS)):
                with patch(
                        'libcloud.utils.py3.httplib.HTTPResponse._read_status',
                        MagicMock(return_value=SIMPLE_RESPONSE_STATUS)):
                    with tempfile.TemporaryFile(mode='w+b') as f:
                        f.write('HTTP/1.1 429 CONFLICT\n'.encode())
                        f.flush()
                        sock.makefile = Mock(return_value=f)
                        mock_obj = httplib.HTTPResponse(sock)
                        mock_obj.begin()
                        Response(mock_obj, con)
        except RateLimitReachedError:
            pass
        except Exception:
            self.fail('Failed to raise Rate Limit exception')
Exemplo n.º 6
0
    def test_deflate_encoding(self):
        original_data = 'foo bar ponies, wooo zlib'
        compressed_data = zlib.compress(b(original_data))

        self._mock_response.read.return_value = compressed_data
        self._mock_response.getheaders.return_value = \
            {'Content-Encoding': 'deflate'}

        response = Response(response=self._mock_response,
                            connection=self._mock_connection)

        body = response.parse_body()
        self.assertEqual(body, original_data)

        self._mock_response.getheaders.return_value = \
            {'Content-Encoding': 'zlib'}

        response = Response(response=self._mock_response,
                            connection=self._mock_connection)

        body = response.parse_body()
        self.assertEqual(body, original_data)
Exemplo n.º 7
0
 def test_base_response(self):
     Response(MockResponse(status=200, body='foo'), ConnectionKey('foo'))
Exemplo n.º 8
0
def make_response(status=200, headers={}, connection=None):
    response = requests.Response()
    response.status_code = status
    response.headers = headers
    return Response(response, connection)
Exemplo n.º 9
0
 def test_base_response(self):
     Response(MockResponse(status=200, body='foo'))