def test_decode_jwt_fail(self):

        with self.assertRaises(InvalidTokenError):
            Auth.token_decode(None)

        with self.assertRaises(InvalidTokenError):
            self.data["exp"] = datetime.now() - timedelta(seconds=30)
            token = jwt.encode(self.data,
                               key=self.secret_key,
                               algorithm=self.algorithms[0])
            Auth.token_decode(token)
    def wrapper(*args, **kwars):

        token = request.headers.get("Authorization")
        role = Utils.request_role()

        try:
            if not token or token.split(" ")[0] != "Bearer":
                raise InvalidTokenError(token, "Token must be a bearer token",
                                        "Invalid token")

            token_decode = Auth.token_decode(token.split(" ")[1])
            session_id = token_decode["token"]
            exists = Auth.session_exists(session_id, role)

            if not exists:
                raise InvalidTokenError(
                    token, "User does not have an active session",
                    "Invalid token")

        except InvalidTokenError as e:
            return Utils.response(status=e.status,
                                  message="Invalid token",
                                  data=e.errors)

        return f(*args, **kwars)
    def test_decode_jwt(self):

        token = jwt.encode(self.data,
                           key=self.secret_key,
                           algorithm=self.algorithms[0])
        token_decode = Auth.token_decode(token)
        self.assertIsNotNone(token_decode)
        self.assertEqual(self.data, token_decode)