atst/tests/domain/test_invitations.py
2018-10-31 10:21:48 -04:00

64 lines
2.0 KiB
Python

import datetime
import pytest
from atst.domain.invitations import Invitations, InvitationError
from atst.models.invitation import Status
from tests.factories import WorkspaceFactory, UserFactory, InvitationFactory
def test_create_invitation():
workspace = WorkspaceFactory.create()
user = UserFactory.create()
invite = Invitations.create(workspace, workspace.owner, user)
assert invite.user == user
assert invite.workspace == workspace
assert invite.inviter == workspace.owner
assert invite.status == Status.PENDING
def test_accept_invitation():
workspace = WorkspaceFactory.create()
user = UserFactory.create()
invite = Invitations.create(workspace, workspace.owner, user)
assert invite.is_pending
accepted_invite = Invitations.accept(invite.id)
assert accepted_invite.is_accepted
def test_accept_expired_invitation():
workspace = WorkspaceFactory.create()
user = UserFactory.create()
increment = Invitations.EXPIRATION_LIMIT_MINUTES + 1
expiration_time = datetime.datetime.now() - datetime.timedelta(minutes=increment)
invite = InvitationFactory.create(
workspace_id=workspace.id,
user_id=user.id,
expiration_time=expiration_time,
status=Status.PENDING,
)
with pytest.raises(InvitationError):
Invitations.accept(invite.id)
assert invite.is_rejected
def test_accept_rejected_invite():
workspace = WorkspaceFactory.create()
user = UserFactory.create()
invite = InvitationFactory.create(
workspace_id=workspace.id, user_id=user.id, status=Status.REJECTED
)
with pytest.raises(InvitationError):
Invitations.accept(invite.id)
def test_accept_revoked_invite():
workspace = WorkspaceFactory.create()
user = UserFactory.create()
invite = InvitationFactory.create(
workspace_id=workspace.id, user_id=user.id, status=Status.REVOKED
)
with pytest.raises(InvitationError):
Invitations.accept(invite.id)