Skip to content

Commit 3d7d571

Browse files
test: added testcase related to azure credential utils
2 parents ce546f1 + 26e708d commit 3d7d571

File tree

2 files changed

+91
-1
lines changed

2 files changed

+91
-1
lines changed

src/backend/helper/azure_credential_utils.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ async def get_azure_credential_async(client_id=None):
1414
Returns:
1515
Credential object: Either AioDefaultAzureCredential or AioManagedIdentityCredential.
1616
"""
17-
print(os.getenv("APP_ENV"))
1817
if os.getenv("APP_ENV", "prod").lower() == 'dev':
1918
return AioDefaultAzureCredential() # CodeQL [SM05139] Okay use of DefaultAzureCredential as it is only used in development
2019
else:
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
import os
2+
from unittest.mock import MagicMock, patch
3+
4+
import helper.azure_credential_utils as azure_credential_utils
5+
6+
import pytest
7+
8+
9+
@pytest.fixture
10+
def mock_env_vars():
11+
return {
12+
"APP_ENV": "dev"
13+
}
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

Comments
 (0)