Skip to content

Commit 1bb4cc0

Browse files
Merge pull request #525 from microsoft/psl-unittestsfi
feat: Added unit tests for Azure credential utilities
2 parents 59b4d12 + ed38990 commit 1bb4cc0

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
import pytest
2+
import sys
3+
import os
4+
from unittest.mock import patch, MagicMock
5+
6+
# Ensure src/backend is on the Python path for imports
7+
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../../../")))
8+
9+
import backend.helpers.azure_credential_utils as azure_credential_utils
10+
11+
# Synchronous tests
12+
13+
@patch("backend.helpers.azure_credential_utils.os.getenv")
14+
@patch("backend.helpers.azure_credential_utils.DefaultAzureCredential")
15+
@patch("backend.helpers.azure_credential_utils.ManagedIdentityCredential")
16+
def test_get_azure_credential_dev_env(mock_managed_identity_credential, mock_default_azure_credential, mock_getenv):
17+
"""Test get_azure_credential in dev environment."""
18+
mock_getenv.return_value = "dev"
19+
mock_default_credential = MagicMock()
20+
mock_default_azure_credential.return_value = mock_default_credential
21+
22+
credential = azure_credential_utils.get_azure_credential()
23+
24+
mock_getenv.assert_called_once_with("APP_ENV", "prod")
25+
mock_default_azure_credential.assert_called_once()
26+
mock_managed_identity_credential.assert_not_called()
27+
assert credential == mock_default_credential
28+
29+
@patch("backend.helpers.azure_credential_utils.os.getenv")
30+
@patch("backend.helpers.azure_credential_utils.DefaultAzureCredential")
31+
@patch("backend.helpers.azure_credential_utils.ManagedIdentityCredential")
32+
def test_get_azure_credential_non_dev_env(mock_managed_identity_credential, mock_default_azure_credential, mock_getenv):
33+
"""Test get_azure_credential in non-dev environment."""
34+
mock_getenv.return_value = "prod"
35+
mock_managed_credential = MagicMock()
36+
mock_managed_identity_credential.return_value = mock_managed_credential
37+
credential = azure_credential_utils.get_azure_credential(client_id="test-client-id")
38+
39+
mock_getenv.assert_called_once_with("APP_ENV", "prod")
40+
mock_managed_identity_credential.assert_called_once_with(client_id="test-client-id")
41+
mock_default_azure_credential.assert_not_called()
42+
assert credential == mock_managed_credential
43+
44+
# Asynchronous tests
45+
46+
@pytest.mark.asyncio
47+
@patch("backend.helpers.azure_credential_utils.os.getenv")
48+
@patch("backend.helpers.azure_credential_utils.AioDefaultAzureCredential")
49+
@patch("backend.helpers.azure_credential_utils.AioManagedIdentityCredential")
50+
async def test_get_azure_credential_async_dev_env(mock_aio_managed_identity_credential, mock_aio_default_azure_credential, mock_getenv):
51+
"""Test get_azure_credential_async in dev environment."""
52+
mock_getenv.return_value = "dev"
53+
mock_aio_default_credential = MagicMock()
54+
mock_aio_default_azure_credential.return_value = mock_aio_default_credential
55+
56+
credential = await azure_credential_utils.get_azure_credential_async()
57+
58+
mock_getenv.assert_called_once_with("APP_ENV", "prod")
59+
mock_aio_default_azure_credential.assert_called_once()
60+
mock_aio_managed_identity_credential.assert_not_called()
61+
assert credential == mock_aio_default_credential
62+
63+
@pytest.mark.asyncio
64+
@patch("backend.helpers.azure_credential_utils.os.getenv")
65+
@patch("backend.helpers.azure_credential_utils.AioDefaultAzureCredential")
66+
@patch("backend.helpers.azure_credential_utils.AioManagedIdentityCredential")
67+
async def test_get_azure_credential_async_non_dev_env(mock_aio_managed_identity_credential, mock_aio_default_azure_credential, mock_getenv):
68+
"""Test get_azure_credential_async in non-dev environment."""
69+
mock_getenv.return_value = "prod"
70+
mock_aio_managed_credential = MagicMock()
71+
mock_aio_managed_identity_credential.return_value = mock_aio_managed_credential
72+
73+
credential = await azure_credential_utils.get_azure_credential_async(client_id="test-client-id")
74+
75+
mock_getenv.assert_called_once_with("APP_ENV", "prod")
76+
mock_aio_managed_identity_credential.assert_called_once_with(client_id="test-client-id")
77+
mock_aio_default_azure_credential.assert_not_called()
78+
assert credential == mock_aio_managed_credential

0 commit comments

Comments
 (0)