OpenMetadata/ingestion/tests/unit/test_azure_credentials.py
Ayush Shah 8b880bbf91
Fixes 14370: Add Azure Client, support Default Creds (#15554)
* Add Azure Client, support Default Creds
2024-03-22 14:28:42 +05:30

64 lines
2.1 KiB
Python

import unittest
from unittest.mock import patch
from metadata.clients.azure_client import AzureClient
from metadata.generated.schema.security.credentials.azureCredentials import (
AzureCredentials,
)
class TestAzureClient(unittest.TestCase):
@patch("azure.identity.ClientSecretCredential")
@patch("azure.identity.DefaultAzureCredential")
def test_create_client(
self,
mock_default_credential,
mock_client_secret_credential,
):
# Test with ClientSecretCredential
credentials = AzureCredentials(
clientId="clientId", clientSecret="clientSecret", tenantId="tenantId"
)
instance = AzureClient(credentials)
instance.create_client()
mock_client_secret_credential.assert_called_once()
mock_client_secret_credential.reset_mock()
credentials = AzureCredentials(
clientId="clientId",
)
instance = AzureClient(credentials)
instance.create_client()
mock_default_credential.assert_called_once()
@patch("azure.storage.blob.BlobServiceClient")
def test_create_blob_client(self, mock_blob_service_client):
credentials = AzureCredentials(
clientId="clientId", clientSecret="clientSecret", tenantId="tenantId"
)
with self.assertRaises(ValueError):
AzureClient(credentials=credentials).create_blob_client()
credentials.accountName = "accountName"
AzureClient(credentials=credentials).create_blob_client()
mock_blob_service_client.assert_called_once()
@patch("azure.keyvault.secrets.SecretClient")
def test_create_secret_client(self, mock_secret_client):
credentials = AzureCredentials(
clientId="clientId", clientSecret="clientSecret", tenantId="tenantId"
)
with self.assertRaises(ValueError):
AzureClient(credentials=credentials).create_secret_client()
credentials.vaultName = "vaultName"
AzureClient(credentials=credentials).create_secret_client()
mock_secret_client.assert_called_once()
if __name__ == "__main__":
unittest.main()