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",
+        )

Reply via email to