summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Dufresne <jon.dufresne@gmail.com>2020-12-21 08:30:48 -0800
committerGitHub <noreply@github.com>2020-12-21 11:30:48 -0500
commit811ae79ceaae8ad9bbad24c30e2d3dd4d920e4df (patch)
tree0615c3a362bdf3bae25c10831e30787626e6061a
parentd5eff6452d66d0cafce9fecd19f5453ce8ea95fc (diff)
downloadpyjwt-811ae79ceaae8ad9bbad24c30e2d3dd4d920e4df.tar.gz
Simplify black configuration to be closer to upstream defaults (#568)
* Simplify black configuration to be closer to upstream defaults Avoid extra configuration by simply going with Black defaults. This allows removing some configuration options, thus simplifying the overall configuration. It also makes the code style closer to community conventions. As more projects adopt black formatting, more code will look like the black defaults. Further, the default 88 tends to create more readable lines, IMO. The black rationale is located at: https://black.readthedocs.io/en/stable/the_black_code_style.html#line-length * Update tests/test_api_jws.py Co-authored-by: José Padilla <jpadilla@webapplicate.com> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update tests/test_api_jws.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: José Padilla <jpadilla@webapplicate.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
-rw-r--r--docs/conf.py4
-rw-r--r--jwt/algorithms.py16
-rw-r--r--jwt/api_jwk.py8
-rw-r--r--jwt/api_jws.py12
-rw-r--r--jwt/api_jwt.py16
-rw-r--r--jwt/jwks_client.py4
-rw-r--r--pyproject.toml5
-rw-r--r--setup.cfg1
-rw-r--r--tests/test_algorithms.py8
-rw-r--r--tests/test_api_jws.py72
-rw-r--r--tests/test_api_jwt.py60
-rw-r--r--tests/test_jwks_client.py4
-rw-r--r--tests/utils.py4
13 files changed, 51 insertions, 163 deletions
diff --git a/docs/conf.py b/docs/conf.py
index 297e903..c88580d 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -20,9 +20,7 @@ def find_version(*file_paths):
string inside.
"""
version_file = read(*file_paths)
- version_match = re.search(
- r"^__version__ = ['\"]([^'\"]*)['\"]", version_file, re.M
- )
+ version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", version_file, re.M)
if version_match:
return version_match.group(1)
raise RuntimeError("Unable to find version string.")
diff --git a/jwt/algorithms.py b/jwt/algorithms.py
index 1b0f416..35e43bf 100644
--- a/jwt/algorithms.py
+++ b/jwt/algorithms.py
@@ -444,23 +444,17 @@ if has_crypto:
if len(x) == len(y) == 32:
curve_obj = ec.SECP256R1()
else:
- raise InvalidKeyError(
- "Coords should be 32 bytes for curve P-256"
- )
+ raise InvalidKeyError("Coords should be 32 bytes for curve P-256")
elif curve == "P-384":
if len(x) == len(y) == 48:
curve_obj = ec.SECP384R1()
else:
- raise InvalidKeyError(
- "Coords should be 48 bytes for curve P-384"
- )
+ raise InvalidKeyError("Coords should be 48 bytes for curve P-384")
elif curve == "P-521":
if len(x) == len(y) == 66:
curve_obj = ec.SECP521R1()
else:
- raise InvalidKeyError(
- "Coords should be 66 bytes for curve P-521"
- )
+ raise InvalidKeyError("Coords should be 66 bytes for curve P-521")
else:
raise InvalidKeyError(f"Invalid curve: {curve}")
@@ -568,8 +562,6 @@ if has_crypto:
if isinstance(key, Ed25519PrivateKey):
key = key.public_key()
key.verify(sig, msg)
- return (
- True # If no exception was raised, the signature is valid.
- )
+ return True # If no exception was raised, the signature is valid.
except cryptography.exceptions.InvalidSignature:
return False
diff --git a/jwt/api_jwk.py b/jwt/api_jwk.py
index 0966e40..3c10e07 100644
--- a/jwt/api_jwk.py
+++ b/jwt/api_jwk.py
@@ -13,16 +13,12 @@ class PyJWK:
algorithm = self._jwk_data.get("alg", None)
if not algorithm:
- raise PyJWKError(
- "Unable to find a algorithm for key: %s" % self._jwk_data
- )
+ raise PyJWKError("Unable to find a algorithm for key: %s" % self._jwk_data)
self.Algorithm = self._algorithms.get(algorithm)
if not self.Algorithm:
- raise PyJWKError(
- "Unable to find a algorithm for key: %s" % self._jwk_data
- )
+ raise PyJWKError("Unable to find a algorithm for key: %s" % self._jwk_data)
self.key = self.Algorithm.from_jwk(self._jwk_data)
diff --git a/jwt/api_jws.py b/jwt/api_jws.py
index 152c237..6d13699 100644
--- a/jwt/api_jws.py
+++ b/jwt/api_jws.py
@@ -24,9 +24,7 @@ class PyJWS:
def __init__(self, algorithms=None, options=None):
self._algorithms = get_default_algorithms()
self._valid_algs = (
- set(algorithms)
- if algorithms is not None
- else set(self._algorithms)
+ set(algorithms) if algorithms is not None else set(self._algorithms)
)
# Remove algorithms that aren't on the whitelist
@@ -148,9 +146,7 @@ class PyJWS:
payload, signing_input, header, signature = self._load(jwt)
if verify_signature:
- self._verify_signature(
- signing_input, header, signature, key, algorithms
- )
+ self._verify_signature(signing_input, header, signature, key, algorithms)
return {
"payload": payload,
@@ -230,9 +226,7 @@ class PyJWS:
alg = header.get("alg")
if algorithms is not None and alg not in algorithms:
- raise InvalidAlgorithmError(
- "The specified alg value is not allowed"
- )
+ raise InvalidAlgorithmError("The specified alg value is not allowed")
try:
alg_obj = self._algorithms[alg]
diff --git a/jwt/api_jwt.py b/jwt/api_jwt.py
index da273c5..80b33bf 100644
--- a/jwt/api_jwt.py
+++ b/jwt/api_jwt.py
@@ -54,17 +54,13 @@ class PyJWT:
for time_claim in ["exp", "iat", "nbf"]:
# Convert datetime to a intDate value in known time-format claims
if isinstance(payload.get(time_claim), datetime):
- payload[time_claim] = timegm(
- payload[time_claim].utctimetuple()
- )
+ payload[time_claim] = timegm(payload[time_claim].utctimetuple())
json_payload = json.dumps(
payload, separators=(",", ":"), cls=json_encoder
).encode("utf-8")
- return api_jws.encode(
- json_payload, key, algorithm, headers, json_encoder
- )
+ return api_jws.encode(json_payload, key, algorithm, headers, json_encoder)
def decode_complete(
self,
@@ -154,9 +150,7 @@ class PyJWT:
try:
int(payload["iat"])
except ValueError:
- raise InvalidIssuedAtError(
- "Issued At claim (iat) must be an integer."
- )
+ raise InvalidIssuedAtError("Issued At claim (iat) must be an integer.")
def _validate_nbf(self, payload, now, leeway):
try:
@@ -171,9 +165,7 @@ class PyJWT:
try:
exp = int(payload["exp"])
except ValueError:
- raise DecodeError(
- "Expiration Time claim (exp) must be an" " integer."
- )
+ raise DecodeError("Expiration Time claim (exp) must be an" " integer.")
if exp < (now - leeway):
raise ExpiredSignatureError("Signature has expired")
diff --git a/jwt/jwks_client.py b/jwt/jwks_client.py
index ecd10cb..2e2ff73 100644
--- a/jwt/jwks_client.py
+++ b/jwt/jwks_client.py
@@ -27,9 +27,7 @@ class PyJWKClient:
signing_keys.append(jwk_set_key)
if len(signing_keys) == 0:
- raise PyJWKClientError(
- "The JWKS endpoint did not contain any signing keys"
- )
+ raise PyJWKClientError("The JWKS endpoint did not contain any signing keys")
return signing_keys
diff --git a/pyproject.toml b/pyproject.toml
index 95cc31b..85e9eca 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -15,12 +15,7 @@ source = ["jwt", ".tox/*/site-packages"]
show_missing = true
-[tool.black]
-line-length = 79
-
-
[tool.isort]
profile = "black"
atomic = true
combine_as_imports = true
-line_length = 79
diff --git a/setup.cfg b/setup.cfg
index 6792f7c..7ca4814 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -64,7 +64,6 @@ exclude =
tests.*
[flake8]
-max-line-length = 79
extend-ignore = E203, E501
[mypy]
diff --git a/tests/test_algorithms.py b/tests/test_algorithms.py
index 3009833..3851891 100644
--- a/tests/test_algorithms.py
+++ b/tests/test_algorithms.py
@@ -238,9 +238,7 @@ class TestAlgorithms:
# EC coordinates not equally long
with pytest.raises(InvalidKeyError):
- algo.from_jwk(
- '{"kty": "EC", "x": "dGVzdHRlc3Q=", "y": "dGVzdA=="}'
- )
+ algo.from_jwk('{"kty": "EC", "x": "dGVzdHRlc3Q=", "y": "dGVzdA=="}')
# EC coordinates length invalid
for curve in ("P-256", "P-384", "P-521"):
@@ -575,9 +573,7 @@ class TestAlgorithmsRFC7520:
b"gd2hlcmUgeW91IG1pZ2h0IGJlIHN3ZXB0IG9mZiB0by4"
)
- signature = base64url_decode(
- b"s0h6KThzkfBBBkLspW1h84VsJZFTsPPqMDA7g1Md7p0"
- )
+ signature = base64url_decode(b"s0h6KThzkfBBBkLspW1h84VsJZFTsPPqMDA7g1Md7p0")
algo = HMACAlgorithm(HMACAlgorithm.SHA256)
key = algo.prepare_key(load_hmac_key())
diff --git a/tests/test_api_jws.py b/tests/test_api_jws.py
index bd56aac..01efb28 100644
--- a/tests/test_api_jws.py
+++ b/tests/test_api_jws.py
@@ -114,11 +114,7 @@ class TestJWS:
def test_decode_missing_segments_throws_exception(self, jws):
secret = "secret"
- example_jws = (
- "eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9"
- ".eyJoZWxsbyI6ICJ3b3JsZCJ9"
- ""
- ) # Missing segment
+ example_jws = "eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJoZWxsbyI6ICJ3b3JsZCJ9" # Missing segment
with pytest.raises(DecodeError) as context:
jws.decode(example_jws, secret, algorithms=["HS256"])
@@ -160,9 +156,7 @@ class TestJWS:
exception = context.value
assert str(exception) == "Invalid header string: must be a json object"
- def test_encode_algorithm_param_should_be_case_sensitive(
- self, jws, payload
- ):
+ def test_encode_algorithm_param_should_be_case_sensitive(self, jws, payload):
jws.encode(payload, "secret", algorithm="HS256")
@@ -207,9 +201,7 @@ class TestJWS:
b"gEW0pdU4kxPthjtehYdhxB9mMOGajt1xCKlGGXDJ8PM"
)
- decoded_payload = jws.decode(
- example_jws, example_secret, algorithms=["HS256"]
- )
+ decoded_payload = jws.decode(example_jws, example_secret, algorithms=["HS256"])
assert decoded_payload == payload
@@ -221,9 +213,7 @@ class TestJWS:
b"gEW0pdU4kxPthjtehYdhxB9mMOGajt1xCKlGGXDJ8PM"
)
- decoded = jws.decode_complete(
- example_jws, example_secret, algorithms=["HS256"]
- )
+ decoded = jws.decode_complete(example_jws, example_secret, algorithms=["HS256"])
assert decoded == {
"header": {"alg": "HS256", "typ": "JWT"},
@@ -248,9 +238,7 @@ class TestJWS:
b"eyJoZWxsbyI6IndvcmxkIn0.TORyNQab_MoXM7DvNKaTwbrJr4UY"
b"d2SsX8hhlnWelQFmPFSf_JzC2EbLnar92t-bXsDovzxp25ExazrVHkfPkQ"
)
- decoded_payload = jws.decode(
- example_jws, example_pubkey, algorithms=["ES256"]
- )
+ decoded_payload = jws.decode(example_jws, example_pubkey, algorithms=["ES256"])
json_payload = json.loads(decoded_payload)
assert json_payload == example_payload
@@ -276,9 +264,7 @@ class TestJWS:
b"uwmrtSWCBUjiN8sqJ00CDgycxKqHfUndZbEAOjcCAhBr"
b"qWW3mSVivUfubsYbwUdUG3fSRPjaUPcpe8A"
)
- decoded_payload = jws.decode(
- example_jws, example_pubkey, algorithms=["RS384"]
- )
+ decoded_payload = jws.decode(example_jws, example_pubkey, algorithms=["RS384"])
json_payload = json.loads(decoded_payload)
assert json_payload == example_payload
@@ -299,9 +285,7 @@ class TestJWS:
def test_allow_skip_verification(self, jws, payload):
right_secret = "foo"
jws_message = jws.encode(payload, right_secret)
- decoded_payload = jws.decode(
- jws_message, options={"verify_signature": False}
- )
+ decoded_payload = jws.decode(jws_message, options={"verify_signature": False})
assert decoded_payload == payload
@@ -364,14 +348,8 @@ class TestJWS:
assert "Signature verification" in str(exc.value)
- def test_verify_signature_with_no_algo_header_throws_exception(
- self, jws, payload
- ):
- example_jws = (
- b"e30"
- b".eyJhIjo1fQ"
- b".KEh186CjVw_Q8FadjJcaVnE7hO5Z9nHBbU8TgbhHcBY"
- )
+ def test_verify_signature_with_no_algo_header_throws_exception(self, jws, payload):
+ example_jws = b"e30.eyJhIjo1fQ.KEh186CjVw_Q8FadjJcaVnE7hO5Z9nHBbU8TgbhHcBY"
with pytest.raises(InvalidAlgorithmError):
jws.decode(example_jws, "secret", algorithms=["HS256"])
@@ -467,9 +445,7 @@ class TestJWS:
with pytest.raises(DecodeError):
jws.decode(jws_message, algorithms=["none"])
- def test_decode_with_algo_none_and_verify_false_should_pass(
- self, jws, payload
- ):
+ def test_decode_with_algo_none_and_verify_false_should_pass(self, jws, payload):
jws_message = jws.encode(payload, key=None, algorithm=None)
jws.decode(jws_message, options={"verify_signature": False})
@@ -486,9 +462,7 @@ class TestJWS:
assert "kid" in header
assert header["kid"] == "toomanysecrets"
- def test_get_unverified_header_fails_on_bad_header_types(
- self, jws, payload
- ):
+ def test_get_unverified_header_fails_on_bad_header_types(self, jws, payload):
# Contains a bad kid value (int 123 instead of string)
example_jws = (
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6MTIzfQ"
@@ -505,9 +479,7 @@ class TestJWS:
def test_encode_decode_with_rsa_sha256(self, jws, payload):
# PEM-formatted RSA key
with open(key_path("testkey_rsa.priv"), "rb") as rsa_priv_file:
- priv_rsakey = load_pem_private_key(
- rsa_priv_file.read(), password=None
- )
+ priv_rsakey = load_pem_private_key(rsa_priv_file.read(), password=None)
jws_message = jws.encode(payload, priv_rsakey, algorithm="RS256")
with open(key_path("testkey_rsa.pub"), "rb") as rsa_pub_file:
@@ -528,9 +500,7 @@ class TestJWS:
def test_encode_decode_with_rsa_sha384(self, jws, payload):
# PEM-formatted RSA key
with open(key_path("testkey_rsa.priv"), "rb") as rsa_priv_file:
- priv_rsakey = load_pem_private_key(
- rsa_priv_file.read(), password=None
- )
+ priv_rsakey = load_pem_private_key(rsa_priv_file.read(), password=None)
jws_message = jws.encode(payload, priv_rsakey, algorithm="RS384")
with open(key_path("testkey_rsa.pub"), "rb") as rsa_pub_file:
@@ -550,9 +520,7 @@ class TestJWS:
def test_encode_decode_with_rsa_sha512(self, jws, payload):
# PEM-formatted RSA key
with open(key_path("testkey_rsa.priv"), "rb") as rsa_priv_file:
- priv_rsakey = load_pem_private_key(
- rsa_priv_file.read(), password=None
- )
+ priv_rsakey = load_pem_private_key(rsa_priv_file.read(), password=None)
jws_message = jws.encode(payload, priv_rsakey, algorithm="RS512")
with open(key_path("testkey_rsa.pub"), "rb") as rsa_pub_file:
@@ -592,9 +560,7 @@ class TestJWS:
def test_encode_decode_with_ecdsa_sha256(self, jws, payload):
# PEM-formatted EC key
with open(key_path("testkey_ec.priv"), "rb") as ec_priv_file:
- priv_eckey = load_pem_private_key(
- ec_priv_file.read(), password=None
- )
+ priv_eckey = load_pem_private_key(ec_priv_file.read(), password=None)
jws_message = jws.encode(payload, priv_eckey, algorithm="ES256")
with open(key_path("testkey_ec.pub"), "rb") as ec_pub_file:
@@ -615,9 +581,7 @@ class TestJWS:
# PEM-formatted EC key
with open(key_path("testkey_ec.priv"), "rb") as ec_priv_file:
- priv_eckey = load_pem_private_key(
- ec_priv_file.read(), password=None
- )
+ priv_eckey = load_pem_private_key(ec_priv_file.read(), password=None)
jws_message = jws.encode(payload, priv_eckey, algorithm="ES384")
with open(key_path("testkey_ec.pub"), "rb") as ec_pub_file:
@@ -637,9 +601,7 @@ class TestJWS:
def test_encode_decode_with_ecdsa_sha512(self, jws, payload):
# PEM-formatted EC key
with open(key_path("testkey_ec.priv"), "rb") as ec_priv_file:
- priv_eckey = load_pem_private_key(
- ec_priv_file.read(), password=None
- )
+ priv_eckey = load_pem_private_key(ec_priv_file.read(), password=None)
jws_message = jws.encode(payload, priv_eckey, algorithm="ES512")
with open(key_path("testkey_ec.pub"), "rb") as ec_pub_file:
diff --git a/tests/test_api_jwt.py b/tests/test_api_jwt.py
index e575668..f161763 100644
--- a/tests/test_api_jwt.py
+++ b/tests/test_api_jwt.py
@@ -40,9 +40,7 @@ class TestJWT:
b".eyJoZWxsbyI6ICJ3b3JsZCJ9"
b".tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8"
)
- decoded_payload = jwt.decode(
- example_jwt, example_secret, algorithms=["HS256"]
- )
+ decoded_payload = jwt.decode(example_jwt, example_secret, algorithms=["HS256"])
assert decoded_payload == example_payload
@@ -54,9 +52,7 @@ class TestJWT:
b".eyJoZWxsbyI6ICJ3b3JsZCJ9"
b".tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8"
)
- decoded = jwt.decode_complete(
- example_jwt, example_secret, algorithms=["HS256"]
- )
+ decoded = jwt.decode_complete(example_jwt, example_secret, algorithms=["HS256"])
assert decoded == {
"header": {"alg": "HS256", "typ": "JWT"},
@@ -107,9 +103,7 @@ class TestJWT:
jwt.decode(example_jwt, secret, algorithms=["HS256"])
exception = context.value
- assert (
- str(exception) == "Invalid payload string: must be a json object"
- )
+ assert str(exception) == "Invalid payload string: must be a json object"
def test_decode_with_invalid_audience_param_throws_exception(self, jwt):
secret = "secret"
@@ -221,15 +215,9 @@ class TestJWT:
jwt_message, secret, leeway=1, algorithms=["HS256"]
)
- assert decoded_payload["exp"] == timegm(
- current_datetime.utctimetuple()
- )
- assert decoded_payload["iat"] == timegm(
- current_datetime.utctimetuple()
- )
- assert decoded_payload["nbf"] == timegm(
- current_datetime.utctimetuple()
- )
+ assert decoded_payload["exp"] == timegm(current_datetime.utctimetuple())
+ assert decoded_payload["iat"] == timegm(current_datetime.utctimetuple())
+ assert decoded_payload["nbf"] == timegm(current_datetime.utctimetuple())
# payload is not mutated.
assert payload == {
"exp": current_datetime,
@@ -252,9 +240,7 @@ class TestJWT:
b"d2SsX8hhlnWelQFmPFSf_JzC2EbLnar92t-bXsDovzxp25ExazrVHkfPkQ"
)
- decoded_payload = jwt.decode(
- example_jwt, example_pubkey, algorithms=["ES256"]
- )
+ decoded_payload = jwt.decode(example_jwt, example_pubkey, algorithms=["ES256"])
assert decoded_payload == example_payload
# 'Control' RSA JWT created by another library.
@@ -278,9 +264,7 @@ class TestJWT:
b"uwmrtSWCBUjiN8sqJ00CDgycxKqHfUndZbEAOjcCAhBr"
b"qWW3mSVivUfubsYbwUdUG3fSRPjaUPcpe8A"
)
- decoded_payload = jwt.decode(
- example_jwt, example_pubkey, algorithms=["RS384"]
- )
+ decoded_payload = jwt.decode(example_jwt, example_pubkey, algorithms=["RS384"])
assert decoded_payload == example_payload
@@ -339,9 +323,7 @@ class TestJWT:
# With 1 seconds, should fail
for leeway in (1, timedelta(seconds=1)):
with pytest.raises(ExpiredSignatureError):
- jwt.decode(
- jwt_message, secret, leeway=leeway, algorithms=["HS256"]
- )
+ jwt.decode(jwt_message, secret, leeway=leeway, algorithms=["HS256"])
def test_decode_with_notbefore_with_leeway(self, jwt, payload):
payload["nbf"] = utc_timestamp() + 10
@@ -397,9 +379,7 @@ class TestJWT:
token = jwt.encode(payload, "secret")
with pytest.raises(InvalidAudienceError):
- jwt.decode(
- token, "secret", audience="urn-me", algorithms=["HS256"]
- )
+ jwt.decode(token, "secret", audience="urn-me", algorithms=["HS256"])
def test_raise_exception_invalid_audience_in_array(self, jwt):
payload = {
@@ -410,9 +390,7 @@ class TestJWT:
token = jwt.encode(payload, "secret")
with pytest.raises(InvalidAudienceError):
- jwt.decode(
- token, "secret", audience="urn:me", algorithms=["HS256"]
- )
+ jwt.decode(token, "secret", audience="urn:me", algorithms=["HS256"])
def test_raise_exception_token_without_issuer(self, jwt):
issuer = "urn:wrong"
@@ -431,9 +409,7 @@ class TestJWT:
token = jwt.encode(payload, "secret")
with pytest.raises(MissingRequiredClaimError) as exc:
- jwt.decode(
- token, "secret", audience="urn:me", algorithms=["HS256"]
- )
+ jwt.decode(token, "secret", audience="urn:me", algorithms=["HS256"])
assert exc.value.claim == "aud"
@@ -476,9 +452,7 @@ class TestJWT:
algorithms=["HS256"],
)
- def test_decode_should_raise_error_if_exp_required_but_not_present(
- self, jwt
- ):
+ def test_decode_should_raise_error_if_exp_required_but_not_present(self, jwt):
payload = {
"some": "payload",
# exp not present
@@ -495,9 +469,7 @@ class TestJWT:
assert exc.value.claim == "exp"
- def test_decode_should_raise_error_if_iat_required_but_not_present(
- self, jwt
- ):
+ def test_decode_should_raise_error_if_iat_required_but_not_present(self, jwt):
payload = {
"some": "payload",
# iat not present
@@ -514,9 +486,7 @@ class TestJWT:
assert exc.value.claim == "iat"
- def test_decode_should_raise_error_if_nbf_required_but_not_present(
- self, jwt
- ):
+ def test_decode_should_raise_error_if_nbf_required_but_not_present(self, jwt):
payload = {
"some": "payload",
# nbf not present
diff --git a/tests/test_jwks_client.py b/tests/test_jwks_client.py
index d607863..7c3dde4 100644
--- a/tests/test_jwks_client.py
+++ b/tests/test_jwks_client.py
@@ -73,9 +73,7 @@ class TestPyJWKClient:
with pytest.raises(PyJWKClientError) as exc:
jwks_client.get_signing_keys()
- assert "The JWKS endpoint did not contain any signing keys" in str(
- exc.value
- )
+ assert "The JWKS endpoint did not contain any signing keys" in str(exc.value)
def test_get_signing_key(self):
url = "https://dev-87evx9ru.auth0.com/.well-known/jwks.json"
diff --git a/tests/utils.py b/tests/utils.py
index 6847aba..faa3d5a 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -12,9 +12,7 @@ def utc_timestamp():
def key_path(key_name):
- return os.path.join(
- os.path.dirname(os.path.realpath(__file__)), "keys", key_name
- )
+ return os.path.join(os.path.dirname(os.path.realpath(__file__)), "keys", key_name)
def no_crypto_required(class_or_func):