@@ -25,22 +25,23 @@ def test_encode_decode(self):
2525 secret = 'secret'
2626 jwt_message = jwt .encode (self .payload , secret )
2727 decoded_payload = jwt .decode (jwt_message , secret )
28+
2829 self .assertEqual (decoded_payload , self .payload )
2930
3031 def test_encode_bad_type (self ):
3132
3233 types = ['string' , tuple (), list (), 42 , set ()]
3334
3435 for t in types :
35- with self .assertRaises (TypeError ):
36- jwt .encode (t , 'secret' )
36+ self .assertRaises (TypeError , lambda : jwt .encode (t , 'secret' ))
3737
3838 def test_encode_expiration_datetime (self ):
3939 secret = "secret"
4040 current_datetime = datetime .utcnow ()
4141 payload = {"exp" : current_datetime }
4242 jwt_message = jwt .encode (payload , secret )
4343 decoded_payload = jwt .decode (jwt_message , secret , leeway = 1 )
44+
4445 self .assertEqual (
4546 decoded_payload ['exp' ],
4647 timegm (current_datetime .utctimetuple ()))
@@ -49,8 +50,10 @@ def test_bad_secret(self):
4950 right_secret = 'foo'
5051 bad_secret = 'bar'
5152 jwt_message = jwt .encode (self .payload , right_secret )
52- with self .assertRaises (jwt .DecodeError ):
53- jwt .decode (jwt_message , bad_secret )
53+
54+ self .assertRaises (
55+ jwt .DecodeError ,
56+ lambda : jwt .decode (jwt_message , bad_secret ))
5457
5558 def test_decodes_valid_jwt (self ):
5659 example_payload = {"hello" : "world" }
@@ -60,6 +63,7 @@ def test_decodes_valid_jwt(self):
6063 b".eyJoZWxsbyI6ICJ3b3JsZCJ9"
6164 b".tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8" )
6265 decoded_payload = jwt .decode (example_jwt , example_secret )
66+
6367 self .assertEqual (decoded_payload , example_payload )
6468
6569 def test_load_verify_valid_jwt (self ):
@@ -69,36 +73,45 @@ def test_load_verify_valid_jwt(self):
6973 b"eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9"
7074 b".eyJoZWxsbyI6ICJ3b3JsZCJ9"
7175 b".tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8" )
72- decoded_payload , signing_input , header , signature = jwt .load (example_jwt )
73- jwt .verify_signature (decoded_payload , signing_input , header , signature , example_secret )
76+
77+ decoded_payload , signing , header , signature = jwt .load (example_jwt )
78+
79+ jwt .verify_signature (decoded_payload , signing , header ,
80+ signature , example_secret )
81+
7482 self .assertEqual (decoded_payload , example_payload )
7583
7684 def test_allow_skip_verification (self ):
7785 right_secret = 'foo'
7886 jwt_message = jwt .encode (self .payload , right_secret )
7987 decoded_payload = jwt .decode (jwt_message , verify = False )
88+
8089 self .assertEqual (decoded_payload , self .payload )
8190
8291 def test_load_no_verification (self ):
8392 right_secret = 'foo'
8493 jwt_message = jwt .encode (self .payload , right_secret )
85- decoded_payload , signing_input , header , signature = jwt .load (jwt_message )
94+ decoded_payload , signing , header , signature = jwt .load (jwt_message )
95+
8696 self .assertEqual (decoded_payload , self .payload )
8797
8898 def test_no_secret (self ):
8999 right_secret = 'foo'
90100 jwt_message = jwt .encode (self .payload , right_secret )
91101
92- with self .assertRaises (jwt .DecodeError ):
93- jwt .decode (jwt_message )
102+ self .assertRaises (
103+ jwt .DecodeError ,
104+ lambda : jwt .decode (jwt_message ))
94105
95106 def test_verify_signature_no_secret (self ):
96107 right_secret = 'foo'
97108 jwt_message = jwt .encode (self .payload , right_secret )
98- decoded_payload , signing_input , header , signature = jwt .load (jwt_message )
109+ decoded_payload , signing , header , signature = jwt .load (jwt_message )
99110
100- with self .assertRaises (jwt .DecodeError ):
101- jwt .verify_signature (decoded_payload , signing_input , header , signature )
111+ self .assertRaises (
112+ jwt .DecodeError ,
113+ lambda : jwt .verify_signature (decoded_payload , signing ,
114+ header , signature ))
102115
103116 def test_invalid_crypto_alg (self ):
104117 self .assertRaises (NotImplementedError , jwt .encode , self .payload ,
@@ -109,21 +122,29 @@ def test_unicode_secret(self):
109122 jwt_message = jwt .encode (self .payload , secret )
110123
111124 decoded_payload = jwt .decode (jwt_message , secret )
125+
112126 self .assertEqual (decoded_payload , self .payload )
113127
114- decoded_payload , signing_input , header , signature = jwt .load (jwt_message )
115- jwt .verify_signature (decoded_payload , signing_input , header , signature , secret )
128+ decoded_payload , signing , header , signature = jwt .load (jwt_message )
129+
130+ jwt .verify_signature (decoded_payload , signing , header ,
131+ signature , secret )
132+
116133 self .assertEqual (decoded_payload , self .payload )
117134
118135 def test_nonascii_secret (self ):
119136 secret = '\xc2 ' # char value that ascii codec cannot decode
120137 jwt_message = jwt .encode (self .payload , secret )
121138
122139 decoded_payload = jwt .decode (jwt_message , secret )
140+
123141 self .assertEqual (decoded_payload , self .payload )
124142
125- decoded_payload , signing_input , header , signature = jwt .load (jwt_message )
126- jwt .verify_signature (decoded_payload , signing_input , header , signature , secret )
143+ decoded_payload , signing , header , signature = jwt .load (jwt_message )
144+
145+ jwt .verify_signature (decoded_payload , signing ,
146+ header , signature , secret )
147+
127148 self .assertEqual (decoded_payload , self .payload )
128149
129150 def test_decode_unicode_value (self ):
@@ -134,8 +155,9 @@ def test_decode_unicode_value(self):
134155 ".eyJoZWxsbyI6ICJ3b3JsZCJ9"
135156 ".tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8" )
136157 decoded_payload = jwt .decode (example_jwt , example_secret )
158+
137159 self .assertEqual (decoded_payload , example_payload )
138- decoded_payload , signing_input , header , signature = jwt .load (example_jwt )
160+ decoded_payload , signing , header , signature = jwt .load (example_jwt )
139161 self .assertEqual (decoded_payload , example_payload )
140162
141163 def test_decode_invalid_header_padding (self ):
@@ -144,68 +166,102 @@ def test_decode_invalid_header_padding(self):
144166 ".eyJoZWxsbyI6ICJ3b3JsZCJ9"
145167 ".tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8" )
146168 example_secret = "secret"
147- with self .assertRaises (jwt .DecodeError ):
148- jwt .load (example_jwt )
149- with self .assertRaises (jwt .DecodeError ):
150- jwt .decode (example_jwt , example_secret )
169+
170+ self .assertRaises (
171+ jwt .DecodeError ,
172+ lambda : jwt .load (example_jwt ))
173+
174+ self .assertRaises (
175+ jwt .DecodeError ,
176+ lambda : jwt .decode (example_jwt , example_secret ))
151177
152178 def test_decode_invalid_header_string (self ):
153179 example_jwt = (
154180 "eyJhbGciOiAiSFMyNTbpIiwgInR5cCI6ICJKV1QifQ=="
155181 ".eyJoZWxsbyI6ICJ3b3JsZCJ9"
156182 ".tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8" )
157183 example_secret = "secret"
158- with self .assertRaisesRegexp (jwt .DecodeError , "Invalid header string" ):
184+
185+ try :
159186 jwt .load (example_jwt )
160- with self .assertRaisesRegexp (jwt .DecodeError , "Invalid header string" ):
187+ except jwt .DecodeError as e :
188+ self .assertTrue ('Invalid header string' in str (e ))
189+ else :
190+ self .fail ('DecodeError not raised' )
191+
192+ try :
161193 jwt .decode (example_jwt , example_secret )
194+ except jwt .DecodeError as e :
195+ self .assertTrue ('Invalid header string' in str (e ))
196+ else :
197+ self .fail ('DecodeError not raised' )
162198
163199 def test_decode_invalid_payload_padding (self ):
164200 example_jwt = (
165201 "eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9"
166202 ".aeyJoZWxsbyI6ICJ3b3JsZCJ9"
167203 ".tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8" )
168204 example_secret = "secret"
169- with self .assertRaises (jwt .DecodeError ):
170- jwt .load (example_jwt )
171- with self .assertRaises (jwt .DecodeError ):
172- jwt .decode (example_jwt , example_secret )
205+
206+ self .assertRaises (
207+ jwt .DecodeError ,
208+ lambda : jwt .load (example_jwt ))
209+
210+ self .assertRaises (
211+ jwt .DecodeError ,
212+ lambda : jwt .decode (example_jwt , example_secret ))
173213
174214 def test_decode_invalid_payload_string (self ):
175215 example_jwt = (
176216 "eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9"
177217 ".eyJoZWxsb-kiOiAid29ybGQifQ=="
178218 ".tvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8" )
179219 example_secret = "secret"
180- with self . assertRaisesRegexp ( jwt . DecodeError ,
181- "Invalid payload string" ) :
220+
221+ try :
182222 jwt .load (example_jwt )
183- with self .assertRaisesRegexp (jwt .DecodeError ,
184- "Invalid payload string" ):
223+ except jwt .DecodeError as e :
224+ self .assertTrue ('Invalid payload string' in str (e ))
225+ else :
226+ self .fail ('DecodeError not raised' )
227+
228+ try :
185229 jwt .decode (example_jwt , example_secret )
230+ except jwt .DecodeError as e :
231+ self .assertTrue ('Invalid payload string' in str (e ))
232+ else :
233+ self .fail ('DecodeError not raised' )
186234
187235 def test_decode_invalid_crypto_padding (self ):
188236 example_jwt = (
189237 "eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9"
190238 ".eyJoZWxsbyI6ICJ3b3JsZCJ9"
191239 ".aatvagLDLoaiJKxOKqpBXSEGy7SYSifZhjntgm9ctpyj8" )
192240 example_secret = "secret"
193- with self .assertRaises (jwt .DecodeError ):
194- jwt .load (example_jwt )
195- with self .assertRaises (jwt .DecodeError ):
196- jwt .decode (example_jwt , example_secret )
241+
242+ self .assertRaises (
243+ jwt .DecodeError ,
244+ lambda : jwt .load (example_jwt ))
245+
246+ self .assertRaises (
247+ jwt .DecodeError ,
248+ lambda : jwt .decode (example_jwt , example_secret ))
197249
198250 def test_decode_with_expiration (self ):
199251 self .payload ['exp' ] = utc_timestamp () - 1
200252 secret = 'secret'
201253 jwt_message = jwt .encode (self .payload , secret )
202254
203- with self .assertRaises (jwt .ExpiredSignature ):
204- jwt .decode (jwt_message , secret )
255+ self .assertRaises (
256+ jwt .ExpiredSignature ,
257+ lambda : jwt .decode (jwt_message , secret ))
258+
259+ decoded_payload , signing , header , signature = jwt .load (jwt_message )
205260
206- decoded_payload , signing_input , header , signature = jwt .load (jwt_message )
207- with self .assertRaises (jwt .ExpiredSignature ):
208- jwt .verify_signature (decoded_payload , signing_input , header , signature , secret )
261+ self .assertRaises (
262+ jwt .ExpiredSignature ,
263+ lambda : jwt .verify_signature (
264+ decoded_payload , signing , header , signature , secret ))
209265
210266 def test_decode_skip_expiration_verification (self ):
211267 self .payload ['exp' ] = time .time () - 1
@@ -214,37 +270,43 @@ def test_decode_skip_expiration_verification(self):
214270
215271 jwt .decode (jwt_message , secret , verify_expiration = False )
216272
217- decoded_payload , signing_input , header , signature = jwt .load (jwt_message )
218- jwt .verify_signature (decoded_payload , signing_input , header , signature , secret , verify_expiration = False )
273+ decoded_payload , signing , header , signature = jwt .load (jwt_message )
274+ jwt .verify_signature (decoded_payload , signing , header ,
275+ signature , secret , verify_expiration = False )
219276
220277 def test_decode_with_expiration_with_leeway (self ):
221278 self .payload ['exp' ] = utc_timestamp () - 2
222279 secret = 'secret'
223280 jwt_message = jwt .encode (self .payload , secret )
224281
225- decoded_payload , signing_input , header , signature = jwt .load (jwt_message )
282+ decoded_payload , signing , header , signature = jwt .load (jwt_message )
226283
227284 # With 3 seconds leeway, should be ok
228285 jwt .decode (jwt_message , secret , leeway = 3 )
229286
230- jwt .verify_signature (decoded_payload , signing_input , header , signature , secret , leeway = 3 )
287+ jwt .verify_signature (decoded_payload , signing , header ,
288+ signature , secret , leeway = 3 )
231289
232- # With 1 second, should fail
233- with self .assertRaises (jwt .ExpiredSignature ):
234- jwt .decode (jwt_message , secret , leeway = 1 )
290+ # With 1 seconds, should fail
291+ self .assertRaises (
292+ jwt .ExpiredSignature ,
293+ lambda : jwt .decode (jwt_message , secret , leeway = 1 ))
235294
236- with self .assertRaises (jwt .ExpiredSignature ):
237- jwt .verify_signature (decoded_payload , signing_input , header , signature , secret , leeway = 1 )
295+ self .assertRaises (
296+ jwt .ExpiredSignature ,
297+ lambda : jwt .verify_signature (decoded_payload , signing ,
298+ header , signature , secret , leeway = 1 ))
238299
239300 def test_encode_decode_with_rsa_sha256 (self ):
240301 try :
241302 from Crypto .PublicKey import RSA
242303
243- with open ('tests/testkey' ,'r' ) as rsa_priv_file :
304+ with open ('tests/testkey' , 'r' ) as rsa_priv_file :
244305 priv_rsakey = RSA .importKey (rsa_priv_file .read ())
245- jwt_message = jwt .encode (self .payload , priv_rsakey , algorithm = 'RS256' )
306+ jwt_message = jwt .encode (self .payload , priv_rsakey ,
307+ algorithm = 'RS256' )
246308
247- with open ('tests/testkey.pub' ,'r' ) as rsa_pub_file :
309+ with open ('tests/testkey.pub' , 'r' ) as rsa_pub_file :
248310 pub_rsakey = RSA .importKey (rsa_pub_file .read ())
249311 assert jwt .decode (jwt_message , pub_rsakey )
250312
@@ -257,11 +319,12 @@ def test_encode_decode_with_rsa_sha384(self):
257319 try :
258320 from Crypto .PublicKey import RSA
259321
260- with open ('tests/testkey' ,'r' ) as rsa_priv_file :
322+ with open ('tests/testkey' , 'r' ) as rsa_priv_file :
261323 priv_rsakey = RSA .importKey (rsa_priv_file .read ())
262- jwt_message = jwt .encode (self .payload , priv_rsakey , algorithm = 'RS384' )
324+ jwt_message = jwt .encode (self .payload , priv_rsakey ,
325+ algorithm = 'RS384' )
263326
264- with open ('tests/testkey.pub' ,'r' ) as rsa_pub_file :
327+ with open ('tests/testkey.pub' , 'r' ) as rsa_pub_file :
265328 pub_rsakey = RSA .importKey (rsa_pub_file .read ())
266329 assert jwt .decode (jwt_message , pub_rsakey )
267330
@@ -274,11 +337,12 @@ def test_encode_decode_with_rsa_sha512(self):
274337 try :
275338 from Crypto .PublicKey import RSA
276339
277- with open ('tests/testkey' ,'r' ) as rsa_priv_file :
340+ with open ('tests/testkey' , 'r' ) as rsa_priv_file :
278341 priv_rsakey = RSA .importKey (rsa_priv_file .read ())
279- jwt_message = jwt .encode (self .payload , priv_rsakey , algorithm = 'RS512' )
342+ jwt_message = jwt .encode (self .payload , priv_rsakey ,
343+ algorithm = 'RS512' )
280344
281- with open ('tests/testkey.pub' ,'r' ) as rsa_pub_file :
345+ with open ('tests/testkey.pub' , 'r' ) as rsa_pub_file :
282346 pub_rsakey = RSA .importKey (rsa_pub_file .read ())
283347 assert jwt .decode (jwt_message , pub_rsakey )
284348
0 commit comments