You can only resend an invite for a pending invite

This commit is contained in:
George Drummond 2019-03-07 11:19:03 -05:00
parent a9199bc28d
commit 679ec187a5
No known key found for this signature in database
GPG Key ID: 296DD6077123BF17
2 changed files with 39 additions and 1 deletions

View File

@ -14,6 +14,7 @@ from atst.forms.dd_254 import DD254Form
from atst.forms.ko_review import KOReviewForm
from atst.forms.officers import EditTaskOrderOfficersForm
from atst.models.task_order import Status as TaskOrderStatus
from atst.models.invitation import Status as InvitationStatus
from atst.utils.flash import formatted_flash as flash
from atst.services.invitation import (
update_officer_invitations,
@ -130,7 +131,7 @@ def resend_invite(portfolio_id, task_order_id, form=None):
invitation = Invitations.lookup_by_portfolio_and_user(portfolio, officer)
if not invitation:
if not invitation or (invitation.status is not InvitationStatus.PENDING):
raise NotFoundError("invitation")
Invitations.resend(g.current_user, portfolio.id, invitation.token)

View File

@ -644,3 +644,40 @@ def test_resend_invite_when_ko(app, client, user_session, portfolio, user):
== response.headers["Location"]
)
assert len(queue.get_queue()) == queue_length + 1
def test_resend_invite_when_not_pending(app, client, user_session, portfolio, user):
queue_length = len(queue.get_queue())
task_order = TaskOrderFactory.create(
portfolio=portfolio, contracting_officer=user, ko_invite=True
)
portfolio_role = PortfolioRoleFactory.create(
role=Roles.get("owner"),
portfolio=portfolio,
user=user,
status=PortfolioStatus.ACTIVE,
)
original_invitation = Invitations.create(
inviter=user, portfolio_role=portfolio_role, email=user.email
)
Invitations.accept(user=user, token=original_invitation.token)
user_session(user)
response = client.post(
url_for(
"portfolios.resend_invite",
portfolio_id=portfolio.id,
task_order_id=task_order.id,
_external=True,
),
data={"invite_type": "ko_invite"},
)
assert original_invitation.status == InvitationStatus.ACCEPTED
assert response.status_code == 404
assert len(queue.get_queue()) == queue_length