Ejemplo n.º 1
0
    async def test_encode_new_token(self):
        """
        Dado um objeto User e um Account, retorna um novo
        token JWT contendo as informações necessárias
        """

        user = User(**USER_WITH_ONE_ACCOUNT_DICT)
        account = Account(**ACCOUNT_DEV_DICT)
        token = jwt_encode(user, account)

        decoded_token = jwt.decode(token, key=SECRET_KEY)
        self.assertDictEqual(user.dict(), decoded_token["user"])
        self.assertDictEqual(account.dict(), decoded_token["current_account"])
Ejemplo n.º 2
0
def jwt_encode(user: User, account: Account) -> bytes:
    """
    Encodes a new JWT Token
    https://tools.ietf.org/html/rfc7519#section-4.1.5
    """
    issued_at = datetime.utcnow()
    expiration_time = issued_at + timedelta(days=7)
    not_before = issued_at + timedelta(seconds=0)
    return jwt.encode(
        {
            "exp": expiration_time,
            "iat": issued_at,
            "nbf": not_before,
            "user": user.dict(),
            "current_account": account.dict(),
        },
        SECRET_KEY,
    )