def test_service_request_with_999_status_code(self): target = Path('http://example/com/a/b') mock_method = mock.MagicMock() mock_method.return_value.json.return_value = {'result': {'x': 'y'}} mock_method.return_value.status_code = 999 mock_body = mock.MagicMock() mock_params = mock.MagicMock() with self.assertRaises(error.HttpError): target._Path__service_request(mock_method, mock_body, mock_params)
def test_service_request_with_session(self, mock_AWS4Auth): mock_session = mock.MagicMock() target = Path('http://example/com/a/b', session=mock_session) mock_method = mock.MagicMock() mock_method.return_value.json.return_value = {'result': {'x': 'y'}} mock_method.return_value.status_code = 200 mock_body = mock.MagicMock() mock_params = mock.MagicMock() response = target._Path__service_request(mock_method, mock_body, mock_params) mock_AWS4Auth.assert_called_once_with( mock_session.get_credentials.return_value.get_frozen_credentials. return_value.access_key, mock_session.get_credentials.return_value.get_frozen_credentials. return_value.secret_key, mock_session.region_name, 'execute-api', session_token=mock_session.get_credentials( ).get_frozen_credentials().token) mock_method.assert_called_once_with('http://example/com/a/b', auth=mock_AWS4Auth.return_value, json=mock_body, params=mock_params) self.assertEquals(response.DATA, {'x': 'y'})
def test_service_request_with_role_arn(self, mock_AWS4Auth): mock_session = mock.Mock() # See https://docs.python.org/3/library/unittest.mock.html#unittest.mock.PropertyMock about how to mock properties region_mock = mock.PropertyMock(return_value="TEST-REGION") type(mock_session).region_name = region_mock mock_role_arn = mock.MagicMock() print("Mock_session {} region_name={}".format( mock_session, mock_session.region_name)) mock_session.client.return_value.assume_role.return_value = { 'Credentials': { 'AccessKeyId': mock.MagicMock(), 'SecretAccessKey': mock.MagicMock(), 'SessionToken': mock.MagicMock() } } target = Path('http://example/com/a/b', session=mock_session, role_arn=mock_role_arn) mock_method = mock.MagicMock() mock_method.return_value.json.return_value = {'result': {'x': 'y'}} mock_method.return_value.status_code = 200 mock_body = mock.MagicMock() mock_params = mock.MagicMock() response = target._Path__service_request(mock_method, mock_body, mock_params) mock_session.client.assert_called_once_with( 'sts', endpoint_url=AWSSTSUtils("TEST-REGION").endpoint_url) mock_session.client.return_value.assume_role.assert_called_once_with( RoleArn=mock_role_arn, RoleSessionName='cgf_service_client') mock_AWS4Auth.assert_called_once_with( mock_session.client.return_value.assume_role. return_value['Credentials']['AccessKeyId'], mock_session.client.return_value.assume_role. return_value['Credentials']['SecretAccessKey'], mock_session.region_name, 'execute-api', session_token=mock_session.client.return_value.assume_role. return_value['Credentials']['SessionToken']) mock_method.assert_called_once_with('http://example/com/a/b', auth=mock_AWS4Auth.return_value, json=mock_body, params=mock_params) self.assertEquals(response.DATA, {'x': 'y'})
def test_service_request_without_session(self): target = Path('http://example/com/a/b') mock_method = mock.MagicMock() mock_method.return_value.json.return_value = {'result': {'x': 'y'}} mock_method.return_value.status_code = 200 mock_body = mock.MagicMock() mock_params = mock.MagicMock() response = target._Path__service_request(mock_method, mock_body, mock_params) mock_method.assert_called_once_with('http://example/com/a/b', auth = None, json = mock_body, params = mock_params) self.assertEquals(response.DATA, {'x': 'y'})
def test_service_request_with_role_arn(self, mock_AWS4Auth): mock_session = mock.MagicMock() mock_role_arn = mock.MagicMock() mock_session.client.return_value.assume_role.return_value = { 'Credentials': { 'AccessKeyId': mock.MagicMock(), 'SecretAccessKey': mock.MagicMock(), 'SessionToken': mock.MagicMock() } } target = Path('http://example/com/a/b', session=mock_session, role_arn=mock_role_arn) mock_method = mock.MagicMock() mock_method.return_value.json.return_value = {'result': {'x': 'y'}} mock_method.return_value.status_code = 200 mock_body = mock.MagicMock() mock_params = mock.MagicMock() response = target._Path__service_request(mock_method, mock_body, mock_params) mock_session.client.assert_called_once_with('sts') mock_session.client.return_value.assume_role.assert_called_once_with( RoleArn=mock_role_arn, RoleSessionName='cgf_service_client') mock_AWS4Auth.assert_called_once_with( mock_session.client.return_value.assume_role. return_value['Credentials']['AccessKeyId'], mock_session.client.return_value.assume_role. return_value['Credentials']['SecretAccessKey'], mock_session.region_name, 'execute-api', session_token=mock_session.client.return_value.assume_role. return_value['Credentials']['SessionToken']) mock_method.assert_called_once_with('http://example/com/a/b', auth=mock_AWS4Auth.return_value, json=mock_body, params=mock_params) self.assertEquals(response.DATA, {'x': 'y'})