from pyeudiw.jwt.exceptions import JWTDecodeError, JWTInvalidElementPosition
from pyeudiw.jwt.utils import (
decode_jwt_element,
decode_jwt_header,
decode_jwt_payload,
is_jwe_format,
is_jwt_format,
)
from pyeudiw.tests.jwt import VALID_JWE, VALID_TC_JWT
[docs]
def test_decode_jwt_element():
payload = decode_jwt_element(VALID_TC_JWT, 1)
assert payload
assert payload["sub"] == "1234567890"
assert payload["name"] == "John Doe"
assert payload["iat"] == 1516239022
header = decode_jwt_element(VALID_TC_JWT, 0)
assert header
assert header["alg"] == "HS256"
assert header["typ"] == "JWT"
[docs]
def test_decode_jwt_element_signature_failure():
try:
decode_jwt_element(VALID_TC_JWT, 2)
assert False
except JWTDecodeError:
assert True
[docs]
def test_decode_jwt_element_invalid():
try:
decode_jwt_element(VALID_TC_JWT, -1)
assert False
except JWTInvalidElementPosition:
assert True
try:
decode_jwt_element(VALID_TC_JWT, 3)
assert False
except JWTInvalidElementPosition:
assert True
[docs]
def test_decode_jwt_payload():
payload = decode_jwt_payload(VALID_TC_JWT)
assert payload
assert payload["sub"] == "1234567890"
assert payload["name"] == "John Doe"
assert payload["iat"] == 1516239022