mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-23 15:56:45 -04:00
Stop populating the notification to sender mapping table when creating a notificaiton.
This commit is contained in:
@@ -329,7 +329,6 @@ class Development(Config):
|
|||||||
|
|
||||||
|
|
||||||
class Test(Config):
|
class Test(Config):
|
||||||
SQLALCHEMY_ECHO = True
|
|
||||||
NOTIFY_EMAIL_DOMAIN = 'test.notify.com'
|
NOTIFY_EMAIL_DOMAIN = 'test.notify.com'
|
||||||
FROM_NUMBER = 'testing'
|
FROM_NUMBER = 'testing'
|
||||||
NOTIFY_ENVIRONMENT = 'test'
|
NOTIFY_ENVIRONMENT = 'test'
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ from app.models import (
|
|||||||
NotificationEmailReplyTo,
|
NotificationEmailReplyTo,
|
||||||
NotificationHistory,
|
NotificationHistory,
|
||||||
ScheduledNotification,
|
ScheduledNotification,
|
||||||
ServiceEmailReplyTo,
|
|
||||||
Template,
|
Template,
|
||||||
TemplateHistory,
|
TemplateHistory,
|
||||||
EMAIL_TYPE,
|
EMAIL_TYPE,
|
||||||
@@ -43,8 +42,7 @@ from app.models import (
|
|||||||
NOTIFICATION_TEMPORARY_FAILURE,
|
NOTIFICATION_TEMPORARY_FAILURE,
|
||||||
NOTIFICATION_PERMANENT_FAILURE,
|
NOTIFICATION_PERMANENT_FAILURE,
|
||||||
NOTIFICATION_SENT,
|
NOTIFICATION_SENT,
|
||||||
NotificationSmsSender,
|
NotificationSmsSender
|
||||||
ServiceSmsSender
|
|
||||||
)
|
)
|
||||||
|
|
||||||
from app.dao.dao_utils import transactional
|
from app.dao.dao_utils import transactional
|
||||||
@@ -570,26 +568,6 @@ def dao_set_created_live_letter_api_notifications_to_pending():
|
|||||||
return notifications
|
return notifications
|
||||||
|
|
||||||
|
|
||||||
@transactional
|
|
||||||
def dao_create_notification_email_reply_to_mapping(notification_id, email_reply_to_id):
|
|
||||||
notification_email_reply_to = NotificationEmailReplyTo(
|
|
||||||
notification_id=notification_id,
|
|
||||||
service_email_reply_to_id=email_reply_to_id
|
|
||||||
)
|
|
||||||
db.session.add(notification_email_reply_to)
|
|
||||||
|
|
||||||
|
|
||||||
def dao_get_notification_email_reply_for_notification(notification_id):
|
|
||||||
email_reply_to = ServiceEmailReplyTo.query.join(
|
|
||||||
NotificationEmailReplyTo
|
|
||||||
).filter(
|
|
||||||
NotificationEmailReplyTo.notification_id == notification_id
|
|
||||||
).first()
|
|
||||||
|
|
||||||
if email_reply_to:
|
|
||||||
return email_reply_to.email_address
|
|
||||||
|
|
||||||
|
|
||||||
@statsd(namespace="dao")
|
@statsd(namespace="dao")
|
||||||
def dao_get_last_notification_added_for_job_id(job_id):
|
def dao_get_last_notification_added_for_job_id(job_id):
|
||||||
last_notification_added = Notification.query.filter(
|
last_notification_added = Notification.query.filter(
|
||||||
@@ -599,23 +577,3 @@ def dao_get_last_notification_added_for_job_id(job_id):
|
|||||||
).first()
|
).first()
|
||||||
|
|
||||||
return last_notification_added
|
return last_notification_added
|
||||||
|
|
||||||
|
|
||||||
@transactional
|
|
||||||
def dao_create_notification_sms_sender_mapping(notification_id, sms_sender_id):
|
|
||||||
notification_to_sms_sender = NotificationSmsSender(
|
|
||||||
notification_id=notification_id,
|
|
||||||
service_sms_sender_id=sms_sender_id
|
|
||||||
)
|
|
||||||
db.session.add(notification_to_sms_sender)
|
|
||||||
|
|
||||||
|
|
||||||
def dao_get_notification_sms_sender_mapping(notification_id):
|
|
||||||
sms_sender = ServiceSmsSender.query.join(
|
|
||||||
NotificationSmsSender
|
|
||||||
).filter(
|
|
||||||
NotificationSmsSender.notification_id == notification_id
|
|
||||||
).first()
|
|
||||||
|
|
||||||
if sms_sender:
|
|
||||||
return sms_sender.sms_sender
|
|
||||||
|
|||||||
@@ -13,12 +13,19 @@ from notifications_utils.recipients import (
|
|||||||
from app import redis_store
|
from app import redis_store
|
||||||
from app.celery import provider_tasks
|
from app.celery import provider_tasks
|
||||||
from app.config import QueueNames
|
from app.config import QueueNames
|
||||||
from app.models import SMS_TYPE, Notification, KEY_TYPE_TEST, EMAIL_TYPE, NOTIFICATION_CREATED, ScheduledNotification
|
from app.models import (
|
||||||
from app.dao.notifications_dao import (dao_create_notification,
|
EMAIL_TYPE,
|
||||||
dao_delete_notifications_and_history_by_id,
|
KEY_TYPE_TEST,
|
||||||
dao_created_scheduled_notification,
|
SMS_TYPE,
|
||||||
dao_create_notification_email_reply_to_mapping,
|
NOTIFICATION_CREATED,
|
||||||
dao_create_notification_sms_sender_mapping)
|
Notification,
|
||||||
|
ScheduledNotification
|
||||||
|
)
|
||||||
|
from app.dao.notifications_dao import (
|
||||||
|
dao_create_notification,
|
||||||
|
dao_delete_notifications_and_history_by_id,
|
||||||
|
dao_created_scheduled_notification
|
||||||
|
)
|
||||||
from app.v2.errors import BadRequestError
|
from app.v2.errors import BadRequestError
|
||||||
from app.utils import get_template_instance, cache_key_for_service_template_counter, convert_bst_to_utc
|
from app.utils import get_template_instance, cache_key_for_service_template_counter, convert_bst_to_utc
|
||||||
|
|
||||||
@@ -145,11 +152,3 @@ def persist_scheduled_notification(notification_id, scheduled_for):
|
|||||||
scheduled_notification = ScheduledNotification(notification_id=notification_id,
|
scheduled_notification = ScheduledNotification(notification_id=notification_id,
|
||||||
scheduled_for=scheduled_datetime)
|
scheduled_for=scheduled_datetime)
|
||||||
dao_created_scheduled_notification(scheduled_notification)
|
dao_created_scheduled_notification(scheduled_notification)
|
||||||
|
|
||||||
|
|
||||||
def persist_email_reply_to_id_for_notification(notification_id, email_reply_to_id):
|
|
||||||
dao_create_notification_email_reply_to_mapping(notification_id, email_reply_to_id)
|
|
||||||
|
|
||||||
|
|
||||||
def persist_sms_sender_id_for_notification(notification_id, sms_sender_id):
|
|
||||||
dao_create_notification_sms_sender_mapping(notification_id, sms_sender_id)
|
|
||||||
|
|||||||
@@ -8,9 +8,7 @@ from app.notifications.validators import (
|
|||||||
)
|
)
|
||||||
from app.notifications.process_notifications import (
|
from app.notifications.process_notifications import (
|
||||||
persist_notification,
|
persist_notification,
|
||||||
send_notification_to_queue,
|
send_notification_to_queue
|
||||||
persist_email_reply_to_id_for_notification,
|
|
||||||
persist_sms_sender_id_for_notification
|
|
||||||
)
|
)
|
||||||
from app.models import (
|
from app.models import (
|
||||||
KEY_TYPE_NORMAL,
|
KEY_TYPE_NORMAL,
|
||||||
@@ -71,11 +69,6 @@ def send_one_off_notification(service_id, post_data):
|
|||||||
created_by_id=post_data['created_by'],
|
created_by_id=post_data['created_by'],
|
||||||
reply_to_text=reply_to
|
reply_to_text=reply_to
|
||||||
)
|
)
|
||||||
if sender_id:
|
|
||||||
if template.template_type == EMAIL_TYPE:
|
|
||||||
persist_email_reply_to_id_for_notification(notification.id, sender_id)
|
|
||||||
if template.template_type == SMS_TYPE:
|
|
||||||
persist_sms_sender_id_for_notification(notification.id, sender_id)
|
|
||||||
|
|
||||||
queue_name = QueueNames.PRIORITY if template.process_type == PRIORITY else None
|
queue_name = QueueNames.PRIORITY if template.process_type == PRIORITY else None
|
||||||
send_notification_to_queue(
|
send_notification_to_queue(
|
||||||
|
|||||||
@@ -16,12 +16,11 @@ from app.models import (
|
|||||||
)
|
)
|
||||||
from app.celery.tasks import update_letter_notifications_to_sent_to_dvla
|
from app.celery.tasks import update_letter_notifications_to_sent_to_dvla
|
||||||
from app.notifications.process_notifications import (
|
from app.notifications.process_notifications import (
|
||||||
persist_email_reply_to_id_for_notification,
|
|
||||||
persist_notification,
|
persist_notification,
|
||||||
persist_scheduled_notification,
|
persist_scheduled_notification,
|
||||||
send_notification_to_queue,
|
send_notification_to_queue,
|
||||||
simulated_recipient,
|
simulated_recipient
|
||||||
persist_sms_sender_id_for_notification)
|
)
|
||||||
from app.notifications.process_letter_notifications import (
|
from app.notifications.process_letter_notifications import (
|
||||||
create_letter_notification
|
create_letter_notification
|
||||||
)
|
)
|
||||||
@@ -144,8 +143,6 @@ def process_sms_or_email_notification(*, form, notification_type, api_key, templ
|
|||||||
reply_to_text=reply_to_text
|
reply_to_text=reply_to_text
|
||||||
)
|
)
|
||||||
|
|
||||||
persist_sender_to_notification_mapping(form, notification)
|
|
||||||
|
|
||||||
scheduled_for = form.get("scheduled_for", None)
|
scheduled_for = form.get("scheduled_for", None)
|
||||||
if scheduled_for:
|
if scheduled_for:
|
||||||
persist_scheduled_notification(notification.id, form["scheduled_for"])
|
persist_scheduled_notification(notification.id, form["scheduled_for"])
|
||||||
@@ -163,15 +160,6 @@ def process_sms_or_email_notification(*, form, notification_type, api_key, templ
|
|||||||
return notification
|
return notification
|
||||||
|
|
||||||
|
|
||||||
def persist_sender_to_notification_mapping(form, notification):
|
|
||||||
email_reply_to_id = form.get("email_reply_to_id", None)
|
|
||||||
if email_reply_to_id:
|
|
||||||
persist_email_reply_to_id_for_notification(notification.id, email_reply_to_id)
|
|
||||||
sms_sender_id = form.get("sms_sender_id", None)
|
|
||||||
if sms_sender_id:
|
|
||||||
persist_sms_sender_id_for_notification(notification.id, sms_sender_id)
|
|
||||||
|
|
||||||
|
|
||||||
def process_letter_notification(*, letter_data, api_key, template):
|
def process_letter_notification(*, letter_data, api_key, template):
|
||||||
if api_key.key_type == KEY_TYPE_TEAM:
|
if api_key.key_type == KEY_TYPE_TEAM:
|
||||||
raise BadRequestError(message='Cannot send letters with a team api key', status_code=403)
|
raise BadRequestError(message='Cannot send letters with a team api key', status_code=403)
|
||||||
|
|||||||
@@ -1,42 +1,18 @@
|
|||||||
from datetime import datetime, timedelta, date
|
|
||||||
import uuid
|
import uuid
|
||||||
|
from datetime import datetime, timedelta, date
|
||||||
from functools import partial
|
from functools import partial
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from freezegun import freeze_time
|
from freezegun import freeze_time
|
||||||
from sqlalchemy.exc import SQLAlchemyError, IntegrityError
|
from sqlalchemy.exc import SQLAlchemyError, IntegrityError
|
||||||
|
|
||||||
from app.dao.service_email_reply_to_dao import dao_get_reply_to_by_service_id
|
|
||||||
from app.models import (
|
|
||||||
Job,
|
|
||||||
Notification,
|
|
||||||
NotificationEmailReplyTo,
|
|
||||||
NotificationHistory,
|
|
||||||
NotificationSmsSender,
|
|
||||||
ScheduledNotification,
|
|
||||||
EMAIL_TYPE,
|
|
||||||
SMS_TYPE,
|
|
||||||
NOTIFICATION_STATUS_TYPES,
|
|
||||||
NOTIFICATION_STATUS_TYPES_FAILED,
|
|
||||||
NOTIFICATION_SENT,
|
|
||||||
NOTIFICATION_DELIVERED,
|
|
||||||
KEY_TYPE_NORMAL,
|
|
||||||
KEY_TYPE_TEAM,
|
|
||||||
KEY_TYPE_TEST,
|
|
||||||
JOB_STATUS_IN_PROGRESS
|
|
||||||
)
|
|
||||||
|
|
||||||
from app.dao.notifications_dao import (
|
from app.dao.notifications_dao import (
|
||||||
dao_create_notification,
|
dao_create_notification,
|
||||||
dao_create_notification_email_reply_to_mapping,
|
|
||||||
dao_create_notification_sms_sender_mapping,
|
|
||||||
dao_created_scheduled_notification,
|
dao_created_scheduled_notification,
|
||||||
dao_delete_notifications_and_history_by_id,
|
dao_delete_notifications_and_history_by_id,
|
||||||
dao_get_last_notification_added_for_job_id,
|
dao_get_last_notification_added_for_job_id,
|
||||||
dao_get_last_template_usage,
|
dao_get_last_template_usage,
|
||||||
dao_get_notification_email_reply_for_notification,
|
|
||||||
dao_get_notifications_by_to_field,
|
dao_get_notifications_by_to_field,
|
||||||
dao_get_notification_sms_sender_mapping,
|
|
||||||
dao_get_scheduled_notifications,
|
dao_get_scheduled_notifications,
|
||||||
dao_get_template_usage,
|
dao_get_template_usage,
|
||||||
dao_timeout_notifications,
|
dao_timeout_notifications,
|
||||||
@@ -55,14 +31,21 @@ from app.dao.notifications_dao import (
|
|||||||
update_notification_status_by_id,
|
update_notification_status_by_id,
|
||||||
update_notification_status_by_reference
|
update_notification_status_by_reference
|
||||||
)
|
)
|
||||||
|
|
||||||
from app.dao.services_dao import dao_update_service
|
from app.dao.services_dao import dao_update_service
|
||||||
from tests.app.db import (
|
from app.models import (
|
||||||
create_api_key,
|
Job,
|
||||||
create_job,
|
Notification,
|
||||||
create_notification,
|
NotificationHistory,
|
||||||
create_reply_to_email,
|
ScheduledNotification,
|
||||||
create_service_sms_sender)
|
NOTIFICATION_STATUS_TYPES,
|
||||||
|
NOTIFICATION_STATUS_TYPES_FAILED,
|
||||||
|
NOTIFICATION_SENT,
|
||||||
|
NOTIFICATION_DELIVERED,
|
||||||
|
KEY_TYPE_NORMAL,
|
||||||
|
KEY_TYPE_TEAM,
|
||||||
|
KEY_TYPE_TEST,
|
||||||
|
JOB_STATUS_IN_PROGRESS
|
||||||
|
)
|
||||||
from tests.app.conftest import (
|
from tests.app.conftest import (
|
||||||
sample_notification,
|
sample_notification,
|
||||||
sample_template,
|
sample_template,
|
||||||
@@ -70,7 +53,14 @@ from tests.app.conftest import (
|
|||||||
sample_service,
|
sample_service,
|
||||||
sample_job,
|
sample_job,
|
||||||
sample_notification_history as create_notification_history,
|
sample_notification_history as create_notification_history,
|
||||||
sample_letter_template)
|
sample_letter_template
|
||||||
|
)
|
||||||
|
from tests.app.db import (
|
||||||
|
create_api_key,
|
||||||
|
create_job,
|
||||||
|
create_notification,
|
||||||
|
create_service_sms_sender
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_should_have_decorated_notifications_dao_functions():
|
def test_should_have_decorated_notifications_dao_functions():
|
||||||
@@ -985,73 +975,6 @@ def test_should_delete_notifications_by_type_after_seven_days(
|
|||||||
assert notification.created_at.date() >= date(2016, 1, 3)
|
assert notification.created_at.date() >= date(2016, 1, 3)
|
||||||
|
|
||||||
|
|
||||||
@freeze_time("2016-01-10 12:00:00.000000")
|
|
||||||
def test_should_delete_notification_to_email_reply_to_after_seven_days(
|
|
||||||
notify_db, notify_db_session, sample_service,
|
|
||||||
):
|
|
||||||
assert len(Notification.query.all()) == 0
|
|
||||||
|
|
||||||
reply_to = create_reply_to_email(sample_service, 'test@example.com')
|
|
||||||
|
|
||||||
email_template = sample_email_template(notify_db, notify_db_session, service=sample_service)
|
|
||||||
|
|
||||||
# create one notification a day between 1st and 10th from 11:00 to 19:00 of each type
|
|
||||||
for i in range(1, 11):
|
|
||||||
past_date = '2016-01-{0:02d} {0:02d}:00:00.000000'.format(i)
|
|
||||||
with freeze_time(past_date):
|
|
||||||
notification = create_notification(email_template)
|
|
||||||
dao_create_notification_email_reply_to_mapping(notification.id, reply_to.id)
|
|
||||||
|
|
||||||
all_notifications = Notification.query.all()
|
|
||||||
assert len(all_notifications) == 10
|
|
||||||
|
|
||||||
all_notification_email_reply_to = NotificationEmailReplyTo.query.all()
|
|
||||||
assert len(all_notification_email_reply_to) == 10
|
|
||||||
|
|
||||||
# Records before 3rd should be deleted
|
|
||||||
delete_notifications_created_more_than_a_week_ago_by_type(EMAIL_TYPE)
|
|
||||||
remaining_email_notifications = Notification.query.filter_by(notification_type=EMAIL_TYPE).all()
|
|
||||||
remaining_notification_to_email_reply_to = NotificationEmailReplyTo.query.filter_by().all()
|
|
||||||
|
|
||||||
assert len(remaining_email_notifications) == 8
|
|
||||||
assert len(remaining_notification_to_email_reply_to) == 8
|
|
||||||
|
|
||||||
for notification in remaining_email_notifications:
|
|
||||||
assert notification.created_at.date() >= date(2016, 1, 3)
|
|
||||||
|
|
||||||
|
|
||||||
@freeze_time("2016-01-10 12:00:00.000000")
|
|
||||||
def test_should_delete_notification_to_sms_sender_after_seven_days(
|
|
||||||
sample_template
|
|
||||||
):
|
|
||||||
assert len(Notification.query.all()) == 0
|
|
||||||
|
|
||||||
sms_sender = create_service_sms_sender(service=sample_template.service, sms_sender='123456', is_default=False)
|
|
||||||
|
|
||||||
# create one notification a day between 1st and 10th from 11:00 to 19:00 of each type
|
|
||||||
for i in range(1, 11):
|
|
||||||
past_date = '2016-01-{0:02d} {0:02d}:00:00.000000'.format(i)
|
|
||||||
with freeze_time(past_date):
|
|
||||||
notification = create_notification(template=sample_template, sms_sender_id=sms_sender.id)
|
|
||||||
|
|
||||||
all_notifications = Notification.query.all()
|
|
||||||
assert len(all_notifications) == 10
|
|
||||||
|
|
||||||
all_notification_sms_senders = NotificationSmsSender.query.all()
|
|
||||||
assert len(all_notification_sms_senders) == 10
|
|
||||||
|
|
||||||
# Records before 3rd should be deleted
|
|
||||||
delete_notifications_created_more_than_a_week_ago_by_type(SMS_TYPE)
|
|
||||||
remaining_notifications = Notification.query.filter_by(notification_type=SMS_TYPE).all()
|
|
||||||
remaining_notification_to_sms_sender = NotificationSmsSender.query.filter_by().all()
|
|
||||||
|
|
||||||
assert len(remaining_notifications) == 8
|
|
||||||
assert len(remaining_notification_to_sms_sender) == 8
|
|
||||||
|
|
||||||
for notification in remaining_notifications:
|
|
||||||
assert notification.created_at.date() >= date(2016, 1, 3)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('notification_type', ['sms', 'email', 'letter'])
|
@pytest.mark.parametrize('notification_type', ['sms', 'email', 'letter'])
|
||||||
@freeze_time("2016-01-10 12:00:00.000000")
|
@freeze_time("2016-01-10 12:00:00.000000")
|
||||||
def test_should_not_delete_notification_history(notify_db, notify_db_session, sample_service, notification_type):
|
def test_should_not_delete_notification_history(notify_db, notify_db_session, sample_service, notification_type):
|
||||||
@@ -2006,48 +1929,6 @@ def test_dao_get_notifications_by_to_field_orders_by_created_at_desc(sample_temp
|
|||||||
assert notifications[1].id == notification_a_minute_ago.id
|
assert notifications[1].id == notification_a_minute_ago.id
|
||||||
|
|
||||||
|
|
||||||
def test_dao_create_notification_email_reply_to_mapping(sample_service, sample_notification):
|
|
||||||
|
|
||||||
create_reply_to_email(sample_service, "test@test.com")
|
|
||||||
|
|
||||||
reply_to_address = dao_get_reply_to_by_service_id(sample_service.id)
|
|
||||||
|
|
||||||
dao_create_notification_email_reply_to_mapping(sample_notification.id, reply_to_address[0].id)
|
|
||||||
|
|
||||||
email_reply_to = NotificationEmailReplyTo.query.all()
|
|
||||||
|
|
||||||
assert len(email_reply_to) == 1
|
|
||||||
assert email_reply_to[0].notification_id == sample_notification.id
|
|
||||||
assert email_reply_to[0].service_email_reply_to_id == reply_to_address[0].id
|
|
||||||
|
|
||||||
|
|
||||||
def test_dao_create_multiple_notification_email_reply_to_mapping(sample_service, sample_notification):
|
|
||||||
reply_to_address = create_reply_to_email(sample_service, "test@test.com")
|
|
||||||
|
|
||||||
dao_create_notification_email_reply_to_mapping(sample_notification.id, reply_to_address.id)
|
|
||||||
|
|
||||||
with pytest.raises(IntegrityError) as e:
|
|
||||||
dao_create_notification_email_reply_to_mapping(sample_notification.id, reply_to_address.id)
|
|
||||||
|
|
||||||
assert 'duplicate key value' in str(e.value)
|
|
||||||
|
|
||||||
email_reply_to = NotificationEmailReplyTo.query.all()
|
|
||||||
|
|
||||||
assert len(email_reply_to) == 1
|
|
||||||
assert email_reply_to[0].notification_id == sample_notification.id
|
|
||||||
assert email_reply_to[0].service_email_reply_to_id == reply_to_address.id
|
|
||||||
|
|
||||||
|
|
||||||
def test_dao_get_notification_email_reply_for_notification(sample_service, sample_notification):
|
|
||||||
reply_to_address = create_reply_to_email(sample_service, "test@test.com")
|
|
||||||
dao_create_notification_email_reply_to_mapping(sample_notification.id, reply_to_address.id)
|
|
||||||
assert dao_get_notification_email_reply_for_notification(sample_notification.id) == "test@test.com"
|
|
||||||
|
|
||||||
|
|
||||||
def test_dao_get_notification_email_reply_for_notification_where_no_mapping(notify_db_session, fake_uuid):
|
|
||||||
assert dao_get_notification_email_reply_for_notification(fake_uuid) is None
|
|
||||||
|
|
||||||
|
|
||||||
def test_dao_get_last_notification_added_for_job_id_valid_job_id(sample_template):
|
def test_dao_get_last_notification_added_for_job_id_valid_job_id(sample_template):
|
||||||
job = create_job(template=sample_template, notification_count=10,
|
job = create_job(template=sample_template, notification_count=10,
|
||||||
created_at=datetime.utcnow() - timedelta(hours=2),
|
created_at=datetime.utcnow() - timedelta(hours=2),
|
||||||
@@ -2110,25 +1991,3 @@ def test_dao_update_notifications_by_reference_returns_zero_when_no_notification
|
|||||||
)
|
)
|
||||||
assert updated_count == 0
|
assert updated_count == 0
|
||||||
|
|
||||||
|
|
||||||
def test_dao_create_notification_sms_sender_mapping(sample_notification):
|
|
||||||
sms_sender = create_service_sms_sender(service=sample_notification.service, sms_sender='123456')
|
|
||||||
dao_create_notification_sms_sender_mapping(notification_id=sample_notification.id,
|
|
||||||
sms_sender_id=sms_sender.id)
|
|
||||||
notification_to_senders = NotificationSmsSender.query.all()
|
|
||||||
assert len(notification_to_senders) == 1
|
|
||||||
assert notification_to_senders[0].notification_id == sample_notification.id
|
|
||||||
assert notification_to_senders[0].service_sms_sender_id == sms_sender.id
|
|
||||||
|
|
||||||
|
|
||||||
def test_dao_get_notification_sms_sender_mapping(sample_notification):
|
|
||||||
sms_sender = create_service_sms_sender(service=sample_notification.service, sms_sender='123456')
|
|
||||||
dao_create_notification_sms_sender_mapping(notification_id=sample_notification.id,
|
|
||||||
sms_sender_id=sms_sender.id)
|
|
||||||
notification_to_sender = dao_get_notification_sms_sender_mapping(sample_notification.id)
|
|
||||||
assert notification_to_sender == '123456'
|
|
||||||
|
|
||||||
|
|
||||||
def test_dao_get_notification_sms_sender_mapping_returns_none(sample_notification):
|
|
||||||
notification_to_sender = dao_get_notification_sms_sender_mapping(sample_notification.id)
|
|
||||||
assert not notification_to_sender
|
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ from app.models import (
|
|||||||
Job,
|
Job,
|
||||||
MonthlyBilling,
|
MonthlyBilling,
|
||||||
Notification,
|
Notification,
|
||||||
NotificationEmailReplyTo,
|
|
||||||
Organisation,
|
Organisation,
|
||||||
Rate,
|
Rate,
|
||||||
Service,
|
Service,
|
||||||
@@ -26,15 +25,13 @@ from app.models import (
|
|||||||
User,
|
User,
|
||||||
EMAIL_TYPE,
|
EMAIL_TYPE,
|
||||||
SMS_TYPE,
|
SMS_TYPE,
|
||||||
INBOUND_SMS_TYPE,
|
|
||||||
KEY_TYPE_NORMAL,
|
KEY_TYPE_NORMAL,
|
||||||
AnnualBilling,
|
AnnualBilling,
|
||||||
)
|
)
|
||||||
from app.dao.users_dao import save_model_user
|
from app.dao.users_dao import save_model_user
|
||||||
from app.dao.notifications_dao import (
|
from app.dao.notifications_dao import (
|
||||||
dao_create_notification,
|
dao_create_notification,
|
||||||
dao_created_scheduled_notification,
|
dao_created_scheduled_notification
|
||||||
dao_create_notification_sms_sender_mapping
|
|
||||||
)
|
)
|
||||||
from app.dao.templates_dao import dao_create_template
|
from app.dao.templates_dao import dao_create_template
|
||||||
from app.dao.services_dao import dao_create_service
|
from app.dao.services_dao import dao_create_service
|
||||||
@@ -220,9 +217,7 @@ def create_notification(
|
|||||||
if status != 'created':
|
if status != 'created':
|
||||||
scheduled_notification.pending = False
|
scheduled_notification.pending = False
|
||||||
dao_created_scheduled_notification(scheduled_notification)
|
dao_created_scheduled_notification(scheduled_notification)
|
||||||
if sms_sender_id:
|
|
||||||
dao_create_notification_sms_sender_mapping(notification_id=notification.id,
|
|
||||||
sms_sender_id=sms_sender_id)
|
|
||||||
return notification
|
return notification
|
||||||
|
|
||||||
|
|
||||||
@@ -430,24 +425,6 @@ def create_letter_contact(
|
|||||||
return letter_content
|
return letter_content
|
||||||
|
|
||||||
|
|
||||||
def create_reply_to_email_for_notification(
|
|
||||||
notification_id,
|
|
||||||
service,
|
|
||||||
email_address,
|
|
||||||
is_default=True
|
|
||||||
):
|
|
||||||
reply_to = create_reply_to_email(service, email_address, is_default)
|
|
||||||
|
|
||||||
notification_email_reply_to = NotificationEmailReplyTo(
|
|
||||||
notification_id=str(notification_id),
|
|
||||||
service_email_reply_to_id=str(reply_to.id)
|
|
||||||
)
|
|
||||||
db.session.add(notification_email_reply_to)
|
|
||||||
db.session.commit()
|
|
||||||
|
|
||||||
return reply_to
|
|
||||||
|
|
||||||
|
|
||||||
def create_annual_billing(
|
def create_annual_billing(
|
||||||
service_id, free_sms_fragment_limit, financial_year_start
|
service_id, free_sms_fragment_limit, financial_year_start
|
||||||
):
|
):
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ from tests.app.db import (
|
|||||||
create_template,
|
create_template,
|
||||||
create_notification,
|
create_notification,
|
||||||
create_reply_to_email,
|
create_reply_to_email,
|
||||||
create_reply_to_email_for_notification,
|
|
||||||
create_service_sms_sender,
|
create_service_sms_sender,
|
||||||
create_service_with_inbound_number,
|
create_service_with_inbound_number,
|
||||||
create_service_with_defined_sms_sender
|
create_service_with_defined_sms_sender
|
||||||
@@ -708,65 +707,13 @@ def test_should_handle_sms_sender_and_prefix_message(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_should_use_inbound_number_as_sender_if_default_sms_sender(
|
def test_send_email_to_provider_uses_reply_to_from_notification(
|
||||||
notify_db_session,
|
|
||||||
mocker
|
|
||||||
):
|
|
||||||
service = create_service_with_inbound_number(inbound_number='inbound')
|
|
||||||
create_service_sms_sender(service=service, sms_sender="sms_sender", is_default=False)
|
|
||||||
template = create_template(service, content='bar')
|
|
||||||
notification = create_notification(template, reply_to_text='inbound')
|
|
||||||
|
|
||||||
mocker.patch('app.mmg_client.send_sms')
|
|
||||||
mocker.patch('app.delivery.send_to_providers.create_initial_notification_statistic_tasks')
|
|
||||||
|
|
||||||
send_to_providers.send_sms_to_provider(notification)
|
|
||||||
|
|
||||||
mmg_client.send_sms.assert_called_once_with(
|
|
||||||
to=ANY,
|
|
||||||
content=ANY,
|
|
||||||
reference=str(notification.id),
|
|
||||||
sender='inbound'
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_should_use_default_sms_sender(
|
|
||||||
notify_db_session,
|
|
||||||
mocker
|
|
||||||
):
|
|
||||||
service = create_service_with_defined_sms_sender(sms_sender_value="test sender")
|
|
||||||
template = create_template(service, content='bar')
|
|
||||||
notification = create_notification(template, reply_to_text=service.get_default_sms_sender())
|
|
||||||
|
|
||||||
mocker.patch('app.mmg_client.send_sms')
|
|
||||||
mocker.patch('app.delivery.send_to_providers.create_initial_notification_statistic_tasks')
|
|
||||||
|
|
||||||
send_to_providers.send_sms_to_provider(notification)
|
|
||||||
|
|
||||||
mmg_client.send_sms.assert_called_once_with(
|
|
||||||
to=ANY,
|
|
||||||
content=ANY,
|
|
||||||
reference=str(notification.id),
|
|
||||||
sender='test sender'
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_send_email_to_provider_get_linked_email_reply_to_default_is_false(
|
|
||||||
sample_service,
|
|
||||||
sample_email_template,
|
sample_email_template,
|
||||||
mocker):
|
mocker):
|
||||||
mocker.patch('app.aws_ses_client.send_email', return_value='reference')
|
mocker.patch('app.aws_ses_client.send_email', return_value='reference')
|
||||||
mocker.patch('app.delivery.send_to_providers.create_initial_notification_statistic_tasks')
|
mocker.patch('app.delivery.send_to_providers.create_initial_notification_statistic_tasks')
|
||||||
|
|
||||||
db_notification = create_notification(template=sample_email_template, reply_to_text="test@test.com")
|
db_notification = create_notification(template=sample_email_template, reply_to_text="test@test.com")
|
||||||
create_reply_to_email(service=sample_service, email_address="test@test.com")
|
|
||||||
|
|
||||||
reply_to = create_reply_to_email_for_notification(
|
|
||||||
db_notification.id,
|
|
||||||
sample_service,
|
|
||||||
"test@test.com",
|
|
||||||
is_default=False
|
|
||||||
)
|
|
||||||
|
|
||||||
send_to_providers.send_email_to_provider(
|
send_to_providers.send_email_to_provider(
|
||||||
db_notification,
|
db_notification,
|
||||||
@@ -778,45 +725,11 @@ def test_send_email_to_provider_get_linked_email_reply_to_default_is_false(
|
|||||||
ANY,
|
ANY,
|
||||||
body=ANY,
|
body=ANY,
|
||||||
html_body=ANY,
|
html_body=ANY,
|
||||||
reply_to_address=reply_to.email_address
|
reply_to_address="test@test.com"
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def test_send_email_to_provider_get_linked_email_reply_to_create_service_email_after_notification_mapping(
|
|
||||||
sample_service,
|
|
||||||
sample_email_template,
|
|
||||||
mocker):
|
|
||||||
mocker.patch('app.aws_ses_client.send_email', return_value='reference')
|
|
||||||
mocker.patch('app.delivery.send_to_providers.create_initial_notification_statistic_tasks')
|
|
||||||
|
|
||||||
db_notification = create_notification(template=sample_email_template,
|
|
||||||
reply_to_text="test@test.com")
|
|
||||||
|
|
||||||
# notification_to_email_reply_to is being deprecated.
|
|
||||||
reply_to = create_reply_to_email_for_notification(
|
|
||||||
db_notification.id,
|
|
||||||
sample_service,
|
|
||||||
"test@test.com"
|
|
||||||
)
|
|
||||||
|
|
||||||
create_reply_to_email(service=sample_service, email_address='foo@bar.com', is_default=False)
|
|
||||||
|
|
||||||
send_to_providers.send_email_to_provider(
|
|
||||||
db_notification,
|
|
||||||
)
|
|
||||||
|
|
||||||
app.aws_ses_client.send_email.assert_called_once_with(
|
|
||||||
ANY,
|
|
||||||
ANY,
|
|
||||||
ANY,
|
|
||||||
body=ANY,
|
|
||||||
html_body=ANY,
|
|
||||||
reply_to_address=reply_to.email_address
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def test_send_email_to_provider_should_format_reply_to_email_address(
|
def test_send_email_to_provider_should_format_reply_to_email_address(
|
||||||
sample_service,
|
|
||||||
sample_email_template,
|
sample_email_template,
|
||||||
mocker):
|
mocker):
|
||||||
mocker.patch('app.aws_ses_client.send_email', return_value='reference')
|
mocker.patch('app.aws_ses_client.send_email', return_value='reference')
|
||||||
@@ -824,12 +737,6 @@ def test_send_email_to_provider_should_format_reply_to_email_address(
|
|||||||
|
|
||||||
db_notification = create_notification(template=sample_email_template, reply_to_text="test@test.com\t")
|
db_notification = create_notification(template=sample_email_template, reply_to_text="test@test.com\t")
|
||||||
|
|
||||||
reply_to = create_reply_to_email_for_notification(
|
|
||||||
db_notification.id,
|
|
||||||
sample_service,
|
|
||||||
"test@test.com"
|
|
||||||
)
|
|
||||||
|
|
||||||
send_to_providers.send_email_to_provider(
|
send_to_providers.send_email_to_provider(
|
||||||
db_notification,
|
db_notification,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -7,21 +7,16 @@ from sqlalchemy.exc import SQLAlchemyError
|
|||||||
from freezegun import freeze_time
|
from freezegun import freeze_time
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
from app.dao.service_email_reply_to_dao import dao_get_reply_to_by_service_id
|
|
||||||
from app.models import (
|
from app.models import (
|
||||||
Notification,
|
Notification,
|
||||||
NotificationHistory,
|
NotificationHistory,
|
||||||
NotificationEmailReplyTo,
|
|
||||||
NotificationSmsSender,
|
|
||||||
ScheduledNotification,
|
ScheduledNotification,
|
||||||
Template
|
Template
|
||||||
)
|
)
|
||||||
from app.notifications.process_notifications import (
|
from app.notifications.process_notifications import (
|
||||||
create_content_for_notification,
|
create_content_for_notification,
|
||||||
persist_notification,
|
persist_notification,
|
||||||
persist_email_reply_to_id_for_notification,
|
|
||||||
persist_scheduled_notification,
|
persist_scheduled_notification,
|
||||||
persist_sms_sender_id_for_notification,
|
|
||||||
send_notification_to_queue,
|
send_notification_to_queue,
|
||||||
simulated_recipient
|
simulated_recipient
|
||||||
)
|
)
|
||||||
@@ -29,7 +24,6 @@ from notifications_utils.recipients import validate_and_format_phone_number, val
|
|||||||
from app.utils import cache_key_for_service_template_counter
|
from app.utils import cache_key_for_service_template_counter
|
||||||
from app.v2.errors import BadRequestError
|
from app.v2.errors import BadRequestError
|
||||||
from tests.app.conftest import sample_api_key as create_api_key
|
from tests.app.conftest import sample_api_key as create_api_key
|
||||||
from tests.app.db import create_reply_to_email, create_service_sms_sender
|
|
||||||
|
|
||||||
|
|
||||||
def test_create_content_for_notification_passes(sample_email_template):
|
def test_create_content_for_notification_passes(sample_email_template):
|
||||||
@@ -452,27 +446,3 @@ def test_persist_email_notification_stores_normalised_email(
|
|||||||
|
|
||||||
assert persisted_notification.to == recipient
|
assert persisted_notification.to == recipient
|
||||||
assert persisted_notification.normalised_to == expected_recipient_normalised
|
assert persisted_notification.normalised_to == expected_recipient_normalised
|
||||||
|
|
||||||
|
|
||||||
def test_persist_email_reply_to_id_for_notification(sample_service, sample_notification):
|
|
||||||
create_reply_to_email(sample_service, "test@test.com")
|
|
||||||
reply_to_address = dao_get_reply_to_by_service_id(sample_service.id)
|
|
||||||
persist_email_reply_to_id_for_notification(sample_notification.id, reply_to_address[0].id)
|
|
||||||
|
|
||||||
email_reply_to = NotificationEmailReplyTo.query.all()
|
|
||||||
|
|
||||||
assert len(email_reply_to) == 1
|
|
||||||
assert email_reply_to[0].notification_id == sample_notification.id
|
|
||||||
assert email_reply_to[0].service_email_reply_to_id == reply_to_address[0].id
|
|
||||||
|
|
||||||
|
|
||||||
def test_persist_sms_sender_id_for_notification(sample_service, sample_notification):
|
|
||||||
sms_sender = create_service_sms_sender(service=sample_service, sms_sender="123456")
|
|
||||||
persist_sms_sender_id_for_notification(notification_id=sample_notification.id,
|
|
||||||
sms_sender_id=sms_sender.id)
|
|
||||||
|
|
||||||
notification_to_sms_sender = NotificationSmsSender.query.all()
|
|
||||||
|
|
||||||
assert len(notification_to_sms_sender) == 1
|
|
||||||
assert notification_to_sms_sender[0].notification_id == sample_notification.id
|
|
||||||
assert notification_to_sms_sender[0].service_sms_sender_id == sms_sender.id
|
|
||||||
|
|||||||
@@ -12,15 +12,12 @@ from app.models import (
|
|||||||
KEY_TYPE_NORMAL,
|
KEY_TYPE_NORMAL,
|
||||||
PRIORITY,
|
PRIORITY,
|
||||||
SMS_TYPE,
|
SMS_TYPE,
|
||||||
NotificationEmailReplyTo,
|
Notification
|
||||||
Notification,
|
|
||||||
NotificationSmsSender
|
|
||||||
)
|
)
|
||||||
|
|
||||||
from tests.app.db import (
|
from tests.app.db import (
|
||||||
create_user,
|
create_user,
|
||||||
create_reply_to_email,
|
create_reply_to_email,
|
||||||
create_service_sms_sender,
|
|
||||||
create_service,
|
create_service,
|
||||||
create_template
|
create_template
|
||||||
)
|
)
|
||||||
@@ -200,7 +197,7 @@ def test_send_one_off_notification_fails_if_created_by_other_service(sample_temp
|
|||||||
assert e.value.message == 'Can’t create notification - Test User is not part of the "Sample service" service'
|
assert e.value.message == 'Can’t create notification - Test User is not part of the "Sample service" service'
|
||||||
|
|
||||||
|
|
||||||
def test_send_one_off_notification_should_add_email_reply_to_id_for_email(sample_email_template, celery_mock):
|
def test_send_one_off_notification_should_add_email_reply_to_text_for_notification(sample_email_template, celery_mock):
|
||||||
reply_to_email = create_reply_to_email(sample_email_template.service, 'test@test.com')
|
reply_to_email = create_reply_to_email(sample_email_template.service, 'test@test.com')
|
||||||
data = {
|
data = {
|
||||||
'to': 'ok@ok.com',
|
'to': 'ok@ok.com',
|
||||||
@@ -216,8 +213,7 @@ def test_send_one_off_notification_should_add_email_reply_to_id_for_email(sample
|
|||||||
research_mode=False,
|
research_mode=False,
|
||||||
queue=None
|
queue=None
|
||||||
)
|
)
|
||||||
mapping_row = NotificationEmailReplyTo.query.filter_by(notification_id=notification_id['id']).first()
|
notification.reply_to_text == reply_to_email.email_address
|
||||||
assert mapping_row.service_email_reply_to_id == reply_to_email.id
|
|
||||||
|
|
||||||
|
|
||||||
def test_send_one_off_notification_should_throw_exception_if_reply_to_id_doesnot_exist(
|
def test_send_one_off_notification_should_throw_exception_if_reply_to_id_doesnot_exist(
|
||||||
@@ -234,26 +230,6 @@ def test_send_one_off_notification_should_throw_exception_if_reply_to_id_doesnot
|
|||||||
send_one_off_notification(service_id=sample_email_template.service.id, post_data=data)
|
send_one_off_notification(service_id=sample_email_template.service.id, post_data=data)
|
||||||
|
|
||||||
|
|
||||||
def test_send_one_off_notification_should_add_sms_sender_mapping_for_sms(sample_template, celery_mock):
|
|
||||||
sms_sender = create_service_sms_sender(service=sample_template.service, sms_sender='123456')
|
|
||||||
data = {
|
|
||||||
'to': '07700 900 001',
|
|
||||||
'template_id': str(sample_template.id),
|
|
||||||
'sender_id': sms_sender.id,
|
|
||||||
'created_by': str(sample_template.service.created_by_id)
|
|
||||||
}
|
|
||||||
|
|
||||||
notification_id = send_one_off_notification(service_id=sample_template.service.id, post_data=data)
|
|
||||||
notification = Notification.query.get(notification_id['id'])
|
|
||||||
celery_mock.assert_called_once_with(
|
|
||||||
notification=notification,
|
|
||||||
research_mode=False,
|
|
||||||
queue=None
|
|
||||||
)
|
|
||||||
mapping_row = NotificationSmsSender.query.filter_by(notification_id=notification_id['id']).first()
|
|
||||||
assert mapping_row.service_sms_sender_id == sms_sender.id
|
|
||||||
|
|
||||||
|
|
||||||
def test_send_one_off_notification_should_throw_exception_if_sms_sender_id_doesnot_exist(
|
def test_send_one_off_notification_should_throw_exception_if_sms_sender_id_doesnot_exist(
|
||||||
sample_template
|
sample_template
|
||||||
):
|
):
|
||||||
|
|||||||
@@ -5,12 +5,10 @@ from freezegun import freeze_time
|
|||||||
|
|
||||||
from app.dao.service_sms_sender_dao import dao_update_service_sms_sender
|
from app.dao.service_sms_sender_dao import dao_update_service_sms_sender
|
||||||
from app.models import (
|
from app.models import (
|
||||||
NotificationEmailReplyTo,
|
|
||||||
ScheduledNotification,
|
ScheduledNotification,
|
||||||
SCHEDULE_NOTIFICATIONS,
|
SCHEDULE_NOTIFICATIONS,
|
||||||
EMAIL_TYPE,
|
EMAIL_TYPE,
|
||||||
SMS_TYPE,
|
SMS_TYPE
|
||||||
NotificationSmsSender
|
|
||||||
)
|
)
|
||||||
from flask import json, current_app
|
from flask import json, current_app
|
||||||
|
|
||||||
@@ -18,7 +16,6 @@ from app.models import Notification
|
|||||||
from app.schema_validation import validate
|
from app.schema_validation import validate
|
||||||
from app.v2.errors import RateLimitError
|
from app.v2.errors import RateLimitError
|
||||||
from app.v2.notifications.notification_schemas import post_sms_response, post_email_response
|
from app.v2.notifications.notification_schemas import post_sms_response, post_email_response
|
||||||
from app.v2.notifications.post_notifications import persist_sender_to_notification_mapping
|
|
||||||
from tests import create_authorization_header
|
from tests import create_authorization_header
|
||||||
from tests.app.conftest import (
|
from tests.app.conftest import (
|
||||||
sample_template as create_sample_template,
|
sample_template as create_sample_template,
|
||||||
@@ -31,7 +28,7 @@ from tests.app.db import (
|
|||||||
create_service,
|
create_service,
|
||||||
create_template,
|
create_template,
|
||||||
create_reply_to_email,
|
create_reply_to_email,
|
||||||
create_service_sms_sender, create_notification,
|
create_service_sms_sender,
|
||||||
create_service_with_inbound_number
|
create_service_with_inbound_number
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -120,11 +117,7 @@ def test_post_sms_notification_returns_201_with_sms_sender_id(
|
|||||||
assert response.status_code == 201
|
assert response.status_code == 201
|
||||||
resp_json = json.loads(response.get_data(as_text=True))
|
resp_json = json.loads(response.get_data(as_text=True))
|
||||||
assert validate(resp_json, post_sms_response) == resp_json
|
assert validate(resp_json, post_sms_response) == resp_json
|
||||||
notification_to_sms_sender = NotificationSmsSender.query.all()
|
|
||||||
assert len(notification_to_sms_sender) == 1
|
|
||||||
assert str(notification_to_sms_sender[0].notification_id) == resp_json['id']
|
|
||||||
assert resp_json['content']['from_number'] == sms_sender.sms_sender
|
assert resp_json['content']['from_number'] == sms_sender.sms_sender
|
||||||
assert notification_to_sms_sender[0].service_sms_sender_id == sms_sender.id
|
|
||||||
notifications = Notification.query.all()
|
notifications = Notification.query.all()
|
||||||
assert len(notifications) == 1
|
assert len(notifications) == 1
|
||||||
assert notifications[0].reply_to_text == sms_sender.sms_sender
|
assert notifications[0].reply_to_text == sms_sender.sms_sender
|
||||||
@@ -626,10 +619,6 @@ def test_post_email_notification_with_valid_reply_to_id_returns_201(client, samp
|
|||||||
assert resp_json['id'] == str(notification.id)
|
assert resp_json['id'] == str(notification.id)
|
||||||
assert mocked.called
|
assert mocked.called
|
||||||
|
|
||||||
email_reply_to = NotificationEmailReplyTo.query.one()
|
|
||||||
|
|
||||||
assert email_reply_to.notification_id == notification.id
|
|
||||||
assert email_reply_to.service_email_reply_to_id == reply_to_email.id
|
|
||||||
assert notification.reply_to_text == reply_to_email.email_address
|
assert notification.reply_to_text == reply_to_email.email_address
|
||||||
|
|
||||||
|
|
||||||
@@ -650,37 +639,3 @@ def test_post_email_notification_with_invalid_reply_to_id_returns_400(client, sa
|
|||||||
assert 'email_reply_to_id {} does not exist in database for service id {}'. \
|
assert 'email_reply_to_id {} does not exist in database for service id {}'. \
|
||||||
format(fake_uuid, sample_email_template.service_id) in resp_json['errors'][0]['message']
|
format(fake_uuid, sample_email_template.service_id) in resp_json['errors'][0]['message']
|
||||||
assert 'BadRequestError' in resp_json['errors'][0]['error']
|
assert 'BadRequestError' in resp_json['errors'][0]['error']
|
||||||
|
|
||||||
|
|
||||||
def test_persist_sender_to_notification_mapping_for_email(notify_db_session):
|
|
||||||
service = create_service()
|
|
||||||
template = create_template(service=service, template_type=EMAIL_TYPE)
|
|
||||||
sender = create_reply_to_email(service=service, email_address='reply@test.com', is_default=False)
|
|
||||||
form = {
|
|
||||||
"email_address": "recipient@test.com",
|
|
||||||
"template_id": str(template.id),
|
|
||||||
'email_reply_to_id': str(sender.id)
|
|
||||||
}
|
|
||||||
notification = create_notification(template=template)
|
|
||||||
persist_sender_to_notification_mapping(form=form, notification=notification)
|
|
||||||
notification_to_email_reply_to = NotificationEmailReplyTo.query.all()
|
|
||||||
assert len(notification_to_email_reply_to) == 1
|
|
||||||
assert notification_to_email_reply_to[0].notification_id == notification.id
|
|
||||||
assert notification_to_email_reply_to[0].service_email_reply_to_id == sender.id
|
|
||||||
|
|
||||||
|
|
||||||
def test_persist_sender_to_notification_mapping_for_sms(notify_db_session):
|
|
||||||
service = create_service()
|
|
||||||
template = create_template(service=service, template_type=SMS_TYPE)
|
|
||||||
sender = create_service_sms_sender(service=service, sms_sender='12345', is_default=False)
|
|
||||||
form = {
|
|
||||||
'phone_number': '+447700900855',
|
|
||||||
'template_id': str(template.id),
|
|
||||||
'sms_sender_id': str(sender.id)
|
|
||||||
}
|
|
||||||
notification = create_notification(template=template)
|
|
||||||
persist_sender_to_notification_mapping(form=form, notification=notification)
|
|
||||||
notification_to_sms_sender = NotificationSmsSender.query.all()
|
|
||||||
assert len(notification_to_sms_sender) == 1
|
|
||||||
assert notification_to_sms_sender[0].notification_id == notification.id
|
|
||||||
assert notification_to_sms_sender[0].service_sms_sender_id == sender.id
|
|
||||||
|
|||||||
Reference in New Issue
Block a user