diff --git a/providers/google/src/airflow/providers/google/cloud/triggers/cloud_build.py b/providers/google/src/airflow/providers/google/cloud/triggers/cloud_build.py index f97a3db33e267..d36ad06db5367 100644 --- a/providers/google/src/airflow/providers/google/cloud/triggers/cloud_build.py +++ b/providers/google/src/airflow/providers/google/cloud/triggers/cloud_build.py @@ -125,4 +125,7 @@ async def run(self) -> AsyncIterator[TriggerEvent]: yield TriggerEvent({"status": "error", "message": str(e)}) def _get_async_hook(self) -> CloudBuildAsyncHook: - return CloudBuildAsyncHook(gcp_conn_id=self.gcp_conn_id) + return CloudBuildAsyncHook( + gcp_conn_id=self.gcp_conn_id, + impersonation_chain=self.impersonation_chain, + ) diff --git a/providers/google/tests/unit/google/cloud/triggers/test_cloud_build.py b/providers/google/tests/unit/google/cloud/triggers/test_cloud_build.py index ff966e510e30c..b31258de43ed1 100644 --- a/providers/google/tests/unit/google/cloud/triggers/test_cloud_build.py +++ b/providers/google/tests/unit/google/cloud/triggers/test_cloud_build.py @@ -45,6 +45,7 @@ TEST_CONN_ID = "google_cloud_default" TEST_POLL_INTERVAL = 4.0 TEST_LOCATION = "global" +TEST_IMPERSONATION_CHAIN = "impersonated-account@developer.gserviceaccount.com" TEST_BUILD_INSTANCE = dict( id="test-build-id-9832662", status=3, @@ -119,6 +120,24 @@ def test_serialization(self, trigger): "location": TEST_LOCATION, } + @mock.patch(CLOUD_BUILD_PATH.format("CloudBuildAsyncHook"), autospec=True) + def test_get_async_hook_builds_hook_with_impersonation_chain(self, mock_hook): + trigger = CloudBuildCreateBuildTrigger( + id_=TEST_BUILD_ID, + project_id=TEST_PROJECT_ID, + gcp_conn_id=TEST_CONN_ID, + impersonation_chain=TEST_IMPERSONATION_CHAIN, + poll_interval=TEST_POLL_INTERVAL, + location=TEST_LOCATION, + ) + + trigger._get_async_hook() + + mock_hook.assert_called_once_with( + gcp_conn_id=TEST_CONN_ID, + impersonation_chain=TEST_IMPERSONATION_CHAIN, + ) + @pytest.mark.asyncio @mock.patch(CLOUD_BUILD_PATH.format("CloudBuildAsyncHook")) async def test_trigger_on_success_yield_successfully(self, mock_hook, trigger):