Prevent invitations without a workspace role
This commit is contained in:
@@ -2,22 +2,44 @@ import pytest
|
||||
import datetime
|
||||
|
||||
from atst.models.invitation import Invitation, Status
|
||||
from atst.models.workspace_role import Status as WorkspaceRoleStatus
|
||||
|
||||
from tests.factories import InvitationFactory
|
||||
from tests.factories import (
|
||||
InvitationFactory,
|
||||
WorkspaceFactory,
|
||||
UserFactory,
|
||||
WorkspaceRoleFactory,
|
||||
)
|
||||
|
||||
|
||||
def test_expired_invite_is_not_revokable():
|
||||
workspace = WorkspaceFactory.create()
|
||||
user = UserFactory.create()
|
||||
ws_role = WorkspaceRoleFactory.create(
|
||||
workspace=workspace, user=user, status=WorkspaceRoleStatus.PENDING
|
||||
)
|
||||
invite = InvitationFactory.create(
|
||||
expiration_time=datetime.datetime.now() - datetime.timedelta(minutes=60)
|
||||
expiration_time=datetime.datetime.now() - datetime.timedelta(minutes=60),
|
||||
workspace_role=ws_role,
|
||||
)
|
||||
assert not invite.is_revokable
|
||||
|
||||
|
||||
def test_unexpired_invite_is_revokable():
|
||||
invite = InvitationFactory.create()
|
||||
workspace = WorkspaceFactory.create()
|
||||
user = UserFactory.create()
|
||||
ws_role = WorkspaceRoleFactory.create(
|
||||
workspace=workspace, user=user, status=WorkspaceRoleStatus.PENDING
|
||||
)
|
||||
invite = InvitationFactory.create(workspace_role=ws_role)
|
||||
assert invite.is_revokable
|
||||
|
||||
|
||||
def test_invite_is_not_revokable_if_invite_is_not_pending():
|
||||
invite = InvitationFactory.create(status=Status.ACCEPTED)
|
||||
workspace = WorkspaceFactory.create()
|
||||
user = UserFactory.create()
|
||||
ws_role = WorkspaceRoleFactory.create(
|
||||
workspace=workspace, user=user, status=WorkspaceRoleStatus.PENDING
|
||||
)
|
||||
invite = InvitationFactory.create(workspace_role=ws_role, status=Status.ACCEPTED)
|
||||
assert not invite.is_revokable
|
||||
|
@@ -7,6 +7,7 @@ from atst.models.workspace_role import Status
|
||||
from atst.models.role import Role
|
||||
from atst.models.invitation import Status as InvitationStatus
|
||||
from atst.models.audit_event import AuditEvent
|
||||
from atst.models.workspace_role import Status as WorkspaceRoleStatus
|
||||
from tests.factories import (
|
||||
RequestFactory,
|
||||
UserFactory,
|
||||
@@ -196,44 +197,69 @@ def test_status_when_member_is_active():
|
||||
|
||||
|
||||
def test_status_when_invitation_has_been_rejected_for_expirations():
|
||||
workspace_role = WorkspaceRoleFactory.create(
|
||||
invitations=[InvitationFactory.create(status=InvitationStatus.REJECTED_EXPIRED)]
|
||||
workspace = WorkspaceFactory.create()
|
||||
user = UserFactory.create()
|
||||
ws_role = WorkspaceRoleFactory.create(
|
||||
workspace=workspace, user=user, status=WorkspaceRoleStatus.PENDING
|
||||
)
|
||||
invitation = InvitationFactory.create(
|
||||
workspace_role=ws_role, status=InvitationStatus.REJECTED_EXPIRED
|
||||
)
|
||||
workspace_role = WorkspaceRoleFactory.create(invitations=[invitation])
|
||||
assert workspace_role.display_status == "Invite expired"
|
||||
|
||||
|
||||
def test_status_when_invitation_has_been_rejected_for_wrong_user():
|
||||
workspace_role = WorkspaceRoleFactory.create(
|
||||
invitations=[
|
||||
InvitationFactory.create(status=InvitationStatus.REJECTED_WRONG_USER)
|
||||
]
|
||||
workspace = WorkspaceFactory.create()
|
||||
user = UserFactory.create()
|
||||
ws_role = WorkspaceRoleFactory.create(
|
||||
workspace=workspace, user=user, status=WorkspaceRoleStatus.PENDING
|
||||
)
|
||||
invitation = InvitationFactory.create(
|
||||
workspace_role=ws_role, status=InvitationStatus.REJECTED_WRONG_USER
|
||||
)
|
||||
workspace_role = WorkspaceRoleFactory.create(invitations=[invitation])
|
||||
assert workspace_role.display_status == "Error on invite"
|
||||
|
||||
|
||||
def test_status_when_invitation_is_expired():
|
||||
workspace_role = WorkspaceRoleFactory.create(
|
||||
invitations=[
|
||||
InvitationFactory.create(
|
||||
status=InvitationStatus.PENDING,
|
||||
expiration_time=datetime.datetime.now() - datetime.timedelta(seconds=1),
|
||||
)
|
||||
]
|
||||
workspace = WorkspaceFactory.create()
|
||||
user = UserFactory.create()
|
||||
ws_role = WorkspaceRoleFactory.create(
|
||||
workspace=workspace, user=user, status=WorkspaceRoleStatus.PENDING
|
||||
)
|
||||
invitation = InvitationFactory.create(
|
||||
workspace_role=ws_role,
|
||||
status=InvitationStatus.PENDING,
|
||||
expiration_time=datetime.datetime.now() - datetime.timedelta(seconds=1),
|
||||
)
|
||||
workspace_role = WorkspaceRoleFactory.create(invitations=[invitation])
|
||||
assert workspace_role.display_status == "Invite expired"
|
||||
|
||||
|
||||
def test_can_not_resend_invitation_if_active():
|
||||
workspace_role = WorkspaceRoleFactory.create(
|
||||
invitations=[InvitationFactory.create(status=InvitationStatus.ACCEPTED)]
|
||||
workspace = WorkspaceFactory.create()
|
||||
user = UserFactory.create()
|
||||
ws_role = WorkspaceRoleFactory.create(
|
||||
workspace=workspace, user=user, status=WorkspaceRoleStatus.PENDING
|
||||
)
|
||||
invitation = InvitationFactory.create(
|
||||
workspace_role=ws_role, status=InvitationStatus.ACCEPTED
|
||||
)
|
||||
workspace_role = WorkspaceRoleFactory.create(invitations=[invitation])
|
||||
assert not workspace_role.can_resend_invitation
|
||||
|
||||
|
||||
def test_can_resend_invitation_if_expired():
|
||||
workspace_role = WorkspaceRoleFactory.create(
|
||||
invitations=[InvitationFactory.create(status=InvitationStatus.REJECTED_EXPIRED)]
|
||||
workspace = WorkspaceFactory.create()
|
||||
user = UserFactory.create()
|
||||
ws_role = WorkspaceRoleFactory.create(
|
||||
workspace=workspace, user=user, status=WorkspaceRoleStatus.PENDING
|
||||
)
|
||||
invitation = InvitationFactory.create(
|
||||
workspace_role=ws_role, status=InvitationStatus.REJECTED_EXPIRED
|
||||
)
|
||||
workspace_role = WorkspaceRoleFactory.create(invitations=[invitation])
|
||||
assert workspace_role.can_resend_invitation
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user