Resend workspace invitations to email submitted in new member form.

This commit is contained in:
leigh-mil
2018-11-19 17:21:35 -05:00
parent 3c154f445c
commit 385878e1ab
7 changed files with 97 additions and 19 deletions

View File

@@ -22,7 +22,7 @@ def test_create_invitation():
workspace = WorkspaceFactory.create()
user = UserFactory.create()
ws_role = WorkspaceRoleFactory.create(user=user, workspace=workspace)
invite = Invitations.create(workspace.owner, ws_role)
invite = Invitations.create(workspace.owner, ws_role, user.email)
assert invite.user == user
assert invite.workspace_role == ws_role
assert invite.inviter == workspace.owner
@@ -34,7 +34,7 @@ def test_accept_invitation():
workspace = WorkspaceFactory.create()
user = UserFactory.create()
ws_role = WorkspaceRoleFactory.create(user=user, workspace=workspace)
invite = Invitations.create(workspace.owner, ws_role)
invite = Invitations.create(workspace.owner, ws_role, user.email)
assert invite.is_pending
accepted_invite = Invitations.accept(user, invite.token)
assert accepted_invite.is_accepted
@@ -89,7 +89,7 @@ def test_accept_invitation_twice():
workspace = WorkspaceFactory.create()
user = UserFactory.create()
ws_role = WorkspaceRoleFactory.create(user=user, workspace=workspace)
invite = Invitations.create(workspace.owner, ws_role)
invite = Invitations.create(workspace.owner, ws_role, user.email)
Invitations.accept(user, invite.token)
with pytest.raises(InvitationError):
Invitations.accept(user, invite.token)
@@ -99,7 +99,7 @@ def test_revoke_invitation():
workspace = WorkspaceFactory.create()
user = UserFactory.create()
ws_role = WorkspaceRoleFactory.create(user=user, workspace=workspace)
invite = Invitations.create(workspace.owner, ws_role)
invite = Invitations.create(workspace.owner, ws_role, user.email)
assert invite.is_pending
Invitations.revoke(invite.token)
assert invite.is_revoked
@@ -109,7 +109,7 @@ def test_resend_invitation():
workspace = WorkspaceFactory.create()
user = UserFactory.create()
ws_role = WorkspaceRoleFactory.create(user=user, workspace=workspace)
invite = Invitations.create(workspace.owner, ws_role)
invite = Invitations.create(workspace.owner, ws_role, user.email)
Invitations.resend(workspace.owner, workspace.id, invite.token)
assert ws_role.invitations[0].is_revoked
assert ws_role.invitations[1].is_pending

View File

@@ -342,5 +342,6 @@ class InvitationFactory(Base):
class Meta:
model = Invitation
email = factory.Faker("email")
status = InvitationStatus.PENDING
expiration_time = Invitations.current_expiration_time()

View File

@@ -502,3 +502,31 @@ def test_resend_invitation_sends_email(client, user_session, queue):
)
assert len(queue.get_queue()) == 1
def test_existing_member_invite_resent_to_email_submitted_in_form(
client, user_session, queue
):
workspace = WorkspaceFactory.create()
user = UserFactory.create()
ws_role = WorkspaceRoleFactory.create(
user=user, workspace=workspace, status=WorkspaceRoleStatus.PENDING
)
invite = InvitationFactory.create(
user_id=user.id,
workspace_role_id=ws_role.id,
status=InvitationStatus.PENDING,
email="example@example.com",
)
user_session(workspace.owner)
client.post(
url_for(
"workspaces.resend_invitation",
workspace_id=workspace.id,
token=invite.token,
)
)
assert user.email != "example@example.com"
assert len(queue.get_queue().jobs[0].args[0]) == 1
assert queue.get_queue().jobs[0].args[0][0] == "example@example.com"