1+ from unittest .mock import patch , MagicMock
2+ import pytest
3+ import sys
4+ import os
5+
6+ # Add the backend directory to the Python path
7+ sys .path .append (os .path .abspath (os .path .join (os .path .dirname (__file__ ), "../../../backend" )))
8+ import helper .azure_credential_utils as azure_credential_utils
9+
10+ @pytest .fixture
11+ def mock_env_vars ():
12+ return {
13+ "APP_ENV" : "dev"
14+ }
15+
16+ class TestAzureCredentialUtils :
17+ @patch .dict (os .environ , {}, clear = True )
18+ @patch ("helper.azure_credential_utils.DefaultAzureCredential" )
19+ @patch ("helper.azure_credential_utils.ManagedIdentityCredential" )
20+ def test_get_azure_credential_dev_env (self , mock_managed_identity_credential , mock_default_azure_credential , mock_env_vars ):
21+ """Test get_azure_credential in dev environment."""
22+ # Arrange
23+ os .environ .update (mock_env_vars )
24+ mock_default_credential = MagicMock ()
25+ mock_default_azure_credential .return_value = mock_default_credential
26+
27+ # Act
28+ credential = azure_credential_utils .get_azure_credential ()
29+
30+ # Assert
31+ mock_default_azure_credential .assert_called_once ()
32+ mock_managed_identity_credential .assert_not_called ()
33+ assert credential == mock_default_credential
34+
35+ @patch .dict (os .environ , {}, clear = True )
36+ @patch ("helper.azure_credential_utils.DefaultAzureCredential" )
37+ @patch ("helper.azure_credential_utils.ManagedIdentityCredential" )
38+ def test_get_azure_credential_non_dev_env (self , mock_managed_identity_credential , mock_default_azure_credential , mock_env_vars ):
39+ """Test get_azure_credential in non-dev environment."""
40+ # Arrange
41+ mock_env_vars ["APP_ENV" ] = "prod"
42+ os .environ .update (mock_env_vars )
43+ mock_managed_credential = MagicMock ()
44+ mock_managed_identity_credential .return_value = mock_managed_credential
45+
46+ # Act
47+ credential = azure_credential_utils .get_azure_credential (client_id = "test-client-id" )
48+
49+ # Assert
50+ mock_managed_identity_credential .assert_called_once_with (client_id = "test-client-id" )
51+ mock_default_azure_credential .assert_not_called ()
52+ assert credential == mock_managed_credential
53+
54+ @pytest .mark .asyncio
55+ @patch .dict (os .environ , {}, clear = True )
56+ @patch ("helper.azure_credential_utils.AioDefaultAzureCredential" )
57+ @patch ("helper.azure_credential_utils.AioManagedIdentityCredential" )
58+ async def test_get_azure_credential_async_dev_env (self , mock_aio_managed_identity_credential , mock_aio_default_azure_credential , mock_env_vars ):
59+ """Test get_azure_credential_async in dev environment."""
60+ # Arrange
61+ os .environ .update (mock_env_vars )
62+ mock_aio_default_credential = MagicMock ()
63+ mock_aio_default_azure_credential .return_value = mock_aio_default_credential
64+
65+ # Act
66+ credential = await azure_credential_utils .get_azure_credential_async ()
67+
68+ # Assert
69+ mock_aio_default_azure_credential .assert_called_once ()
70+ mock_aio_managed_identity_credential .assert_not_called ()
71+ assert credential == mock_aio_default_credential
72+
73+ @pytest .mark .asyncio
74+ @patch .dict (os .environ , {}, clear = True )
75+ @patch ("helper.azure_credential_utils.AioDefaultAzureCredential" )
76+ @patch ("helper.azure_credential_utils.AioManagedIdentityCredential" )
77+ async def test_get_azure_credential_async_non_dev_env (self , mock_aio_managed_identity_credential , mock_aio_default_azure_credential , mock_env_vars ):
78+ """Test get_azure_credential_async in non-dev environment."""
79+ # Arrange
80+ mock_env_vars ["APP_ENV" ] = "prod"
81+ os .environ .update (mock_env_vars )
82+ mock_aio_managed_credential = MagicMock ()
83+ mock_aio_managed_identity_credential .return_value = mock_aio_managed_credential
84+
85+ # Act
86+ credential = await azure_credential_utils .get_azure_credential_async (client_id = "test-client-id" )
87+
88+ # Assert
89+ mock_aio_managed_identity_credential .assert_called_once_with (client_id = "test-client-id" )
90+ mock_aio_default_azure_credential .assert_not_called ()
91+ assert credential == mock_aio_managed_credential
0 commit comments