Skip to content

Commit ab7d909

Browse files
committed
fix(jwt): update claims validation logic, allow value to be False or 0
ref: #23
1 parent 18ae2e2 commit ab7d909

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

src/joserfc/rfc7519/registry.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@ def check_value(self, claim_name: str, value: Any) -> None:
2727
option = self.options.get(claim_name)
2828
if option:
2929
allow_blank = option.get("allow_blank")
30-
if not allow_blank and not value:
30+
if not allow_blank and value == "":
3131
raise InvalidClaimError(claim_name)
3232

3333
option_value = option.get("value")
34-
if option_value and value != option_value:
34+
if option_value is not None and value != option_value:
3535
raise InvalidClaimError(claim_name)
3636

3737
option_values = option.get("values")
38-
if option_values and value not in option_values:
38+
if option_values is not None and value not in option_values:
3939
raise InvalidClaimError(claim_name)
4040

4141
def validate(self, claims: Dict[str, Any]) -> None:

tests/jwt/test_claims.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ def test_essential_empty_value(self):
5656
self.assertRaises(MissingClaimError, claims_requests.validate, {"sub": None})
5757
claims_requests.validate({"sub": ""})
5858

59+
def test_essential_false_value(self):
60+
claims_requests = jwt.JWTClaimsRegistry(foo={"essential": True})
61+
claims_requests.validate({"foo": False})
62+
claims_requests.validate({"foo": 0})
63+
5964
def test_option_value(self):
6065
claims_requests = jwt.JWTClaimsRegistry(sub={"essential": True, "value": "123"})
6166
self.assertRaises(InvalidClaimError, claims_requests.validate, {"sub": "a"})

0 commit comments

Comments
 (0)