diff --git a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/msgraph.py b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/msgraph.py index 376292e1b3c6f..8216e9138149e 100644 --- a/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/msgraph.py +++ b/providers/microsoft/azure/src/airflow/providers/microsoft/azure/hooks/msgraph.py @@ -276,6 +276,8 @@ def to_msal_proxies(self, authority: str | None, proxies: dict | None) -> dict | if authority.endswith(domain_name): return None return proxies + if proxies: + return proxies return None def _build_request_adapter(self, connection) -> tuple[str, RequestAdapter]: diff --git a/providers/microsoft/azure/tests/unit/microsoft/azure/hooks/test_msgraph.py b/providers/microsoft/azure/tests/unit/microsoft/azure/hooks/test_msgraph.py index 6f6216d8fa9d1..4230bcd8ebec6 100644 --- a/providers/microsoft/azure/tests/unit/microsoft/azure/hooks/test_msgraph.py +++ b/providers/microsoft/azure/tests/unit/microsoft/azure/hooks/test_msgraph.py @@ -432,6 +432,46 @@ async def test_build_request_adapter_masks_secrets(self): mock_redact.assert_any_call({"http": "http://user:pass@proxy:3128"}, name="proxies") mock_redact.assert_any_call("my_secret_password", name="client_secret") + def test_msal_returns_none_when_authority_matches_no_proxy(self): + hook = KiotaRequestAdapterHook(conn_id="msgraph") + + proxies = {"http": "http://proxy", "no": "*.example.com"} + authority = "api.example.com" + + result = hook.to_msal_proxies(authority, proxies) + + assert result is None + + def test_msal_returns_proxies_when_authority_does_not_match_no_proxy(self): + hook = KiotaRequestAdapterHook(conn_id="msgraph") + + proxies = {"http": "http://proxy", "no": "*.example.com"} + authority = "api.other.com" + + result = hook.to_msal_proxies(authority, proxies) + + assert result == proxies + + def test_msal_returns_proxies_when_no_authority_no_proxy_key(self): + hook = KiotaRequestAdapterHook(conn_id="msgraph") + + proxies = {"no": "*example.com"} + authority = None + + result = hook.to_msal_proxies(authority, proxies) + + assert result == proxies + + def test_msal_returns_proxies_when_no_authority_with_proxy_key(self): + hook = KiotaRequestAdapterHook(conn_id="msgraph") + + proxies = {"http": "http://proxy"} + authority = None + + result = hook.to_msal_proxies(authority, proxies) + + assert result == proxies + class TestResponseHandler: def test_default_response_handler_when_json(self):