mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-10 10:03:21 -04:00
@@ -24,6 +24,7 @@ EVENT_SCHEMAS = {
|
|||||||
"service_id",
|
"service_id",
|
||||||
"ui_permissions",
|
"ui_permissions",
|
||||||
},
|
},
|
||||||
|
"resend_user_invite_to_service": {"email_address", "resent_by_id", "service_id"},
|
||||||
"cancel_user_invite_to_service": {"email_address", "canceled_by_id", "service_id"},
|
"cancel_user_invite_to_service": {"email_address", "canceled_by_id", "service_id"},
|
||||||
"set_user_permissions": {
|
"set_user_permissions": {
|
||||||
"user_id",
|
"user_id",
|
||||||
@@ -63,6 +64,10 @@ def create_cancel_user_invite_to_service_event(**kwargs):
|
|||||||
_send_event("cancel_user_invite_to_service", **kwargs)
|
_send_event("cancel_user_invite_to_service", **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
def create_resend_user_invite_to_service_event(**kwargs):
|
||||||
|
_send_event("resend_user_invite_to_service", **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def create_add_user_to_service_event(**kwargs):
|
def create_add_user_to_service_event(**kwargs):
|
||||||
_send_event("add_user_to_service", **kwargs)
|
_send_event("add_user_to_service", **kwargs)
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ from app.event_handlers import (
|
|||||||
create_invite_user_to_service_event,
|
create_invite_user_to_service_event,
|
||||||
create_mobile_number_change_event,
|
create_mobile_number_change_event,
|
||||||
create_remove_user_from_service_event,
|
create_remove_user_from_service_event,
|
||||||
|
create_resend_user_invite_to_service_event,
|
||||||
)
|
)
|
||||||
from app.formatters import redact_mobile_number
|
from app.formatters import redact_mobile_number
|
||||||
from app.main import main
|
from app.main import main
|
||||||
@@ -342,11 +343,11 @@ def resend_invite(service_id, invited_user_id):
|
|||||||
current_service.resend_invite(invited_user_id)
|
current_service.resend_invite(invited_user_id)
|
||||||
|
|
||||||
invited_user = InvitedUser.by_id_and_service_id(service_id, invited_user_id)
|
invited_user = InvitedUser.by_id_and_service_id(service_id, invited_user_id)
|
||||||
create_cancel_user_invite_to_service_event(
|
create_resend_user_invite_to_service_event(
|
||||||
email_address=invited_user.email_address,
|
email_address=invited_user.email_address,
|
||||||
canceled_by_id=current_user.id,
|
resent_by_id=current_user.id,
|
||||||
service_id=service_id,
|
service_id=service_id,
|
||||||
)
|
)
|
||||||
|
|
||||||
flash(f"Invitation cancelled for {invited_user.email_address}", "default_with_tick")
|
flash(f"Invitation resent for {invited_user.email_address}", "default_with_tick")
|
||||||
return redirect(url_for("main.manage_users", service_id=service_id))
|
return redirect(url_for("main.manage_users", service_id=service_id))
|
||||||
|
|||||||
@@ -66,9 +66,7 @@ class InviteApiClient(NotifyAdminAPIClient):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def resend_invite(self, service_id, invited_user_id):
|
def resend_invite(self, service_id, invited_user_id):
|
||||||
self.post(
|
self.post(url=f"/service/{service_id}/invite/{invited_user_id}/resend", data={})
|
||||||
url=f"/service/{service_id}/invite/{invited_user_id}/resend", data={}
|
|
||||||
)
|
|
||||||
|
|
||||||
@cache.delete("service-{service_id}")
|
@cache.delete("service-{service_id}")
|
||||||
@cache.delete("user-{invited_user_id}")
|
@cache.delete("user-{invited_user_id}")
|
||||||
|
|||||||
@@ -1157,6 +1157,21 @@ def test_invite_user_with_email_auth_service(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_resend_expired_invitation(client_request, expired_invite, mocker):
|
||||||
|
mock_resend = mocker.patch("app.invite_api_client.resend_invite")
|
||||||
|
mocker.patch("app.invite_api_client.get_invited_user_for_service")
|
||||||
|
page = client_request.get(
|
||||||
|
"main.resend_invite",
|
||||||
|
service_id=SERVICE_ONE_ID,
|
||||||
|
invited_user_id=expired_invite["id"],
|
||||||
|
_follow_redirects=True,
|
||||||
|
)
|
||||||
|
assert normalize_spaces(page.h1.text) == "Team members"
|
||||||
|
assert mock_resend.called
|
||||||
|
assert SERVICE_ONE_ID in mock_resend.call_args
|
||||||
|
assert expired_invite["id"] in mock_resend.call_args
|
||||||
|
|
||||||
|
|
||||||
def test_cancel_invited_user_cancels_user_invitations(
|
def test_cancel_invited_user_cancels_user_invitations(
|
||||||
client_request,
|
client_request,
|
||||||
mock_get_invites_for_service,
|
mock_get_invites_for_service,
|
||||||
|
|||||||
@@ -1892,6 +1892,13 @@ def sample_invite(mocker, service_one):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture()
|
||||||
|
def expired_invite(service_one, sample_invite):
|
||||||
|
expired_invite = {k: v for k, v in sample_invite.items()}
|
||||||
|
expired_invite["status"] = "expired"
|
||||||
|
expired_invite["created_at"] -= timedelta(days=3)
|
||||||
|
return expired_invite
|
||||||
|
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
def mock_create_invite(mocker, sample_invite):
|
def mock_create_invite(mocker, sample_invite):
|
||||||
def _create_invite(
|
def _create_invite(
|
||||||
|
|||||||
Reference in New Issue
Block a user