Skip to content

Commit 056ddae

Browse files
committed
Always present MI token in production environment
1 parent d7f52f5 commit 056ddae

2 files changed

Lines changed: 16 additions & 4 deletions

File tree

src/services/dicom/dicom_uploader.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@
99
import os
1010
from typing import Optional
1111

12-
1312
import requests
1413
from azure.identity import ManagedIdentityCredential
1514

15+
from environment import Environment
16+
1617
logger = logging.getLogger(__name__)
1718

1819

@@ -65,9 +66,9 @@ def headers(self) -> dict:
6566
}
6667

6768
@property
68-
def access_token(self) -> str:
69-
resource = os.getenv("CLOUD_API_RESOURCE")
70-
if resource:
69+
def access_token(self) -> str | None:
70+
resource = os.getenv("CLOUD_API_RESOURCE", "")
71+
if resource or Environment().production:
7172
return ManagedIdentityCredential().get_token(resource).token
7273
else:
7374
return os.getenv("CLOUD_API_TOKEN", "")

tests/services/dicom/test_dicom_uploader.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,17 @@ def test_upload_headers_without_managed_identity_resource(self, _, monkeypatch):
9999

100100
assert DICOMUploader().headers == {"Authorization": "Bearer env_access_token"}
101101

102+
def test_upload_headers_in_production_with_no_cloud_api_resource(self, _, monkeypatch):
103+
"""Test that headers include access token from ManagedIdentityCredential in production even if CLOUD_API_RESOURCE is not set."""
104+
monkeypatch.setenv("ENVIRONMENT", "prod")
105+
with patch("services.dicom.dicom_uploader.ManagedIdentityCredential") as mock_credential:
106+
mock_credential_instance = Mock()
107+
mock_credential_instance.get_token.return_value.token = "prod_access_token"
108+
mock_credential.return_value = mock_credential_instance
109+
110+
assert DICOMUploader().headers == {"Authorization": "Bearer prod_access_token"}
111+
assert mock_credential_instance.get_token.call_args[0][0] is None
112+
102113
def test_upload_headers_without_any_token(self, _):
103114
"""Test that headers include empty token if neither CLOUD_API_RESOURCE nor CLOUD_API_TOKEN is set."""
104115
assert DICOMUploader().headers == {"Authorization": "Bearer "}

0 commit comments

Comments
 (0)