Skip to content

Commit cfe6489

Browse files
authored
oidc/services: fix mischaracterized error (#16197)
* oidc/services: fix mischaracterized error Signed-off-by: William Woodruff <[email protected]> * formatting Signed-off-by: William Woodruff <[email protected]> * remove non-JWT error branch Signed-off-by: William Woodruff <[email protected]> --------- Signed-off-by: William Woodruff <[email protected]>
1 parent 8b45109 commit cfe6489

File tree

2 files changed

+5
-21
lines changed

2 files changed

+5
-21
lines changed

tests/unit/oidc/test_services.py

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,7 @@ def test_verify_jwt_signature(self, monkeypatch):
106106
)
107107
]
108108

109-
@pytest.mark.parametrize("exc", [DecodeError, TypeError("foo")])
110-
def test_verify_jwt_signature_get_key_for_token_fails(
111-
self, metrics, monkeypatch, exc
112-
):
109+
def test_verify_jwt_signature_get_key_for_token_fails(self, metrics, monkeypatch):
113110
service = services.OIDCPublisherService(
114111
session=pretend.stub(),
115112
publisher="fakepublisher",
@@ -120,8 +117,8 @@ def test_verify_jwt_signature_get_key_for_token_fails(
120117
)
121118

122119
token = pretend.stub()
123-
jwt = pretend.stub(decode=pretend.raiser(exc), PyJWTError=PyJWTError)
124-
monkeypatch.setattr(service, "_get_key_for_token", pretend.raiser(exc))
120+
jwt = pretend.stub(PyJWTError=PyJWTError)
121+
monkeypatch.setattr(service, "_get_key_for_token", pretend.raiser(DecodeError))
125122
monkeypatch.setattr(services, "jwt", jwt)
126123
monkeypatch.setattr(
127124
services.sentry_sdk,
@@ -136,13 +133,7 @@ def test_verify_jwt_signature_get_key_for_token_fails(
136133
tags=["publisher:fakepublisher"],
137134
)
138135
]
139-
140-
if exc != DecodeError:
141-
assert services.sentry_sdk.capture_message.calls == [
142-
pretend.call(f"JWT backend raised generic error: {exc}")
143-
]
144-
else:
145-
assert services.sentry_sdk.capture_message.calls == []
136+
assert services.sentry_sdk.capture_message.calls == []
146137

147138
@pytest.mark.parametrize("exc", [PyJWTError, TypeError("foo")])
148139
def test_verify_jwt_signature_fails(self, metrics, monkeypatch, exc):

warehouse/oidc/services.py

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -222,20 +222,13 @@ def _get_key_for_token(self, token):
222222
def verify_jwt_signature(self, unverified_token: str) -> SignedClaims | None:
223223
try:
224224
key = self._get_key_for_token(unverified_token)
225-
except Exception as e:
225+
except jwt.PyJWTError:
226226
# The user might feed us an entirely nonsense JWT, e.g. one
227227
# with missing components.
228228
self.metrics.increment(
229229
"warehouse.oidc.verify_jwt_signature.malformed_jwt",
230230
tags=[f"publisher:{self.publisher}"],
231231
)
232-
233-
if not isinstance(e, jwt.PyJWTError):
234-
with sentry_sdk.push_scope() as scope:
235-
scope.fingerprint = e
236-
# Similar to below: Other exceptions indicate an abstraction
237-
# leak, so we log them for upstream reporting.
238-
sentry_sdk.capture_message(f"JWT backend raised generic error: {e}")
239232
return None
240233

241234
try:

0 commit comments

Comments
 (0)