summaryrefslogtreecommitdiff
path: root/tests/test_api_jws.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_api_jws.py')
-rw-r--r--tests/test_api_jws.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/test_api_jws.py b/tests/test_api_jws.py
index 07d1511..0a0e295 100644
--- a/tests/test_api_jws.py
+++ b/tests/test_api_jws.py
@@ -719,3 +719,54 @@ class TestJWS:
jws.encode(payload, "secret", headers={"kid": None})
assert "Key ID header parameter must be a string" == str(exc.value)
+
+ def test_encode_decode_with_detached_content(self, jws, payload):
+ secret = "secret"
+ jws_message = jws.encode(
+ payload, secret, algorithm="HS256", is_payload_detached=True
+ )
+
+ jws.decode(jws_message, secret, algorithms=["HS256"], detached_payload=payload)
+
+ def test_encode_detached_content_with_b64_header(self, jws, payload):
+ secret = "secret"
+
+ # Check that detached content is automatically detected when b64 is false
+ headers = {"b64": False}
+ token = jws.encode(payload, secret, "HS256", headers)
+
+ msg_header, msg_payload, _ = token.split(".")
+ msg_header = base64url_decode(msg_header.encode())
+ msg_header_obj = json.loads(msg_header)
+
+ assert "b64" in msg_header_obj
+ assert msg_header_obj["b64"] is False
+ # Check that the payload is not inside the token
+ assert not msg_payload
+
+ # Check that content is not detached and b64 header removed when b64 is true
+ headers = {"b64": True}
+ token = jws.encode(payload, secret, "HS256", headers)
+
+ msg_header, msg_payload, _ = token.split(".")
+ msg_header = base64url_decode(msg_header.encode())
+ msg_header_obj = json.loads(msg_header)
+
+ assert "b64" not in msg_header_obj
+ assert msg_payload
+
+ def test_decode_detached_content_without_proper_argument(self, jws):
+ example_jws = (
+ "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImI2NCI6ZmFsc2V9"
+ "."
+ ".65yNkX_ZH4A_6pHaTL_eI84OXOHtfl4K0k5UnlXZ8f4"
+ )
+ example_secret = "secret"
+
+ with pytest.raises(DecodeError) as exc:
+ jws.decode(example_jws, example_secret, algorithms=["HS256"])
+
+ assert (
+ 'It is required that you pass in a value for the "detached_payload" argument to decode a message having the b64 header set to false.'
+ in str(exc.value)
+ )