Пример #1
0
    def test_get_or_create_token(self, user, db):
        user_tokens_query = db.session.query(UserPasswordToken).filter_by(user_id=user.id)

        # No tokens are present for a newly created user
        user_tokens_query.all() == []

        # A new token is created when none are present
        token = UserPasswordToken.get_or_create_token(user.id)
        assert user_tokens_query.all() == [token]

        # The same token is returned while it is still valid.
        assert UserPasswordToken.get_or_create_token(user.id) == token
        assert user_tokens_query.count() == 1

        # A new token is created once the old one is used. This new token is the only token for that user.
        token.update(used=True)
        unused_token = UserPasswordToken.get_or_create_token(user.id)
        assert unused_token != token
        assert user_tokens_query.count() == 1

        # A new token is created once the old one is expired. This new token is the only token for that user.
        unused_token.update(expiration_dt=expired_date())
        unexpired_token = UserPasswordToken.get_or_create_token(user.id)
        assert unexpired_token != token
        assert unexpired_token != unused_token
        assert user_tokens_query.count() == 1