def test_base64_encode_decode_header_fixed_data(self): # Example from https://tools.ietf.org/html/rfc7519#section-3.1 header = bytes([ 123, 34, 116, 121, 112, 34, 58, 34, 74, 87, 84, 34, 44, 13, 10, 32, 34, 97, 108, 103, 34, 58, 34, 72, 83, 50, 53, 54, 34, 125 ]) encoded_header = b'eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9' self.assertEqual(_jwt_format._base64_encode(header), encoded_header) self.assertEqual(_jwt_format._base64_decode(encoded_header), header)
def test_base64_encode_decode_payload_fixed_data(self): # Example from https://tools.ietf.org/html/rfc7519#section-3.1 payload = bytes([ 123, 34, 105, 115, 115, 34, 58, 34, 106, 111, 101, 34, 44, 13, 10, 32, 34, 101, 120, 112, 34, 58, 49, 51, 48, 48, 56, 49, 57, 51, 56, 48, 44, 13, 10, 32, 34, 104, 116, 116, 112, 58, 47, 47, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109, 47, 105, 115, 95, 114, 111, 111, 116, 34, 58, 116, 114, 117, 101, 125 ]) encoded_payload = (b'eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0' b'dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ') self.assertEqual(_jwt_format._base64_encode(payload), encoded_payload) self.assertEqual(_jwt_format._base64_decode(encoded_payload), payload)
def test_base64_decode_fails_with_unknown_chars(self): self.assertNotEmpty( _jwt_format._base64_decode( b'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-' )) self.assertEqual(_jwt_format._base64_decode(b''), b'') with self.assertRaises(_jwt_error.JwtInvalidError): _jwt_format._base64_decode(b'[') with self.assertRaises(_jwt_error.JwtInvalidError): _jwt_format._base64_decode(b'@') with self.assertRaises(_jwt_error.JwtInvalidError): _jwt_format._base64_decode(b'/') with self.assertRaises(_jwt_error.JwtInvalidError): _jwt_format._base64_decode(b':') with self.assertRaises(_jwt_error.JwtInvalidError): _jwt_format._base64_decode(b'{')
def test_base64_decode_bad_format_raises_jwt_invalid_error(self): with self.assertRaises(_jwt_error.JwtInvalidError): _jwt_format._base64_decode(b'aeyJh')