diff options
author | Asif Saif Uddin <auvipy@gmail.com> | 2021-10-12 12:32:25 +0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-12 12:32:25 +0600 |
commit | a4b3d505d48edb3dc93f6ea633a82f8b418a37be (patch) | |
tree | ccf1dfd040f71c30970a312f2aad0a53332faee2 | |
parent | 6223ba13780a941a3f4c9dec62f282bdd9b5afb0 (diff) | |
download | pyjwt-revert-657-remove-arbitrary-kwargs.tar.gz |
Revert "Remove arbitrary kwargs. (#657)"revert-657-remove-arbitrary-kwargs
This reverts commit 5fe7f2b28ffcd27a3e520be750858944889112ef.
-rw-r--r-- | jwt/api_jws.py | 4 | ||||
-rw-r--r-- | jwt/api_jwt.py | 21 | ||||
-rw-r--r-- | tests/test_api_jwt.py | 11 |
3 files changed, 12 insertions, 24 deletions
diff --git a/jwt/api_jws.py b/jwt/api_jws.py index a61d227..c0c7409 100644 --- a/jwt/api_jws.py +++ b/jwt/api_jws.py @@ -134,6 +134,7 @@ class PyJWS: key: str = "", algorithms: List[str] = None, options: Dict = None, + **kwargs, ) -> Dict[str, Any]: if options is None: options = {} @@ -162,8 +163,9 @@ class PyJWS: key: str = "", algorithms: List[str] = None, options: Dict = None, + **kwargs, ) -> str: - decoded = self.decode_complete(jwt, key, algorithms, options) + decoded = self.decode_complete(jwt, key, algorithms, options, **kwargs) return decoded["payload"] def get_unverified_header(self, jwt): diff --git a/jwt/api_jwt.py b/jwt/api_jwt.py index 7e21b75..f3b55d3 100644 --- a/jwt/api_jwt.py +++ b/jwt/api_jwt.py @@ -68,9 +68,7 @@ class PyJWT: key: str = "", algorithms: List[str] = None, options: Dict = None, - audience: Optional[Union[str, List[str]]] = None, - issuer: Optional[str] = None, - leeway: Union[float, timedelta] = 0, + **kwargs, ) -> Dict[str, Any]: if options is None: options = {"verify_signature": True} @@ -94,6 +92,7 @@ class PyJWT: key=key, algorithms=algorithms, options=options, + **kwargs, ) try: @@ -104,7 +103,7 @@ class PyJWT: raise DecodeError("Invalid payload string: must be a json object") merged_options = {**self.options, **options} - self._validate_claims(payload, merged_options, audience, issuer, leeway) + self._validate_claims(payload, merged_options, **kwargs) decoded["payload"] = payload return decoded @@ -115,20 +114,18 @@ class PyJWT: key: str = "", algorithms: List[str] = None, options: Dict = None, - audience: Optional[Union[str, List[str]]] = None, - issuer: Optional[str] = None, - leeway: Union[float, timedelta] = 0, + **kwargs, ) -> Dict[str, Any]: - decoded = self.decode_complete( - jwt, key, algorithms, options, audience, issuer, leeway - ) + decoded = self.decode_complete(jwt, key, algorithms, options, **kwargs) return decoded["payload"] - def _validate_claims(self, payload, options, audience, issuer, leeway): + def _validate_claims( + self, payload, options, audience=None, issuer=None, leeway=0, **kwargs + ): if isinstance(leeway, timedelta): leeway = leeway.total_seconds() - if not isinstance(audience, (str, type(None), Iterable)): + if not isinstance(audience, (bytes, str, type(None), Iterable)): raise TypeError("audience must be a string, iterable, or None") self._validate_required_claims(payload, options) diff --git a/tests/test_api_jwt.py b/tests/test_api_jwt.py index 53fd150..fa3167a 100644 --- a/tests/test_api_jwt.py +++ b/tests/test_api_jwt.py @@ -106,17 +106,6 @@ class TestJWT: exception = context.value assert str(exception) == "Invalid payload string: must be a json object" - def test_decode_with_unknown_parameter_throws_exception(self, jwt): - secret = "secret" - example_jwt = ( - b"eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9" - b".eyJoZWxsbyI6ICJ3b3JsZCJ9" - b".tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8" - ) - - with pytest.raises(TypeError): - jwt.decode(example_jwt, key=secret, foo="bar", algorithms=["HS256"]) - def test_decode_with_invalid_audience_param_throws_exception(self, jwt): secret = "secret" example_jwt = ( |