This is an automated email from the ASF dual-hosted git repository.
eladkal pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 0fac318a9c test(providers/microsoft): add test cases to
AzureContainerInstanceHook (#33991)
0fac318a9c is described below
commit 0fac318a9c9a776dc18f985de494aa253e22e820
Author: Wei Lee <[email protected]>
AuthorDate: Sat Sep 2 00:32:31 2023 +0800
test(providers/microsoft): add test cases to AzureContainerInstanceHook
(#33991)
* test(providers/microsoft): add test cases to AzureContainerInstanceHook
verify that AzureContainerInstanceHook use DefaultAzureCredential
when other credential (i.e., login, password, tenant_id) are not provided
https://github.com/apache/airflow/pull/33467
* test(providers/microsoft): improve
test_get_conn_fallback_to_default_azure_credential by asserting return conn and
called args
* test: move marker disable_autouse to conftest
* Revert "test: move marker disable_autouse to conftest"
This reverts commit ad6c0f2aaf700c6fc58852eede915fd04f8c6b37.
* test(providers/microsoft): move
test_get_conn_fallback_to_default_azure_credential into a separate class
* test: remove unnecessary marker
---
.../azure/hooks/test_azure_container_instance.py | 46 +++++++++++++++++++++-
1 file changed, 44 insertions(+), 2 deletions(-)
diff --git
a/tests/providers/microsoft/azure/hooks/test_azure_container_instance.py
b/tests/providers/microsoft/azure/hooks/test_azure_container_instance.py
index 1e7e19a138..7c7359fa56 100644
--- a/tests/providers/microsoft/azure/hooks/test_azure_container_instance.py
+++ b/tests/providers/microsoft/azure/hooks/test_azure_container_instance.py
@@ -17,7 +17,7 @@
# under the License.
from __future__ import annotations
-from unittest.mock import patch
+from unittest.mock import MagicMock, patch
import pytest
from azure.mgmt.containerinstance.models import (
@@ -32,6 +32,17 @@ from airflow.models import Connection
from airflow.providers.microsoft.azure.hooks.container_instance import
AzureContainerInstanceHook
[email protected](scope="function")
+def connection_without_login_password_tenant_id(create_mock_connection):
+ return create_mock_connection(
+ Connection(
+ conn_id="azure_container_instance_test",
+ conn_type="azure_container_instances",
+ extra={"subscriptionId": "subscription_id"},
+ )
+ )
+
+
class TestAzureContainerInstanceHook:
@pytest.fixture(autouse=True)
def setup_test_cases(self, create_mock_connection):
@@ -47,7 +58,9 @@ class TestAzureContainerInstanceHook:
self.resources =
ResourceRequirements(requests=ResourceRequests(memory_in_gb="4", cpu="1"))
self.hook =
AzureContainerInstanceHook(azure_conn_id=mock_connection.conn_id)
with
patch("azure.mgmt.containerinstance.ContainerInstanceManagementClient"), patch(
- "azure.common.credentials.ServicePrincipalCredentials.__init__",
autospec=True, return_value=None
+ "azure.common.credentials.ServicePrincipalCredentials.__init__",
+ autospec=True,
+ return_value=None,
):
yield
@@ -110,3 +123,32 @@ class TestAzureContainerInstanceHook:
status, msg = self.hook.test_connection()
assert status is False
assert msg == "Authentication failed."
+
+
+class TestAzureContainerInstanceHookWithoutSetupCredential:
+
@patch("airflow.providers.microsoft.azure.hooks.container_instance.ContainerInstanceManagementClient")
+ @patch("azure.common.credentials.ServicePrincipalCredentials")
+
@patch("airflow.providers.microsoft.azure.hooks.container_instance.DefaultAzureCredential")
+ def test_get_conn_fallback_to_default_azure_credential(
+ self,
+ mock_default_azure_credential,
+ mock_service_pricipal_credential,
+ mock_client_cls,
+ connection_without_login_password_tenant_id,
+ ):
+ mock_credential = MagicMock()
+ mock_default_azure_credential.return_value = mock_credential
+
+ mock_client_instance = MagicMock()
+ mock_client_cls.return_value = mock_client_instance
+
+ hook =
AzureContainerInstanceHook(azure_conn_id=connection_without_login_password_tenant_id.conn_id)
+ conn = hook.get_conn()
+
+ mock_default_azure_credential.assert_called_once()
+ assert not mock_service_pricipal_credential.called
+ assert conn == mock_client_instance
+ mock_client_cls.assert_called_once_with(
+ credential=mock_credential,
+ subscription_id="subscription_id",
+ )