mirror of
https://github.com/GSA/notifications-api.git
synced 2026-04-24 11:20:11 -04:00
Send broadcast invite email for broadcast service invites
This means the copy is more accurate and mentions sending emergency alerts rather than previous copy about sending emails texts and letters.
This commit is contained in:
@@ -151,6 +151,7 @@ class Config(object):
|
||||
NOTIFY_SERVICE_ID = 'd6aa2c68-a2d9-4437-ab19-3ae8eb202553'
|
||||
NOTIFY_USER_ID = '6af522d0-2915-4e52-83a3-3690455a5fe6'
|
||||
INVITATION_EMAIL_TEMPLATE_ID = '4f46df42-f795-4cc4-83bb-65ca312f49cc'
|
||||
BROADCAST_INVITATION_EMAIL_TEMPLATE_ID = '46152f7c-6901-41d5-8590-a5624d0d4359'
|
||||
SMS_CODE_TEMPLATE_ID = '36fb0730-6259-4da1-8a80-c8de22ad4246'
|
||||
EMAIL_2FA_TEMPLATE_ID = '299726d2-dba6-42b8-8209-30e1d66ea164'
|
||||
NEW_USER_EMAIL_VERIFICATION_TEMPLATE_ID = 'ece42649-22a8-4d06-b87f-d52d5d3f0a27'
|
||||
|
||||
@@ -11,7 +11,7 @@ from app.dao.invited_user_dao import (
|
||||
get_invited_users_for_service
|
||||
)
|
||||
from app.dao.templates_dao import dao_get_template_by_id
|
||||
from app.models import EMAIL_TYPE, KEY_TYPE_NORMAL, Service
|
||||
from app.models import BROADCAST_TYPE, EMAIL_TYPE, KEY_TYPE_NORMAL, Service
|
||||
from app.notifications.process_notifications import persist_notification, send_notification_to_queue
|
||||
from app.schemas import invited_user_schema
|
||||
from app.errors import register_errors
|
||||
@@ -27,7 +27,12 @@ def create_invited_user(service_id):
|
||||
invited_user, errors = invited_user_schema.load(request_json)
|
||||
save_invited_user(invited_user)
|
||||
|
||||
template = dao_get_template_by_id(current_app.config['INVITATION_EMAIL_TEMPLATE_ID'])
|
||||
if invited_user.service.has_permission(BROADCAST_TYPE):
|
||||
template_id = current_app.config['BROADCAST_INVITATION_EMAIL_TEMPLATE_ID']
|
||||
else:
|
||||
template_id = current_app.config['INVITATION_EMAIL_TEMPLATE_ID']
|
||||
|
||||
template = dao_get_template_by_id(template_id)
|
||||
service = Service.query.get(current_app.config['NOTIFY_SERVICE_ID'])
|
||||
|
||||
saved_notification = persist_notification(
|
||||
|
||||
@@ -636,8 +636,7 @@ def email_verification_template(notify_db,
|
||||
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
def invitation_email_template(notify_db,
|
||||
notify_db_session):
|
||||
def invitation_email_template(notify_db, notify_db_session):
|
||||
service, user = notify_service(notify_db, notify_db_session)
|
||||
content = '((user_name)) is invited to Notify by ((service_name)) ((url)) to complete registration',
|
||||
return create_custom_template(
|
||||
@@ -650,6 +649,20 @@ def invitation_email_template(notify_db,
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
def broadcast_invitation_email_template(notify_db, notify_db_session):
|
||||
service, user = notify_service(notify_db, notify_db_session)
|
||||
content = '((user_name)) is invited to broadcast Notify by ((service_name)) ((url)) to complete registration',
|
||||
return create_custom_template(
|
||||
service=service,
|
||||
user=user,
|
||||
template_config_name='BROADCAST_INVITATION_EMAIL_TEMPLATE_ID',
|
||||
content=content,
|
||||
subject='Invitation to ((service_name))',
|
||||
template_type='email'
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
def org_invite_email_template(notify_db, notify_db_session):
|
||||
service, user = notify_service(notify_db, notify_db_session)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import json
|
||||
import pytest
|
||||
from flask import current_app
|
||||
|
||||
from app.models import Notification, SMS_AUTH_TYPE, EMAIL_AUTH_TYPE
|
||||
from tests import create_authorization_header
|
||||
@@ -62,6 +63,60 @@ def test_create_invited_user(
|
||||
assert notification.personalisation['user_name'] == 'Test User'
|
||||
assert notification.personalisation['url'].startswith(expected_start_of_invite_url)
|
||||
assert len(notification.personalisation['url']) > len(expected_start_of_invite_url)
|
||||
assert str(notification.template_id) == current_app.config['INVITATION_EMAIL_TEMPLATE_ID']
|
||||
|
||||
mocked.assert_called_once_with([(str(notification.id))], queue="notify-internal-tasks")
|
||||
|
||||
|
||||
@pytest.mark.parametrize('extra_args, expected_start_of_invite_url', [
|
||||
(
|
||||
{},
|
||||
'http://localhost:6012/invitation/'
|
||||
),
|
||||
(
|
||||
{'invite_link_host': 'https://www.example.com'},
|
||||
'https://www.example.com/invitation/'
|
||||
),
|
||||
])
|
||||
def test_invited_user_for_broadcast_service_receives_broadcast_invite_email(
|
||||
admin_request,
|
||||
sample_broadcast_service,
|
||||
mocker,
|
||||
broadcast_invitation_email_template,
|
||||
extra_args,
|
||||
expected_start_of_invite_url,
|
||||
):
|
||||
mocked = mocker.patch('app.celery.provider_tasks.deliver_email.apply_async')
|
||||
email_address = 'invited_user@service.gov.uk'
|
||||
invite_from = sample_broadcast_service.users[0]
|
||||
|
||||
data = dict(
|
||||
service=str(sample_broadcast_service.id),
|
||||
email_address=email_address,
|
||||
from_user=str(invite_from.id),
|
||||
permissions='send_messages,manage_service,manage_api_keys',
|
||||
auth_type=EMAIL_AUTH_TYPE,
|
||||
folder_permissions=['folder_1', 'folder_2', 'folder_3'],
|
||||
**extra_args
|
||||
)
|
||||
|
||||
admin_request.post(
|
||||
'invite.create_invited_user',
|
||||
service_id=sample_broadcast_service.id,
|
||||
_data=data,
|
||||
_expected_status=201
|
||||
)
|
||||
|
||||
notification = Notification.query.first()
|
||||
|
||||
assert notification.reply_to_text == invite_from.email_address
|
||||
|
||||
assert len(notification.personalisation.keys()) == 3
|
||||
assert notification.personalisation['service_name'] == 'Sample broadcast service'
|
||||
assert notification.personalisation['user_name'] == 'Test User'
|
||||
assert notification.personalisation['url'].startswith(expected_start_of_invite_url)
|
||||
assert len(notification.personalisation['url']) > len(expected_start_of_invite_url)
|
||||
assert str(notification.template_id) == current_app.config['BROADCAST_INVITATION_EMAIL_TEMPLATE_ID']
|
||||
|
||||
mocked.assert_called_once_with([(str(notification.id))], queue="notify-internal-tasks")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user