Skip to content

Commit 6c47e7c

Browse files
committed
Don't load disabled secret
1 parent 3b83fc2 commit 6c47e7c

File tree

2 files changed

+24
-11
lines changed

2 files changed

+24
-11
lines changed

pydantic_settings/sources/providers/azure.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def __init__(
4646
self._loaded_secrets = {}
4747
self._secret_client = secret_client
4848
self._secret_names: list[str] = [
49-
secret.name for secret in self._secret_client.list_properties_of_secrets() if secret.name
49+
secret.name for secret in self._secret_client.list_properties_of_secrets() if secret.name and secret.enabled
5050
]
5151

5252
def __getitem__(self, key: str) -> str | None:

tests/test_source_azure_key_vault.py

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"""
44

55
import pytest
6+
from azure.keyvault.secrets import SecretClient
67
from pydantic import BaseModel, Field
78
from pytest_mock import MockerFixture
89

@@ -23,9 +24,6 @@
2324
azure_key_vault = False
2425

2526

26-
MODULE = 'pydantic_settings.sources.providers.azure'
27-
28-
2927
@pytest.mark.skipif(not azure_key_vault, reason='pydantic-settings[azure-key-vault] is not installed')
3028
class TestAzureKeyVaultSettingsSource:
3129
"""Test AzureKeyVaultSettingsSource."""
@@ -36,7 +34,10 @@ def test___init__(self, mocker: MockerFixture) -> None:
3634
class AzureKeyVaultSettings(BaseSettings):
3735
"""AzureKeyVault settings."""
3836

39-
mocker.patch(f'{MODULE}.SecretClient.list_properties_of_secrets', return_value=[])
37+
mocker.patch(
38+
f'{AzureKeyVaultSettingsSource.__module__}.{SecretClient.list_properties_of_secrets.__qualname__}',
39+
return_value=[],
40+
)
4041

4142
AzureKeyVaultSettingsSource(
4243
AzureKeyVaultSettings, 'https://my-resource.vault.azure.net/', DefaultAzureCredential()
@@ -55,11 +56,17 @@ class AzureKeyVaultSettings(BaseSettings):
5556
sql_server_user: str = Field(..., alias='SqlServerUser')
5657
sql_server: SqlServer = Field(..., alias='SqlServer')
5758

58-
expected_secrets = [type('', (), {'name': 'SqlServerUser'}), type('', (), {'name': 'SqlServer--Password'})]
59+
expected_secrets = [
60+
type('', (), {'name': 'SqlServerUser', 'enabled': True}),
61+
type('', (), {'name': 'SqlServer--Password', 'enabled': True}),
62+
]
5963
expected_secret_value = 'SecretValue'
60-
mocker.patch(f'{MODULE}.SecretClient.list_properties_of_secrets', return_value=expected_secrets)
6164
mocker.patch(
62-
f'{MODULE}.SecretClient.get_secret',
65+
f'{AzureKeyVaultSettingsSource.__module__}.{SecretClient.list_properties_of_secrets.__qualname__}',
66+
return_value=expected_secrets,
67+
)
68+
mocker.patch(
69+
f'{AzureKeyVaultSettingsSource.__module__}.{SecretClient.get_secret.__qualname__}',
6370
side_effect=self._raise_resource_not_found_when_getting_parent_secret_name,
6471
)
6572
obj = AzureKeyVaultSettingsSource(
@@ -99,11 +106,17 @@ def settings_customise_sources(
99106
),
100107
)
101108

102-
expected_secrets = [type('', (), {'name': 'SqlServerUser'}), type('', (), {'name': 'SqlServer--Password'})]
109+
expected_secrets = [
110+
type('', (), {'name': 'SqlServerUser', 'enabled': True}),
111+
type('', (), {'name': 'SqlServer--Password', 'enabled': True}),
112+
]
103113
expected_secret_value = 'SecretValue'
104-
mocker.patch(f'{MODULE}.SecretClient.list_properties_of_secrets', return_value=expected_secrets)
105114
mocker.patch(
106-
f'{MODULE}.SecretClient.get_secret',
115+
f'{AzureKeyVaultSettingsSource.__module__}.{SecretClient.list_properties_of_secrets.__qualname__}',
116+
return_value=expected_secrets,
117+
)
118+
mocker.patch(
119+
f'{AzureKeyVaultSettingsSource.__module__}.{SecretClient.get_secret.__qualname__}',
107120
side_effect=self._raise_resource_not_found_when_getting_parent_secret_name,
108121
)
109122

0 commit comments

Comments
 (0)