1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- from datetime import datetime, timedelta
- import pytest
- from freezegun import freeze_time
- from flaskbb import tokens
- from flaskbb.core.tokens import Token, TokenActions, TokenError
- pytestmark = pytest.mark.usefixtures("default_settings")
- def test_can_round_trip_token():
- serializer = tokens.FlaskBBTokenSerializer(
- "hello i am secret", timedelta(seconds=100)
- )
- token = Token(user_id=1, operation=TokenActions.RESET_PASSWORD)
- roundtrip = serializer.loads(serializer.dumps(token))
- assert token == roundtrip
- def test_raises_token_error_with_bad_data():
- serializer = tokens.FlaskBBTokenSerializer(
- "hello i am also secret", timedelta(seconds=100)
- )
- with pytest.raises(TokenError) as excinfo:
- serializer.loads("not actually a token")
- assert "invalid" in str(excinfo.value)
- def test_expired_token_raises():
- serializer = tokens.FlaskBBTokenSerializer(
- "i am a secret not", expiry=datetime.utcnow() + timedelta(seconds=1)
- )
- dumped_token = serializer.dumps(
- Token(user_id=1, operation=TokenActions.RESET_PASSWORD)
- )
- with freeze_time(datetime.now() + timedelta(days=10)):
- with pytest.raises(TokenError) as excinfo:
- serializer.loads(dumped_token)
- assert "expired" in str(excinfo.value)
- def test_raises_typeerror_expiry_args():
- with pytest.raises(TypeError) as excinfo:
- tokens.FlaskBBTokenSerializer("hello i am also secret", 100)
- assert "timedelta or datetime" in excinfo.value
|