def test_RawResponse_class_read_method(self): """ Test that the RawResponse class includes a response property which exhibits the same properties and methods as httplib.HTTPResponse for backward compat <1.5.0 """ TEST_DATA = '1234abcd' conn = Connection(host='mock.com', port=80, secure=False) conn.connect() with requests_mock.Mocker() as m: m.register_uri('GET', 'http://mock.com/raw_data', text=TEST_DATA, headers={'test': 'value'}) response = conn.request('/raw_data', raw=True) data = response.response.read() self.assertEqual(data, TEST_DATA) header_value = response.response.getheader('test') self.assertEqual(header_value, 'value') headers = response.response.getheaders() self.assertEqual(headers, [('test', 'value')]) self.assertEqual(response.response.status, 200)
def test_secure_by_default(self): """ Test that the connection class will default to secure (https) """ conn = Connection(host='localhost', port=8081) conn.connect() self.assertEqual(conn.connection.host, 'https://localhost:8081')
def test_RawResponse_class_read_method(self): """ Test that the RawResponse class includes a response property which exhibits the same properties and methods as httplib.HTTPResponse for backward compat <1.5.0 """ TEST_DATA = "1234abcd" conn = Connection(host="mock.com", port=80, secure=False) conn.connect() with requests_mock.Mocker() as m: m.register_uri( "GET", "http://mock.com/raw_data", text=TEST_DATA, headers={"test": "value"}, ) response = conn.request("/raw_data", raw=True) data = response.response.read() self.assertEqual(data, TEST_DATA) header_value = response.response.getheader("test") self.assertEqual(header_value, "value") headers = response.response.getheaders() self.assertEqual(headers, [("test", "value")]) self.assertEqual(response.response.status, 200)
def test_connection_url_merging(self): """ Test that the connection class will parse URLs correctly """ conn = Connection(url="http://test.com/") conn.connect() self.assertEqual(conn.connection.host, "http://test.com") with requests_mock.mock() as m: m.get("http://test.com/test", text="data") response = conn.request("/test") self.assertEqual(response.body, "data")
def test_connection_url_merging(self): """ Test that the connection class will parse URLs correctly """ conn = Connection(url='http://test.com/') conn.connect() self.assertEqual(conn.connection.host, 'http://test.com') with requests_mock.mock() as m: m.get('http://test.com/test', text='data') response = conn.request('/test') self.assertEqual(response.body, 'data')
def test_insecure_connection_unusual_port(self): """ Test that the connection will allow unusual ports and insecure schemes """ conn = Connection(secure=False, host='localhost', port=8081) conn.connect() self.assertEqual(conn.connection.host, 'http://localhost:8081') conn2 = Connection(url='http://localhost:8081') conn2.connect() self.assertEqual(conn2.connection.host, 'http://localhost:8081')
def test_secure_connection_unusual_port(self): """ Test that the connection class will default to secure (https) even when the port is an unusual (non 443, 80) number """ conn = Connection(secure=True, host='localhost', port=8081) conn.connect() self.assertEqual(conn.connection.host, 'https://localhost:8081') conn2 = Connection(url='https://localhost:8081') conn2.connect() self.assertEqual(conn2.connection.host, 'https://localhost:8081')
def test_implicit_port(self): """ Test that the port is not included in the URL if the protocol implies the port, e.g. http implies 80 """ conn = Connection(secure=True, host='localhost', port=443) conn.connect() self.assertEqual(conn.connection.host, 'https://localhost') conn2 = Connection(secure=False, host='localhost', port=80) conn2.connect() self.assertEqual(conn2.connection.host, 'http://localhost')
def test_connect_with_prefix(self): """ Test that a connection with a base path (e.g. /v1/) will add the base path to requests """ conn = Connection(url='http://test.com/') conn.connect() conn.request_path = '/v1' self.assertEqual(conn.connection.host, 'http://test.com') with requests_mock.mock() as m: m.get('http://test.com/v1/test', text='data') response = conn.request('/test') self.assertEqual(response.body, 'data')
def test_debug_log_class_handles_request(self): with StringIO() as fh: libcloud.enable_debug(fh) conn = Connection(url='http://test.com/') conn.connect() self.assertEqual(conn.connection.host, 'http://test.com') with requests_mock.mock() as m: m.get('http://test.com/test', text='data') conn.request('/test') log = fh.getvalue() self.assertTrue(isinstance(conn.connection, LoggingConnection)) self.assertIn('-i -X GET', log) self.assertIn('data', log)
def test_debug_log_class_handles_request(self): with StringIO() as fh: libcloud.enable_debug(fh) conn = Connection(url="http://test.com/") conn.connect() self.assertEqual(conn.connection.host, "http://test.com") with requests_mock.mock() as m: m.get("http://test.com/test", text="data") conn.request("/test") log = fh.getvalue() self.assertTrue(isinstance(conn.connection, LoggingConnection)) self.assertIn("-i -X GET", log) self.assertIn("data", log)
def test_connect_with_prefix(self): """ Test that a connection with a base path (e.g. /v1/) will add the base path to requests """ conn = Connection(url="http://test.com/") conn.connect() conn.request_path = "/v1" self.assertEqual(conn.connection.host, "http://test.com") with requests_mock.mock() as m: m.get("http://test.com/v1/test", text="data") response = conn.request("/test") self.assertEqual(response.body, "data")
def test_debug_log_class_handles_request_with_compression(self): request = zlib.compress(b'data') with StringIO() as fh: libcloud.enable_debug(fh) conn = Connection(url='http://test.com/') conn.connect() self.assertEqual(conn.connection.host, 'http://test.com') with requests_mock.mock() as m: m.get('http://test.com/test', content=request, headers={'content-encoding': 'zlib'}) conn.request('/test') log = fh.getvalue() self.assertTrue(isinstance(conn.connection, LoggingConnection)) self.assertIn('-i -X GET', log)
def test_debug_log_class_handles_request_with_compression(self): request = zlib.compress(b"data") with StringIO() as fh: libcloud.enable_debug(fh) conn = Connection(url="http://test.com/") conn.connect() self.assertEqual(conn.connection.host, "http://test.com") with requests_mock.mock() as m: m.get( "http://test.com/test", content=request, headers={"content-encoding": "zlib"}, ) conn.request("/test") log = fh.getvalue() self.assertTrue(isinstance(conn.connection, LoggingConnection)) self.assertIn("-i -X GET", log)
def test_debug_method_uses_log_class(self): with StringIO() as fh: libcloud.enable_debug(fh) conn = Connection(timeout=10) conn.connect() self.assertTrue(isinstance(conn.connection, LoggingConnection))