Skip to content

Commit 90577f7

Browse files
committed
Added a test to improve coverage and cleaned up some existing tests.
1 parent a39b62e commit 90577f7

File tree

3 files changed

+30
-11
lines changed

3 files changed

+30
-11
lines changed

jwt/api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def encode(self, payload, key, algorithm='HS256', headers=None, json_encoder=Non
8484

8585
# Header
8686
header = {'typ': 'JWT', 'alg': algorithm}
87-
87+
8888
if headers:
8989
header.update(headers)
9090

tests/test_algorithms.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -113,31 +113,31 @@ def test_rsa_should_reject_non_string_key(self):
113113
def test_rsa_verify_should_return_false_if_signature_invalid(self):
114114
algo = RSAAlgorithm(RSAAlgorithm.SHA256)
115115

116-
jwt_message = ensure_bytes('Hello World!')
116+
message = ensure_bytes('Hello World!')
117117

118-
jwt_sig = base64.b64decode(ensure_bytes(
118+
sig = base64.b64decode(ensure_bytes(
119119
'yS6zk9DBkuGTtcBzLUzSpo9gGJxJFOGvUqN01iLhWHrzBQ9ZEz3+Ae38AXp'
120120
'10RWwscp42ySC85Z6zoN67yGkLNWnfmCZSEv+xqELGEvBJvciOKsrhiObUl'
121121
'2mveSc1oeO/2ujkGDkkkJ2epn0YliacVjZF5+/uDmImUfAAj8lzjnHlzYix'
122122
'sn5jGz1H07jYYbi9diixN8IUhXeTafwFg02IcONhum29V40Wu6O5tAKWlJX'
123123
'fHJnNUzAEUOXS0WahHVb57D30pcgIji9z923q90p5c7E2cU8V+E1qe8NdCA'
124124
'APCDzZZ9zQ/dgcMVaBrGrgimrcLbPjueOKFgSO+SSjIElKA=='))
125125

126-
jwt_sig += ensure_bytes('123') # Signature is now invalid
126+
sig += ensure_bytes('123') # Signature is now invalid
127127

128128
with open(key_path('testkey_rsa.pub'), 'r') as keyfile:
129-
jwt_pub_key = algo.prepare_key(keyfile.read())
129+
pub_key = algo.prepare_key(keyfile.read())
130130

131-
result = algo.verify(jwt_message, jwt_pub_key, jwt_sig)
131+
result = algo.verify(message, pub_key, sig)
132132
self.assertFalse(result)
133133

134134
@unittest.skipIf(not has_crypto, 'Not supported without cryptography library')
135135
def test_rsa_verify_should_return_true_if_signature_valid(self):
136136
algo = RSAAlgorithm(RSAAlgorithm.SHA256)
137137

138-
jwt_message = ensure_bytes('Hello World!')
138+
message = ensure_bytes('Hello World!')
139139

140-
jwt_sig = base64.b64decode(ensure_bytes(
140+
sig = base64.b64decode(ensure_bytes(
141141
'yS6zk9DBkuGTtcBzLUzSpo9gGJxJFOGvUqN01iLhWHrzBQ9ZEz3+Ae38AXp'
142142
'10RWwscp42ySC85Z6zoN67yGkLNWnfmCZSEv+xqELGEvBJvciOKsrhiObUl'
143143
'2mveSc1oeO/2ujkGDkkkJ2epn0YliacVjZF5+/uDmImUfAAj8lzjnHlzYix'
@@ -146,9 +146,9 @@ def test_rsa_verify_should_return_true_if_signature_valid(self):
146146
'APCDzZZ9zQ/dgcMVaBrGrgimrcLbPjueOKFgSO+SSjIElKA=='))
147147

148148
with open(key_path('testkey_rsa.pub'), 'r') as keyfile:
149-
jwt_pub_key = algo.prepare_key(keyfile.read())
149+
pub_key = algo.prepare_key(keyfile.read())
150150

151-
result = algo.verify(jwt_message, jwt_pub_key, jwt_sig)
151+
result = algo.verify(message, pub_key, sig)
152152
self.assertTrue(result)
153153

154154
@unittest.skipIf(not has_crypto, 'Not supported without cryptography library')

tests/test_api.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@
1313
InvalidAlgorithmError, InvalidAudienceError, InvalidIssuedAtError,
1414
InvalidIssuerError
1515
)
16+
from jwt.utils import base64url_decode
1617

17-
from .compat import text_type, unittest
18+
from .compat import string_types, text_type, unittest
1819
from .utils import ensure_bytes
1920

2021
try:
@@ -856,6 +857,24 @@ def default(self, o):
856857
payload = self.jwt.decode(token, 'secret')
857858
self.assertEqual(payload, {'some_decimal': 'it worked'})
858859

860+
def test_encode_headers_parameter_adds_headers(self):
861+
headers = {'testheader': True}
862+
token = self.jwt.encode({'msg': 'hello world'}, 'secret', headers=headers)
863+
864+
if not isinstance(token, string_types):
865+
token = token.decode()
866+
867+
header = token[0:token.index('.')].encode()
868+
header = base64url_decode(header)
869+
870+
if not isinstance(header, text_type):
871+
header = header.decode()
872+
873+
header_obj = json.loads(header)
874+
875+
self.assertIn('testheader', header_obj)
876+
self.assertEqual(header_obj['testheader'], headers['testheader'])
877+
859878

860879
if __name__ == '__main__':
861880
unittest.main()

0 commit comments

Comments
 (0)