示例#1
0
 def setUp(self):
     with mock.patch(
         "airflow.providers.google.common.hooks.base_google.GoogleBaseHook.__init__",
         new=mock_init,
     ):
         self.gdm_hook = GoogleDeploymentManagerHook(gcp_conn_id="test")
示例#2
0
class TestDeploymentManagerHook(unittest.TestCase):

    def setUp(self):
        with mock.patch(
            "airflow.providers.google.common.hooks.base_google.GoogleBaseHook.__init__",
            new=mock_init,
        ):
            self.gdm_hook = GoogleDeploymentManagerHook(gcp_conn_id="test")

    @mock.patch("airflow.providers.google.cloud.hooks.gdm.GoogleDeploymentManagerHook.get_conn")
    def test_list_deployments(self, mock_get_conn):

        response1 = {'deployments': [{'id': 'deployment1', 'name': 'test-deploy1'}], 'pageToken': None}
        response2 = {'deployments': [{'id': 'deployment2', 'name': 'test-deploy2'}], 'pageToken': None}

        mock_get_conn.return_value.deployments.return_value.list.return_value.execute.return_value = response1

        request_mock = mock.MagicMock()
        request_mock.execute.return_value = response2
        mock_get_conn.return_value.deployments.return_value.list_next.side_effect = [
            request_mock,
            None,
        ]

        deployments = self.gdm_hook.list_deployments(project_id=TEST_PROJECT,
                                                     deployment_filter='filter',
                                                     order_by='name')

        mock_get_conn.assert_called_once_with()

        mock_get_conn.return_value.deployments.return_value.list.assert_called_once_with(
            project=TEST_PROJECT,
            filter='filter',
            orderBy='name',
        )

        self.assertEqual(mock_get_conn.return_value.deployments.return_value.list_next.call_count, 2)

        self.assertEqual(deployments, [{'id': 'deployment1', 'name': 'test-deploy1'},
                                       {'id': 'deployment2', 'name': 'test-deploy2'}])

    @mock.patch("airflow.providers.google.cloud.hooks.gdm.GoogleDeploymentManagerHook.get_conn")
    def test_delete_deployment(self, mock_get_conn):
        self.gdm_hook.delete_deployment(project_id=TEST_PROJECT, deployment=TEST_DEPLOYMENT)
        mock_get_conn.assert_called_once_with()
        mock_get_conn.return_value.deployments().delete.assert_called_once_with(
            project=TEST_PROJECT,
            deployment=TEST_DEPLOYMENT,
            deletePolicy=None
        )

    @mock.patch("airflow.providers.google.cloud.hooks.gdm.GoogleDeploymentManagerHook.get_conn")
    def test_delete_deployment_delete_fails(self, mock_get_conn):

        resp = {'error': {'errors': [{'message': 'error deleting things.', 'domain': 'global'}]}}

        mock_get_conn.return_value.deployments.return_value.delete.return_value.execute.return_value = resp

        with self.assertRaises(AirflowException):
            self.gdm_hook.delete_deployment(project_id=TEST_PROJECT, deployment=TEST_DEPLOYMENT)

        mock_get_conn.assert_called_once_with()
        mock_get_conn.return_value.deployments().delete.assert_called_once_with(
            project=TEST_PROJECT,
            deployment=TEST_DEPLOYMENT,
            deletePolicy=None
        )