Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 885f8fc

Browse files
committed
fix: tolerate invalid token response encoding
Assisted-by: Codex (model: GPT-5, autonomous)
1 parent f1ca6c4 commit 885f8fc

2 files changed

Lines changed: 19 additions & 0 deletions

File tree

‎src/specify_cli/authentication/azure_devops.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ def _acquire_via_client_credentials(entry: AuthConfigEntry) -> str | None:
136136
urllib.error.URLError,
137137
OSError,
138138
_json.JSONDecodeError,
139+
UnicodeDecodeError,
139140
_TokenResponseTooLarge,
140141
):
141142
# Network failure, malformed JSON, or an oversized response — fall

‎tests/test_authentication.py‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,24 @@ def test_resolve_token_azure_ad_network_error_returns_none(self, monkeypatch):
531531
side_effect=urllib.error.URLError("connection refused")):
532532
assert AzureDevOpsAuth().resolve_token(entry) is None
533533

534+
def test_resolve_token_azure_ad_invalid_utf8_returns_none(self, monkeypatch):
535+
"""azure-ad returns None when the token response is not valid UTF-8."""
536+
from unittest.mock import MagicMock, patch
537+
monkeypatch.setenv("MY_SECRET", "secret-value")
538+
entry = AuthConfigEntry(
539+
hosts=("dev.azure.com",), provider="azure-devops", auth="azure-ad",
540+
tenant_id="tid", client_id="cid", client_secret_env="MY_SECRET",
541+
)
542+
mock_resp = MagicMock()
543+
mock_resp.read.side_effect = io.BytesIO(b"\xff").read
544+
mock_resp.__enter__ = lambda s: s
545+
mock_resp.__exit__ = MagicMock(return_value=False)
546+
mock_opener = MagicMock()
547+
mock_opener.open.return_value = mock_resp
548+
549+
with patch("urllib.request.build_opener", return_value=mock_opener):
550+
assert AzureDevOpsAuth().resolve_token(entry) is None
551+
534552

535553
# ---------------------------------------------------------------------------
536554
# open_url / build_request — positive tests

0 commit comments

Comments
 (0)