Created
October 4, 2016 21:16
-
-
Save jbszczepaniak/74cc20e716b051555b6481b61f67514b to your computer and use it in GitHub Desktop.
Snippet related to post on www.netitup.wordpress.com
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import jwt, unittest, sys, datetime, time | |
class TestJWT(unittest.TestCase): | |
def setUp(self): | |
self.informations = {} | |
self.informations['version'] = sys.version | |
self.informations['default_ecoding'] = sys.getdefaultencoding() | |
self.jwt_key = "test_key" | |
self.jwt_algorthm = "HS256" | |
self.token_jwt = jwt.encode( | |
self.informations, | |
self.jwt_key, | |
self.jwt_algorthm) | |
def test_jwt_token_is_has_three_parts(self): | |
token_jwt_as_string = self.token_jwt.decode('utf-8') | |
token_as_array = token_jwt_as_string.split('.') | |
self.assertEqual(len(token_as_array), 3) | |
def test_jwt_token_can_be_verified_with_right_key(self): | |
result = jwt.decode(self.token_jwt, key=self.jwt_key, verify=True) | |
self.assertDictEqual(self.informations, result) | |
def test_jwt_token_with_wrong_key_throws_exceptions(self): | |
with self.assertRaises(Exception) as context: | |
jwt.decode(self.token_jwt, key="random key", verify=True) | |
def test_expired_token_cannot_be_verified(self): | |
token_jwt = jwt.encode( | |
{'exp': (datetime.datetime.utcnow() + datetime.timedelta(seconds=1))}, self.jwt_key) | |
print(token_jwt) | |
time.sleep(2) | |
with self.assertRaises(jwt.exceptions.ExpiredSignatureError) as context: | |
result = jwt.decode(token_jwt, key=self.jwt_key, verify=True) | |
def test_before_nbf_time_cannot_be_verified(self): | |
token_jwt = jwt.encode( | |
{'nbf': (datetime.datetime.utcnow() + datetime.timedelta(seconds=1))}, self.jwt_key) | |
with self.assertRaises(jwt.exceptions.ImmatureSignatureError) as context: | |
result = jwt.decode(token_jwt, key=self.jwt_key, verify=True) | |
if __name__ == "__main__": | |
unittest.main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment