Skip to content

Instantly share code, notes, and snippets.

@jbszczepaniak
Created October 4, 2016 21:16
Show Gist options
  • Save jbszczepaniak/74cc20e716b051555b6481b61f67514b to your computer and use it in GitHub Desktop.
Save jbszczepaniak/74cc20e716b051555b6481b61f67514b to your computer and use it in GitHub Desktop.
Snippet related to post on www.netitup.wordpress.com
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