import datetime as dt

import pytest
from django.utils import timezone


def test_revocation(refresh_token, alice):
    from refreshtoken.models import RefreshToken

    new_refresh_token = refresh_token.revoke()
    assert new_refresh_token.key != refresh_token.key
    assert new_refresh_token.user == alice
    assert new_refresh_token.app == 'refresh_token'
    with pytest.raises(RefreshToken.DoesNotExist):
        refresh_token.refresh_from_db()


def test_repr(alice):
    from refreshtoken.models import RefreshToken

    assert repr(RefreshToken()) == (
        "RefreshToken(pk='', key='', user=None, app='', created=None)")
    refresh_token = RefreshToken(user=alice, app='local', key='foo')
    refresh_token.save()
    now = dt.datetime.utcnow().replace(tzinfo=timezone.get_default_timezone())
    refresh_token.created = now
    assert repr(refresh_token) == (
        "RefreshToken(pk=%r, key='foo', user=%r, app='local', created=%r)" % (
            refresh_token.pk,
            alice,
            now,
        ))