class GoogleBaseConnectionTest(GoogleTestCase): """ Tests for GoogleBaseConnection """ def setUp(self): GoogleBaseAuthConnection.conn_class = GoogleAuthMockHttp self.mock_scopes = ['https://www.googleapis.com/auth/foo'] kwargs = {'scopes': self.mock_scopes, 'auth_type': GoogleAuthType.IA} self.conn = GoogleBaseConnection(*GCE_PARAMS, **kwargs) def test_add_default_headers(self): old_headers = {} new_expected_headers = {'Content-Type': 'application/json', 'Host': 'www.googleapis.com'} new_headers = self.conn.add_default_headers(old_headers) self.assertEqual(new_headers, new_expected_headers) def test_pre_connect_hook(self): old_params = {} old_headers = {} auth_str = '%s %s' % (STUB_TOKEN_FROM_FILE['token_type'], STUB_TOKEN_FROM_FILE['access_token']) new_expected_params = {} new_expected_headers = {'Authorization': auth_str} new_params, new_headers = self.conn.pre_connect_hook(old_params, old_headers) self.assertEqual(new_params, new_expected_params) self.assertEqual(new_headers, new_expected_headers) def test_encode_data(self): data = {'key': 'value'} json_data = '{"key": "value"}' encoded_data = self.conn.encode_data(data) self.assertEqual(encoded_data, json_data) def test_has_completed(self): body1 = {"endTime": "2013-06-26T10:05:07.630-07:00", "id": "3681664092089171723", "kind": "compute#operation", "status": "DONE", "targetId": "16211908079305042870"} body2 = {"endTime": "2013-06-26T10:05:07.630-07:00", "id": "3681664092089171723", "kind": "compute#operation", "status": "RUNNING", "targetId": "16211908079305042870"} response1 = MockJsonResponse(body1) response2 = MockJsonResponse(body2) self.assertTrue(self.conn.has_completed(response1)) self.assertFalse(self.conn.has_completed(response2)) def test_get_poll_request_kwargs(self): body = {"endTime": "2013-06-26T10:05:07.630-07:00", "id": "3681664092089171723", "kind": "compute#operation", "selfLink": "https://www.googleapis.com/operations-test"} response = MockJsonResponse(body) expected_kwargs = {'action': 'https://www.googleapis.com/operations-test'} kwargs = self.conn.get_poll_request_kwargs(response, None, {}) self.assertEqual(kwargs, expected_kwargs) def test_morph_action_hook(self): self.conn.request_path = '/compute/apiver/project/project-name' action1 = ('https://www.googleapis.com/compute/apiver/project' '/project-name/instances') action2 = '/instances' expected_request = '/compute/apiver/project/project-name/instances' request1 = self.conn.morph_action_hook(action1) request2 = self.conn.morph_action_hook(action2) self.assertEqual(request1, expected_request) self.assertEqual(request2, expected_request)
class GoogleBaseConnectionTest(LibcloudTestCase): """ Tests for GoogleBaseConnection """ GoogleBaseConnection._get_token_info_from_file = lambda x: None GoogleBaseConnection._write_token_info_to_file = lambda x: None GoogleInstalledAppAuthConnection.get_code = lambda x: '1234' GoogleServiceAcctAuthConnection.get_new_token = \ lambda x: x._token_request({}) GoogleGCEServiceAcctAuthConnection.get_new_token = \ lambda x: x._token_request({}) GoogleBaseConnection._now = lambda x: datetime.datetime( 2013, 6, 26, 19, 0, 0) def setUp(self): GoogleBaseAuthConnection.conn_classes = (GoogleAuthMockHttp, GoogleAuthMockHttp) self.mock_scopes = ['https://www.googleapis.com/auth/foo'] kwargs = {'scopes': self.mock_scopes, 'auth_type': 'IA'} self.conn = GoogleBaseConnection(*GCE_PARAMS, **kwargs) def test_auth_type(self): self.assertRaises(GoogleAuthError, GoogleBaseConnection, *GCE_PARAMS, **{'auth_type': 'XX'}) kwargs = {'scopes': self.mock_scopes} if SHA256: kwargs['auth_type'] = 'SA' conn1 = GoogleBaseConnection(*GCE_PARAMS_PEM_KEY, **kwargs) self.assertTrue( isinstance(conn1.auth_conn, GoogleServiceAcctAuthConnection)) conn1 = GoogleBaseConnection(*GCE_PARAMS_JSON_KEY, **kwargs) self.assertTrue( isinstance(conn1.auth_conn, GoogleServiceAcctAuthConnection)) conn1 = GoogleBaseConnection(*GCE_PARAMS_KEY, **kwargs) self.assertTrue( isinstance(conn1.auth_conn, GoogleServiceAcctAuthConnection)) kwargs['auth_type'] = 'IA' conn2 = GoogleBaseConnection(*GCE_PARAMS_IA, **kwargs) self.assertTrue( isinstance(conn2.auth_conn, GoogleInstalledAppAuthConnection)) kwargs['auth_type'] = 'GCE' conn3 = GoogleBaseConnection(*GCE_PARAMS_GCE, **kwargs) self.assertTrue( isinstance(conn3.auth_conn, GoogleGCEServiceAcctAuthConnection)) def test_add_default_headers(self): old_headers = {} new_expected_headers = { 'Content-Type': 'application/json', 'Host': 'www.googleapis.com' } new_headers = self.conn.add_default_headers(old_headers) self.assertEqual(new_headers, new_expected_headers) def test_pre_connect_hook(self): old_params = {} old_headers = {} new_expected_params = {} new_expected_headers = {'Authorization': 'Bearer installedapp'} new_params, new_headers = self.conn.pre_connect_hook( old_params, old_headers) self.assertEqual(new_params, new_expected_params) self.assertEqual(new_headers, new_expected_headers) def test_encode_data(self): data = {'key': 'value'} json_data = '{"key": "value"}' encoded_data = self.conn.encode_data(data) self.assertEqual(encoded_data, json_data) def test_has_completed(self): body1 = { "endTime": "2013-06-26T10:05:07.630-07:00", "id": "3681664092089171723", "kind": "compute#operation", "status": "DONE", "targetId": "16211908079305042870" } body2 = { "endTime": "2013-06-26T10:05:07.630-07:00", "id": "3681664092089171723", "kind": "compute#operation", "status": "RUNNING", "targetId": "16211908079305042870" } response1 = MockJsonResponse(body1) response2 = MockJsonResponse(body2) self.assertTrue(self.conn.has_completed(response1)) self.assertFalse(self.conn.has_completed(response2)) def test_get_poll_request_kwargs(self): body = { "endTime": "2013-06-26T10:05:07.630-07:00", "id": "3681664092089171723", "kind": "compute#operation", "selfLink": "https://www.googleapis.com/operations-test" } response = MockJsonResponse(body) expected_kwargs = { 'action': 'https://www.googleapis.com/operations-test' } kwargs = self.conn.get_poll_request_kwargs(response, None, {}) self.assertEqual(kwargs, expected_kwargs) def test_morph_action_hook(self): self.conn.request_path = '/compute/apiver/project/project-name' action1 = ('https://www.googleapis.com/compute/apiver/project' '/project-name/instances') action2 = '/instances' expected_request = '/compute/apiver/project/project-name/instances' request1 = self.conn.morph_action_hook(action1) request2 = self.conn.morph_action_hook(action2) self.assertEqual(request1, expected_request) self.assertEqual(request2, expected_request)
class GoogleBaseConnectionTest(LibcloudTestCase): """ Tests for GoogleBaseConnection """ GoogleBaseConnection._get_token_info_from_file = lambda x: None GoogleBaseConnection._write_token_info_to_file = lambda x: None GoogleInstalledAppAuthConnection.get_code = lambda x: '1234' GoogleServiceAcctAuthConnection.get_new_token = \ lambda x: x._token_request({}) GoogleBaseConnection._now = lambda x: datetime.datetime(2013, 6, 26, 19, 0, 0) def setUp(self): GoogleBaseAuthConnection.conn_classes = (GoogleAuthMockHttp, GoogleAuthMockHttp) self.mock_scopes = ['https://www.googleapis.com/auth/foo'] kwargs = {'scopes': self.mock_scopes, 'auth_type': 'IA'} self.conn = GoogleBaseConnection(*GCE_PARAMS, **kwargs) def test_auth_type(self): self.assertRaises(GoogleAuthError, GoogleBaseConnection, *GCE_PARAMS, **{'auth_type': 'XX'}) kwargs = {'scopes': self.mock_scopes} if SHA256: kwargs['auth_type'] = 'SA' conn1 = GoogleBaseConnection(*GCE_PARAMS, **kwargs) self.assertTrue(isinstance(conn1.auth_conn, GoogleServiceAcctAuthConnection)) kwargs['auth_type'] = 'IA' conn2 = GoogleBaseConnection(*GCE_PARAMS, **kwargs) self.assertTrue(isinstance(conn2.auth_conn, GoogleInstalledAppAuthConnection)) def test_add_default_headers(self): old_headers = {} new_expected_headers = {'Content-Type': 'application/json', 'Host': 'www.googleapis.com'} new_headers = self.conn.add_default_headers(old_headers) self.assertEqual(new_headers, new_expected_headers) def test_pre_connect_hook(self): old_params = {} old_headers = {} new_expected_params = {} new_expected_headers = {'Authorization': 'Bearer installedapp'} new_params, new_headers = self.conn.pre_connect_hook(old_params, old_headers) self.assertEqual(new_params, new_expected_params) self.assertEqual(new_headers, new_expected_headers) def test_encode_data(self): data = {'key': 'value'} json_data = '{"key": "value"}' encoded_data = self.conn.encode_data(data) self.assertEqual(encoded_data, json_data) def test_has_completed(self): body1 = {"endTime": "2013-06-26T10:05:07.630-07:00", "id": "3681664092089171723", "kind": "compute#operation", "status": "DONE", "targetId": "16211908079305042870"} body2 = {"endTime": "2013-06-26T10:05:07.630-07:00", "id": "3681664092089171723", "kind": "compute#operation", "status": "RUNNING", "targetId": "16211908079305042870"} response1 = MockJsonResponse(body1) response2 = MockJsonResponse(body2) self.assertTrue(self.conn.has_completed(response1)) self.assertFalse(self.conn.has_completed(response2)) def test_get_poll_request_kwargs(self): body = {"endTime": "2013-06-26T10:05:07.630-07:00", "id": "3681664092089171723", "kind": "compute#operation", "selfLink": "https://www.googleapis.com/operations-test"} response = MockJsonResponse(body) expected_kwargs = {'action': 'https://www.googleapis.com/operations-test'} kwargs = self.conn.get_poll_request_kwargs(response, None, {}) self.assertEqual(kwargs, expected_kwargs) def test_morph_action_hook(self): self.conn.request_path = '/compute/apiver/project/project-name' action1 = ('https://www.googleapis.com/compute/apiver/project' '/project-name/instances') action2 = '/instances' expected_request = '/compute/apiver/project/project-name/instances' request1 = self.conn.morph_action_hook(action1) request2 = self.conn.morph_action_hook(action2) self.assertEqual(request1, expected_request) self.assertEqual(request2, expected_request)
class GoogleBaseConnectionTest(GoogleTestCase): """ Tests for GoogleBaseConnection """ def setUp(self): GoogleBaseAuthConnection.conn_classes = (GoogleAuthMockHttp, GoogleAuthMockHttp) self.mock_scopes = ['https://www.googleapis.com/auth/foo'] kwargs = {'scopes': self.mock_scopes, 'auth_type': GoogleAuthType.IA} self.conn = GoogleBaseConnection(*GCE_PARAMS, **kwargs) def test_auth_type(self): self.assertRaises(GoogleAuthError, GoogleBaseConnection, *GCE_PARAMS, **{'auth_type': 'XX'}) kwargs = {'scopes': self.mock_scopes} if SHA256: kwargs['auth_type'] = GoogleAuthType.SA conn1 = GoogleBaseConnection(*GCE_PARAMS_PEM_KEY, **kwargs) self.assertTrue(isinstance(conn1.oauth2_conn, GoogleServiceAcctAuthConnection)) conn1 = GoogleBaseConnection(*GCE_PARAMS_JSON_KEY, **kwargs) self.assertTrue(isinstance(conn1.oauth2_conn, GoogleServiceAcctAuthConnection)) conn1 = GoogleBaseConnection(*GCE_PARAMS_KEY, **kwargs) self.assertTrue(isinstance(conn1.oauth2_conn, GoogleServiceAcctAuthConnection)) kwargs['auth_type'] = GoogleAuthType.IA conn2 = GoogleBaseConnection(*GCE_PARAMS_IA, **kwargs) self.assertTrue(isinstance(conn2.oauth2_conn, GoogleInstalledAppAuthConnection)) kwargs['auth_type'] = GoogleAuthType.GCE conn3 = GoogleBaseConnection(*GCE_PARAMS_GCE, **kwargs) self.assertTrue(isinstance(conn3.oauth2_conn, GoogleGCEServiceAcctAuthConnection)) kwargs['auth_type'] = GoogleAuthType.GCS_S3 conn4 = GoogleBaseConnection(*GCS_S3_PARAMS, **kwargs) self.assertIsNone(conn4.oauth2_conn) def test_add_default_headers(self): old_headers = {} new_expected_headers = {'Content-Type': 'application/json', 'Host': 'www.googleapis.com'} new_headers = self.conn.add_default_headers(old_headers) self.assertEqual(new_headers, new_expected_headers) def test_pre_connect_hook(self): old_params = {} old_headers = {} auth_str = '%s %s' % (STUB_TOKEN_FROM_FILE['token_type'], STUB_TOKEN_FROM_FILE['access_token']) new_expected_params = {} new_expected_headers = {'Authorization': auth_str} new_params, new_headers = self.conn.pre_connect_hook(old_params, old_headers) self.assertEqual(new_params, new_expected_params) self.assertEqual(new_headers, new_expected_headers) def test_encode_data(self): data = {'key': 'value'} json_data = '{"key": "value"}' encoded_data = self.conn.encode_data(data) self.assertEqual(encoded_data, json_data) def test_has_completed(self): body1 = {"endTime": "2013-06-26T10:05:07.630-07:00", "id": "3681664092089171723", "kind": "compute#operation", "status": "DONE", "targetId": "16211908079305042870"} body2 = {"endTime": "2013-06-26T10:05:07.630-07:00", "id": "3681664092089171723", "kind": "compute#operation", "status": "RUNNING", "targetId": "16211908079305042870"} response1 = MockJsonResponse(body1) response2 = MockJsonResponse(body2) self.assertTrue(self.conn.has_completed(response1)) self.assertFalse(self.conn.has_completed(response2)) def test_get_poll_request_kwargs(self): body = {"endTime": "2013-06-26T10:05:07.630-07:00", "id": "3681664092089171723", "kind": "compute#operation", "selfLink": "https://www.googleapis.com/operations-test"} response = MockJsonResponse(body) expected_kwargs = {'action': 'https://www.googleapis.com/operations-test'} kwargs = self.conn.get_poll_request_kwargs(response, None, {}) self.assertEqual(kwargs, expected_kwargs) def test_morph_action_hook(self): self.conn.request_path = '/compute/apiver/project/project-name' action1 = ('https://www.googleapis.com/compute/apiver/project' '/project-name/instances') action2 = '/instances' expected_request = '/compute/apiver/project/project-name/instances' request1 = self.conn.morph_action_hook(action1) request2 = self.conn.morph_action_hook(action2) self.assertEqual(request1, expected_request) self.assertEqual(request2, expected_request) def test_init_oauth2(self): mock_scopes = ['https://www.googleapis.com/auth/foo'] kwargs = {'scopes': mock_scopes, 'auth_type': GoogleAuthType.IA} conn = GoogleBaseConnection(*GCE_PARAMS, **kwargs) # If there is a viable token file, this gets used first self.assertEqual(conn.oauth2_token, STUB_TOKEN_FROM_FILE) # No token file, get a new token. Check that it gets written to file. with mock.patch.object(GoogleBaseConnection, '_get_token_from_file', return_value=None): conn = GoogleBaseConnection(*GCE_PARAMS, **kwargs) expected = STUB_IA_TOKEN expected['expire_time'] = conn.oauth2_token['expire_time'] self.assertEqual(conn.oauth2_token, expected) conn._write_token_to_file.assert_called_once_with()