2016-06-01 15:59:44 +01:00
|
|
|
|
import uuid
|
2016-09-01 14:31:01 +01:00
|
|
|
|
from datetime import (datetime, date, timedelta)
|
2016-06-01 15:59:44 +01:00
|
|
|
|
|
2016-08-30 15:51:56 +01:00
|
|
|
|
import requests_mock
|
|
|
|
|
|
import pytest
|
2016-06-06 11:51:12 +01:00
|
|
|
|
from flask import current_app
|
2016-06-01 15:59:44 +01:00
|
|
|
|
|
2016-03-31 17:46:18 +01:00
|
|
|
|
from app import db
|
2016-02-26 12:00:16 +00:00
|
|
|
|
from app.models import (
|
2016-04-28 12:01:27 +01:00
|
|
|
|
User,
|
|
|
|
|
|
Service,
|
|
|
|
|
|
Template,
|
|
|
|
|
|
ApiKey,
|
|
|
|
|
|
Job,
|
|
|
|
|
|
Notification,
|
2016-07-26 11:00:03 +01:00
|
|
|
|
NotificationHistory,
|
2016-04-28 12:01:27 +01:00
|
|
|
|
InvitedUser,
|
|
|
|
|
|
Permission,
|
2016-05-05 10:45:47 +01:00
|
|
|
|
ProviderStatistics,
|
2016-05-10 09:13:02 +01:00
|
|
|
|
ProviderDetails,
|
2016-06-23 16:45:20 +01:00
|
|
|
|
NotificationStatistics,
|
2016-09-22 17:17:34 +01:00
|
|
|
|
ServiceWhitelist,
|
2016-09-15 16:00:04 +01:00
|
|
|
|
KEY_TYPE_NORMAL, KEY_TYPE_TEST, KEY_TYPE_TEAM)
|
2016-01-21 17:29:24 +00:00
|
|
|
|
from app.dao.users_dao import (save_model_user, create_user_code, create_secret_code)
|
2016-03-22 13:14:23 +00:00
|
|
|
|
from app.dao.services_dao import (dao_create_service, dao_add_user_to_service)
|
2016-02-24 11:51:02 +00:00
|
|
|
|
from app.dao.templates_dao import dao_create_template
|
2016-01-19 12:07:00 +00:00
|
|
|
|
from app.dao.api_key_dao import save_model_api_key
|
2016-02-24 17:12:30 +00:00
|
|
|
|
from app.dao.jobs_dao import dao_create_job
|
2016-02-25 09:59:50 +00:00
|
|
|
|
from app.dao.notifications_dao import dao_create_notification
|
2016-02-25 11:22:36 +00:00
|
|
|
|
from app.dao.invited_user_dao import save_invited_user
|
2016-06-01 15:59:44 +01:00
|
|
|
|
from app.clients.sms.firetext import FiretextClient
|
2016-01-08 12:18:12 +00:00
|
|
|
|
|
2016-02-16 17:42:04 +00:00
|
|
|
|
|
2016-05-31 16:55:26 +01:00
|
|
|
|
@pytest.yield_fixture
|
|
|
|
|
|
def rmock():
|
|
|
|
|
|
with requests_mock.mock() as rmock:
|
|
|
|
|
|
yield rmock
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-02-16 14:06:56 +00:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def service_factory(notify_db, notify_db_session):
|
|
|
|
|
|
class ServiceFactory(object):
|
2016-03-31 17:46:18 +01:00
|
|
|
|
def get(self, service_name, user=None, template_type=None, email_from=None):
|
2016-02-19 15:54:11 +00:00
|
|
|
|
if not user:
|
|
|
|
|
|
user = sample_user(notify_db, notify_db_session)
|
2016-07-26 11:00:03 +01:00
|
|
|
|
if not email_from:
|
|
|
|
|
|
email_from = service_name
|
2016-03-31 17:46:18 +01:00
|
|
|
|
service = sample_service(notify_db, notify_db_session, service_name, user, email_from=email_from)
|
2016-02-22 17:17:29 +00:00
|
|
|
|
if template_type == 'email':
|
|
|
|
|
|
sample_template(
|
|
|
|
|
|
notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
template_type=template_type,
|
2016-03-31 17:46:18 +01:00
|
|
|
|
subject_line=service.email_from,
|
2016-02-22 17:17:29 +00:00
|
|
|
|
service=service
|
|
|
|
|
|
)
|
|
|
|
|
|
else:
|
|
|
|
|
|
sample_template(
|
|
|
|
|
|
notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
service=service
|
|
|
|
|
|
)
|
2016-02-16 14:06:56 +00:00
|
|
|
|
return service
|
|
|
|
|
|
|
|
|
|
|
|
return ServiceFactory()
|
|
|
|
|
|
|
2016-01-08 12:18:12 +00:00
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_user(notify_db,
|
|
|
|
|
|
notify_db_session,
|
2016-03-03 12:05:18 +00:00
|
|
|
|
mobile_numnber="+447700900986",
|
2016-01-08 12:18:12 +00:00
|
|
|
|
email="notify@digital.cabinet-office.gov.uk"):
|
2016-04-25 16:28:08 +01:00
|
|
|
|
data = {
|
|
|
|
|
|
'name': 'Test User',
|
|
|
|
|
|
'email_address': email,
|
|
|
|
|
|
'password': 'password',
|
|
|
|
|
|
'mobile_number': mobile_numnber,
|
|
|
|
|
|
'state': 'active'
|
|
|
|
|
|
}
|
|
|
|
|
|
usr = User.query.filter_by(email_address=email).first()
|
|
|
|
|
|
if not usr:
|
|
|
|
|
|
usr = User(**data)
|
|
|
|
|
|
save_model_user(usr)
|
|
|
|
|
|
|
2016-01-21 17:29:24 +00:00
|
|
|
|
return usr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_code(notify_db, notify_db_session, code_type, usr=None, code=None):
|
|
|
|
|
|
if code is None:
|
|
|
|
|
|
code = create_secret_code()
|
|
|
|
|
|
if usr is None:
|
|
|
|
|
|
usr = sample_user(notify_db, notify_db_session)
|
|
|
|
|
|
return create_user_code(usr, code, code_type), code
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_email_code(notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
code=None,
|
|
|
|
|
|
code_type="email",
|
|
|
|
|
|
usr=None):
|
|
|
|
|
|
code, txt_code = create_code(notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
code_type,
|
|
|
|
|
|
usr=usr,
|
|
|
|
|
|
code=code)
|
|
|
|
|
|
code.txt_code = txt_code
|
|
|
|
|
|
return code
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_sms_code(notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
code=None,
|
|
|
|
|
|
code_type="sms",
|
|
|
|
|
|
usr=None):
|
|
|
|
|
|
code, txt_code = create_code(notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
code_type,
|
|
|
|
|
|
usr=usr,
|
|
|
|
|
|
code=code)
|
|
|
|
|
|
code.txt_code = txt_code
|
|
|
|
|
|
return code
|
2016-01-08 12:18:12 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_service(notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
service_name="Sample service",
|
2016-03-03 12:05:18 +00:00
|
|
|
|
user=None,
|
2016-03-09 11:06:37 +00:00
|
|
|
|
restricted=False,
|
2016-03-31 17:46:18 +01:00
|
|
|
|
limit=1000,
|
|
|
|
|
|
email_from="sample.service"):
|
2016-01-08 12:18:12 +00:00
|
|
|
|
if user is None:
|
|
|
|
|
|
user = sample_user(notify_db, notify_db_session)
|
2016-01-11 15:07:13 +00:00
|
|
|
|
data = {
|
|
|
|
|
|
'name': service_name,
|
2016-04-08 16:13:10 +01:00
|
|
|
|
'message_limit': limit,
|
2016-01-11 15:07:13 +00:00
|
|
|
|
'active': False,
|
2016-03-03 12:05:18 +00:00
|
|
|
|
'restricted': restricted,
|
2016-04-14 15:09:59 +01:00
|
|
|
|
'email_from': email_from,
|
|
|
|
|
|
'created_by': user
|
2016-02-19 15:54:11 +00:00
|
|
|
|
}
|
2016-01-22 14:43:30 +00:00
|
|
|
|
service = Service.query.filter_by(name=service_name).first()
|
|
|
|
|
|
if not service:
|
|
|
|
|
|
service = Service(**data)
|
2016-02-19 15:54:11 +00:00
|
|
|
|
dao_create_service(service, user)
|
2016-03-22 13:14:23 +00:00
|
|
|
|
else:
|
|
|
|
|
|
if user not in service.users:
|
|
|
|
|
|
dao_add_user_to_service(service, user)
|
2016-01-11 15:07:13 +00:00
|
|
|
|
return service
|
2016-01-13 11:04:13 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_template(notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
template_name="Template Name",
|
|
|
|
|
|
template_type="sms",
|
2016-07-07 15:59:50 +01:00
|
|
|
|
content="This is a template:\nwith a newline",
|
2016-04-25 16:28:08 +01:00
|
|
|
|
archived=False,
|
2016-04-13 15:31:08 +01:00
|
|
|
|
subject_line='Subject',
|
2016-04-25 10:38:37 +01:00
|
|
|
|
user=None,
|
2016-04-25 16:28:08 +01:00
|
|
|
|
service=None,
|
|
|
|
|
|
created_by=None):
|
2016-04-25 10:38:37 +01:00
|
|
|
|
if user is None:
|
|
|
|
|
|
user = sample_user(notify_db, notify_db_session)
|
2016-01-13 11:04:13 +00:00
|
|
|
|
if service is None:
|
|
|
|
|
|
service = sample_service(notify_db, notify_db_session)
|
2016-04-25 16:28:08 +01:00
|
|
|
|
if created_by is None:
|
|
|
|
|
|
created_by = sample_user(notify_db, notify_db_session)
|
2016-01-13 11:04:13 +00:00
|
|
|
|
data = {
|
|
|
|
|
|
'name': template_name,
|
|
|
|
|
|
'template_type': template_type,
|
|
|
|
|
|
'content': content,
|
2016-04-25 10:38:37 +01:00
|
|
|
|
'service': service,
|
2016-04-25 16:28:08 +01:00
|
|
|
|
'created_by': created_by,
|
|
|
|
|
|
'archived': archived
|
2016-01-13 11:04:13 +00:00
|
|
|
|
}
|
2016-02-22 17:17:29 +00:00
|
|
|
|
if template_type == 'email':
|
|
|
|
|
|
data.update({
|
|
|
|
|
|
'subject': subject_line
|
|
|
|
|
|
})
|
|
|
|
|
|
template = Template(**data)
|
2016-02-24 11:51:02 +00:00
|
|
|
|
dao_create_template(template)
|
2016-02-22 17:17:29 +00:00
|
|
|
|
return template
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-02-29 11:23:34 +00:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_template_with_placeholders(notify_db, notify_db_session):
|
2016-07-08 10:23:33 +01:00
|
|
|
|
return sample_template(notify_db, notify_db_session, content="Hello ((name))\nYour thing is due soon")
|
2016-02-29 11:23:34 +00:00
|
|
|
|
|
|
|
|
|
|
|
2016-02-22 17:17:29 +00:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_email_template(
|
|
|
|
|
|
notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
template_name="Email Template Name",
|
|
|
|
|
|
template_type="email",
|
2016-04-25 10:38:37 +01:00
|
|
|
|
user=None,
|
2016-02-22 17:17:29 +00:00
|
|
|
|
content="This is a template",
|
|
|
|
|
|
subject_line='Email Subject',
|
|
|
|
|
|
service=None):
|
2016-04-25 10:38:37 +01:00
|
|
|
|
if user is None:
|
|
|
|
|
|
user = sample_user(notify_db, notify_db_session)
|
2016-02-22 17:17:29 +00:00
|
|
|
|
if service is None:
|
|
|
|
|
|
service = sample_service(notify_db, notify_db_session)
|
|
|
|
|
|
data = {
|
|
|
|
|
|
'name': template_name,
|
|
|
|
|
|
'template_type': template_type,
|
|
|
|
|
|
'content': content,
|
2016-04-25 10:38:37 +01:00
|
|
|
|
'service': service,
|
|
|
|
|
|
'created_by': user
|
2016-02-22 17:17:29 +00:00
|
|
|
|
}
|
2016-02-19 15:54:11 +00:00
|
|
|
|
if subject_line:
|
|
|
|
|
|
data.update({
|
|
|
|
|
|
'subject': subject_line
|
|
|
|
|
|
})
|
2016-01-13 11:04:13 +00:00
|
|
|
|
template = Template(**data)
|
2016-02-24 11:51:02 +00:00
|
|
|
|
dao_create_template(template)
|
2016-01-13 11:04:13 +00:00
|
|
|
|
return template
|
2016-01-14 11:30:45 +00:00
|
|
|
|
|
|
|
|
|
|
|
2016-02-29 14:43:44 +00:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_email_template_with_placeholders(notify_db, notify_db_session):
|
2016-04-13 15:31:08 +01:00
|
|
|
|
return sample_email_template(
|
|
|
|
|
|
notify_db,
|
|
|
|
|
|
notify_db_session,
|
2016-07-08 11:02:19 +01:00
|
|
|
|
content="Hello ((name))\nThis is an email from GOV.UK",
|
2016-04-13 15:31:08 +01:00
|
|
|
|
subject_line="((name))")
|
2016-02-29 14:43:44 +00:00
|
|
|
|
|
|
|
|
|
|
|
2016-01-14 11:30:45 +00:00
|
|
|
|
@pytest.fixture(scope='function')
|
2016-01-19 12:07:00 +00:00
|
|
|
|
def sample_api_key(notify_db,
|
|
|
|
|
|
notify_db_session,
|
2016-06-23 16:45:20 +01:00
|
|
|
|
service=None,
|
|
|
|
|
|
key_type=KEY_TYPE_NORMAL):
|
2016-01-14 11:30:45 +00:00
|
|
|
|
if service is None:
|
|
|
|
|
|
service = sample_service(notify_db, notify_db_session)
|
2016-06-23 16:45:20 +01:00
|
|
|
|
data = {'service': service, 'name': uuid.uuid4(), 'created_by': service.created_by, 'key_type': key_type}
|
2016-01-19 12:07:00 +00:00
|
|
|
|
api_key = ApiKey(**data)
|
|
|
|
|
|
save_model_api_key(api_key)
|
|
|
|
|
|
return api_key
|
2016-01-15 12:16:07 +00:00
|
|
|
|
|
|
|
|
|
|
|
2016-09-15 16:00:04 +01:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_test_api_key(notify_db, notify_db_session, service=None):
|
|
|
|
|
|
return sample_api_key(notify_db, notify_db_session, service, KEY_TYPE_TEST)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_team_api_key(notify_db, notify_db_session, service=None):
|
|
|
|
|
|
return sample_api_key(notify_db, notify_db_session, service, KEY_TYPE_TEAM)
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-01-15 12:16:07 +00:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_job(notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
service=None,
|
2016-03-09 14:52:07 +00:00
|
|
|
|
template=None,
|
2016-03-14 16:31:57 +00:00
|
|
|
|
notification_count=1,
|
2016-08-24 16:24:55 +01:00
|
|
|
|
created_at=datetime.utcnow(),
|
|
|
|
|
|
job_status='pending',
|
|
|
|
|
|
scheduled_for=None):
|
2016-01-15 12:16:07 +00:00
|
|
|
|
if service is None:
|
|
|
|
|
|
service = sample_service(notify_db, notify_db_session)
|
|
|
|
|
|
if template is None:
|
|
|
|
|
|
template = sample_template(notify_db, notify_db_session,
|
|
|
|
|
|
service=service)
|
|
|
|
|
|
data = {
|
|
|
|
|
|
'id': uuid.uuid4(),
|
|
|
|
|
|
'service_id': service.id,
|
2016-04-07 13:44:04 +01:00
|
|
|
|
'service': service,
|
2016-01-15 12:16:07 +00:00
|
|
|
|
'template_id': template.id,
|
2016-05-13 16:25:05 +01:00
|
|
|
|
'template_version': template.version,
|
2016-02-22 14:56:09 +00:00
|
|
|
|
'original_file_name': 'some.csv',
|
2016-03-14 16:31:57 +00:00
|
|
|
|
'notification_count': notification_count,
|
2016-04-26 16:15:34 +01:00
|
|
|
|
'created_at': created_at,
|
2016-08-24 16:24:55 +01:00
|
|
|
|
'created_by': service.created_by,
|
|
|
|
|
|
'job_status': job_status,
|
|
|
|
|
|
'scheduled_for': scheduled_for
|
2016-01-15 12:16:07 +00:00
|
|
|
|
}
|
|
|
|
|
|
job = Job(**data)
|
2016-02-24 17:12:30 +00:00
|
|
|
|
dao_create_job(job)
|
2016-01-15 12:16:07 +00:00
|
|
|
|
return job
|
2016-01-15 16:22:03 +00:00
|
|
|
|
|
2016-01-15 17:11:02 +00:00
|
|
|
|
|
2016-03-09 07:27:26 +00:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_job_with_placeholdered_template(
|
2016-08-30 15:51:56 +01:00
|
|
|
|
notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
service=None
|
2016-03-09 07:27:26 +00:00
|
|
|
|
):
|
|
|
|
|
|
return sample_job(
|
|
|
|
|
|
notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
service=service,
|
|
|
|
|
|
template=sample_template_with_placeholders(notify_db, notify_db_session)
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-09-01 14:31:01 +01:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_scheduled_job(
|
|
|
|
|
|
notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
service=None
|
|
|
|
|
|
):
|
|
|
|
|
|
return sample_job(
|
|
|
|
|
|
notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
service=service,
|
|
|
|
|
|
template=sample_template_with_placeholders(notify_db, notify_db_session),
|
|
|
|
|
|
scheduled_for=(datetime.utcnow() + timedelta(minutes=60)).isoformat(),
|
|
|
|
|
|
job_status='scheduled'
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-02-25 09:59:50 +00:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_email_job(notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
service=None,
|
|
|
|
|
|
template=None):
|
|
|
|
|
|
if service is None:
|
|
|
|
|
|
service = sample_service(notify_db, notify_db_session)
|
|
|
|
|
|
if template is None:
|
|
|
|
|
|
template = sample_email_template(
|
|
|
|
|
|
notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
service=service)
|
|
|
|
|
|
job_id = uuid.uuid4()
|
|
|
|
|
|
data = {
|
2016-05-24 11:31:44 +01:00
|
|
|
|
'id': job_id,
|
2016-02-25 09:59:50 +00:00
|
|
|
|
'service_id': service.id,
|
2016-04-07 13:44:04 +01:00
|
|
|
|
'service': service,
|
2016-02-25 09:59:50 +00:00
|
|
|
|
'template_id': template.id,
|
2016-05-13 16:25:05 +01:00
|
|
|
|
'template_version': template.version,
|
2016-02-25 09:59:50 +00:00
|
|
|
|
'original_file_name': 'some.csv',
|
2016-04-26 16:15:34 +01:00
|
|
|
|
'notification_count': 1,
|
|
|
|
|
|
'created_by': service.created_by
|
2016-02-25 09:59:50 +00:00
|
|
|
|
}
|
|
|
|
|
|
job = Job(**data)
|
|
|
|
|
|
dao_create_job(job)
|
|
|
|
|
|
return job
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-09-15 16:00:04 +01:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_notification_with_job(
|
|
|
|
|
|
notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
service=None,
|
|
|
|
|
|
template=None,
|
|
|
|
|
|
job=None,
|
|
|
|
|
|
job_row_number=None,
|
|
|
|
|
|
to_field=None,
|
|
|
|
|
|
status='created',
|
|
|
|
|
|
reference=None,
|
|
|
|
|
|
created_at=None,
|
|
|
|
|
|
sent_at=None,
|
|
|
|
|
|
billable_units=1,
|
|
|
|
|
|
create=True,
|
|
|
|
|
|
personalisation=None,
|
|
|
|
|
|
api_key_id=None,
|
|
|
|
|
|
key_type=KEY_TYPE_NORMAL
|
|
|
|
|
|
):
|
|
|
|
|
|
if job is None:
|
|
|
|
|
|
job = sample_job(notify_db, notify_db_session, service=service, template=template)
|
|
|
|
|
|
|
|
|
|
|
|
return sample_notification(
|
|
|
|
|
|
notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
service,
|
|
|
|
|
|
template,
|
|
|
|
|
|
job=job,
|
|
|
|
|
|
job_row_number=job_row_number if job_row_number else None,
|
|
|
|
|
|
to_field=to_field,
|
|
|
|
|
|
status=status,
|
|
|
|
|
|
reference=reference,
|
|
|
|
|
|
created_at=created_at,
|
|
|
|
|
|
sent_at=sent_at,
|
|
|
|
|
|
billable_units=billable_units,
|
|
|
|
|
|
create=create,
|
|
|
|
|
|
personalisation=personalisation,
|
|
|
|
|
|
api_key_id=api_key_id,
|
|
|
|
|
|
key_type=key_type
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-02-09 12:01:17 +00:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_notification(notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
service=None,
|
|
|
|
|
|
template=None,
|
2016-03-01 14:58:27 +00:00
|
|
|
|
job=None,
|
2016-05-19 10:46:03 +01:00
|
|
|
|
job_row_number=None,
|
2016-03-09 17:46:01 +00:00
|
|
|
|
to_field=None,
|
2016-06-27 14:47:20 +01:00
|
|
|
|
status='created',
|
2016-03-11 10:19:40 +00:00
|
|
|
|
reference=None,
|
2016-07-22 15:16:24 +01:00
|
|
|
|
created_at=None,
|
2016-09-13 13:04:44 +01:00
|
|
|
|
sent_at=None,
|
2016-08-03 16:26:11 +01:00
|
|
|
|
billable_units=1,
|
2016-06-20 16:23:56 +01:00
|
|
|
|
create=True,
|
2016-06-30 18:43:15 +01:00
|
|
|
|
personalisation=None,
|
|
|
|
|
|
api_key_id=None,
|
|
|
|
|
|
key_type=KEY_TYPE_NORMAL):
|
2016-07-22 15:16:24 +01:00
|
|
|
|
if created_at is None:
|
|
|
|
|
|
created_at = datetime.utcnow()
|
2016-02-09 12:01:17 +00:00
|
|
|
|
if service is None:
|
|
|
|
|
|
service = sample_service(notify_db, notify_db_session)
|
|
|
|
|
|
if template is None:
|
|
|
|
|
|
template = sample_template(notify_db, notify_db_session, service=service)
|
|
|
|
|
|
|
2016-03-01 13:30:10 +00:00
|
|
|
|
notification_id = uuid.uuid4()
|
2016-03-01 14:58:27 +00:00
|
|
|
|
|
|
|
|
|
|
if to_field:
|
|
|
|
|
|
to = to_field
|
|
|
|
|
|
else:
|
2016-03-06 12:58:28 +00:00
|
|
|
|
to = '+447700900855'
|
2016-02-09 12:01:17 +00:00
|
|
|
|
|
|
|
|
|
|
data = {
|
2016-03-01 13:30:10 +00:00
|
|
|
|
'id': notification_id,
|
2016-02-09 12:01:17 +00:00
|
|
|
|
'to': to,
|
2016-09-15 16:00:04 +01:00
|
|
|
|
'job_id': job.id if job else None,
|
2016-02-09 12:48:27 +00:00
|
|
|
|
'job': job,
|
2016-03-08 15:23:19 +00:00
|
|
|
|
'service_id': service.id,
|
2016-02-09 12:48:27 +00:00
|
|
|
|
'service': service,
|
2016-02-25 09:59:50 +00:00
|
|
|
|
'template': template,
|
2016-05-11 17:04:51 +01:00
|
|
|
|
'template_version': template.version,
|
2016-03-09 17:46:01 +00:00
|
|
|
|
'status': status,
|
2016-03-11 10:19:40 +00:00
|
|
|
|
'reference': reference,
|
2016-04-21 11:37:38 +01:00
|
|
|
|
'created_at': created_at,
|
2016-09-13 13:04:44 +01:00
|
|
|
|
'sent_at': sent_at,
|
2016-08-03 16:26:11 +01:00
|
|
|
|
'billable_units': billable_units,
|
2016-06-29 11:23:02 +01:00
|
|
|
|
'personalisation': personalisation,
|
2016-06-30 18:43:15 +01:00
|
|
|
|
'notification_type': template.template_type,
|
|
|
|
|
|
'api_key_id': api_key_id,
|
|
|
|
|
|
'key_type': key_type
|
2016-02-09 12:01:17 +00:00
|
|
|
|
}
|
2016-05-19 10:46:03 +01:00
|
|
|
|
if job_row_number:
|
|
|
|
|
|
data['job_row_number'] = job_row_number
|
2016-02-09 12:01:17 +00:00
|
|
|
|
notification = Notification(**data)
|
2016-04-21 11:37:38 +01:00
|
|
|
|
if create:
|
2016-08-25 11:55:38 +01:00
|
|
|
|
dao_create_notification(notification)
|
2016-02-09 12:01:17 +00:00
|
|
|
|
return notification
|
2016-02-17 15:41:33 +00:00
|
|
|
|
|
|
|
|
|
|
|
2016-08-30 15:51:56 +01:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_email_notification(notify_db, notify_db_session):
|
|
|
|
|
|
created_at = datetime.utcnow()
|
|
|
|
|
|
service = sample_service(notify_db, notify_db_session)
|
|
|
|
|
|
template = sample_email_template(notify_db, notify_db_session, service=service)
|
|
|
|
|
|
job = sample_job(notify_db, notify_db_session, service=service, template=template)
|
|
|
|
|
|
|
|
|
|
|
|
notification_id = uuid.uuid4()
|
|
|
|
|
|
|
|
|
|
|
|
to = 'foo@bar.com'
|
|
|
|
|
|
|
|
|
|
|
|
data = {
|
|
|
|
|
|
'id': notification_id,
|
|
|
|
|
|
'to': to,
|
|
|
|
|
|
'job_id': job.id,
|
|
|
|
|
|
'job': job,
|
|
|
|
|
|
'service_id': service.id,
|
|
|
|
|
|
'service': service,
|
|
|
|
|
|
'template': template,
|
|
|
|
|
|
'template_version': template.version,
|
|
|
|
|
|
'status': 'created',
|
|
|
|
|
|
'reference': None,
|
|
|
|
|
|
'created_at': created_at,
|
|
|
|
|
|
'billable_units': 0,
|
|
|
|
|
|
'personalisation': None,
|
|
|
|
|
|
'notification_type': template.template_type,
|
|
|
|
|
|
'api_key_id': None,
|
|
|
|
|
|
'key_type': KEY_TYPE_NORMAL,
|
|
|
|
|
|
'job_row_number': 1
|
|
|
|
|
|
}
|
|
|
|
|
|
notification = Notification(**data)
|
|
|
|
|
|
dao_create_notification(notification)
|
|
|
|
|
|
return notification
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-08-02 14:23:47 +01:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def mock_statsd_inc(mocker):
|
|
|
|
|
|
return mocker.patch('app.statsd_client.incr')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def mock_statsd_timing(mocker):
|
|
|
|
|
|
return mocker.patch('app.statsd_client.timing')
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-07-26 11:00:03 +01:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_notification_history(notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
sample_template,
|
|
|
|
|
|
status='created',
|
|
|
|
|
|
created_at=None):
|
|
|
|
|
|
if created_at is None:
|
|
|
|
|
|
created_at = datetime.utcnow()
|
|
|
|
|
|
|
|
|
|
|
|
notification_history = NotificationHistory(
|
|
|
|
|
|
id=uuid.uuid4(),
|
|
|
|
|
|
service=sample_template.service,
|
|
|
|
|
|
template=sample_template,
|
|
|
|
|
|
template_version=sample_template.version,
|
|
|
|
|
|
status=status,
|
|
|
|
|
|
created_at=created_at,
|
|
|
|
|
|
notification_type=sample_template.template_type,
|
|
|
|
|
|
key_type=KEY_TYPE_NORMAL
|
|
|
|
|
|
)
|
|
|
|
|
|
notify_db.session.add(notification_history)
|
|
|
|
|
|
notify_db.session.commit()
|
|
|
|
|
|
|
|
|
|
|
|
return notification_history
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-02-17 15:41:33 +00:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def mock_celery_send_sms_code(mocker):
|
|
|
|
|
|
return mocker.patch('app.celery.tasks.send_sms_code.apply_async')
|
2016-02-17 17:48:23 +00:00
|
|
|
|
|
|
|
|
|
|
|
2016-03-17 13:06:17 +00:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def mock_celery_email_registration_verification(mocker):
|
|
|
|
|
|
return mocker.patch('app.celery.tasks.email_registration_verification.apply_async')
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-04-01 11:12:44 +01:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def mock_celery_send_email(mocker):
|
|
|
|
|
|
return mocker.patch('app.celery.tasks.send_email.apply_async')
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-02-18 09:52:27 +00:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def mock_encryption(mocker):
|
|
|
|
|
|
return mocker.patch('app.encryption.encrypt', return_value="something_encrypted")
|
2016-02-25 11:22:36 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_invited_user(notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
service=None,
|
|
|
|
|
|
to_email_address=None):
|
|
|
|
|
|
|
|
|
|
|
|
if service is None:
|
|
|
|
|
|
service = sample_service(notify_db, notify_db_session)
|
|
|
|
|
|
if to_email_address is None:
|
|
|
|
|
|
to_email_address = 'invited_user@digital.gov.uk'
|
|
|
|
|
|
|
|
|
|
|
|
from_user = service.users[0]
|
|
|
|
|
|
|
|
|
|
|
|
data = {
|
|
|
|
|
|
'service': service,
|
|
|
|
|
|
'email_address': to_email_address,
|
2016-02-29 09:49:12 +00:00
|
|
|
|
'from_user': from_user,
|
|
|
|
|
|
'permissions': 'send_messages,manage_service,manage_api_keys'
|
2016-02-25 11:22:36 +00:00
|
|
|
|
}
|
|
|
|
|
|
invited_user = InvitedUser(**data)
|
|
|
|
|
|
save_invited_user(invited_user)
|
|
|
|
|
|
return invited_user
|
2016-02-26 12:00:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_permission(notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
service=None,
|
|
|
|
|
|
user=None,
|
2016-03-02 15:34:26 +00:00
|
|
|
|
permission="manage_settings"):
|
2016-02-26 12:00:16 +00:00
|
|
|
|
if user is None:
|
|
|
|
|
|
user = sample_user(notify_db, notify_db_session)
|
|
|
|
|
|
data = {
|
|
|
|
|
|
'user': user,
|
|
|
|
|
|
'permission': permission
|
|
|
|
|
|
}
|
2016-05-06 11:07:11 +01:00
|
|
|
|
if service is None:
|
|
|
|
|
|
service = sample_service(notify_db, notify_db_session)
|
2016-02-26 12:00:16 +00:00
|
|
|
|
if service:
|
|
|
|
|
|
data['service'] = service
|
2016-03-02 11:10:52 +00:00
|
|
|
|
p_model = Permission.query.filter_by(
|
|
|
|
|
|
user=user,
|
|
|
|
|
|
service=service,
|
|
|
|
|
|
permission=permission).first()
|
|
|
|
|
|
if not p_model:
|
|
|
|
|
|
p_model = Permission(**data)
|
|
|
|
|
|
db.session.add(p_model)
|
|
|
|
|
|
db.session.commit()
|
2016-02-26 12:00:16 +00:00
|
|
|
|
return p_model
|
2016-02-26 15:57:24 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_service_permission(notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
service=None,
|
|
|
|
|
|
user=None,
|
2016-03-02 15:34:26 +00:00
|
|
|
|
permission="manage_settings"):
|
2016-02-26 15:57:24 +00:00
|
|
|
|
if user is None:
|
|
|
|
|
|
user = sample_user(notify_db, notify_db_session)
|
|
|
|
|
|
if service is None:
|
2016-03-22 13:14:23 +00:00
|
|
|
|
service = sample_service(notify_db, notify_db_session, user=user)
|
2016-02-26 15:57:24 +00:00
|
|
|
|
data = {
|
|
|
|
|
|
'user': user,
|
|
|
|
|
|
'service': service,
|
|
|
|
|
|
'permission': permission
|
|
|
|
|
|
}
|
2016-03-02 11:10:52 +00:00
|
|
|
|
p_model = Permission.query.filter_by(
|
|
|
|
|
|
user=user,
|
|
|
|
|
|
service=service,
|
|
|
|
|
|
permission=permission).first()
|
|
|
|
|
|
if not p_model:
|
|
|
|
|
|
p_model = Permission(**data)
|
|
|
|
|
|
db.session.add(p_model)
|
|
|
|
|
|
db.session.commit()
|
2016-02-26 15:57:24 +00:00
|
|
|
|
return p_model
|
2016-04-08 13:34:46 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def fake_uuid():
|
|
|
|
|
|
return "6ce466d0-fd6a-11e5-82f5-e0accb9d11a6"
|
2016-04-21 11:37:38 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
2016-05-06 09:09:47 +01:00
|
|
|
|
def ses_provider():
|
|
|
|
|
|
return ProviderDetails.query.filter_by(identifier='ses').one()
|
2016-04-21 11:37:38 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
2016-05-06 09:09:47 +01:00
|
|
|
|
def firetext_provider():
|
|
|
|
|
|
return ProviderDetails.query.filter_by(identifier='mmg').one()
|
2016-04-28 12:01:27 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
2016-05-06 09:09:47 +01:00
|
|
|
|
def mmg_provider():
|
|
|
|
|
|
return ProviderDetails.query.filter_by(identifier='mmg').one()
|
2016-04-28 12:01:27 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_provider_statistics(notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
sample_service,
|
|
|
|
|
|
provider=None,
|
|
|
|
|
|
day=None,
|
|
|
|
|
|
unit_count=1):
|
2016-05-06 09:09:47 +01:00
|
|
|
|
|
2016-04-28 12:01:27 +01:00
|
|
|
|
if provider is None:
|
2016-05-06 09:09:47 +01:00
|
|
|
|
provider = ProviderDetails.query.filter_by(identifier='mmg').first()
|
2016-04-28 12:01:27 +01:00
|
|
|
|
if day is None:
|
|
|
|
|
|
day = date.today()
|
|
|
|
|
|
stats = ProviderStatistics(
|
|
|
|
|
|
service=sample_service,
|
2016-05-06 09:09:47 +01:00
|
|
|
|
provider_id=provider.id,
|
2016-04-28 12:01:27 +01:00
|
|
|
|
day=day,
|
|
|
|
|
|
unit_count=unit_count)
|
|
|
|
|
|
notify_db.session.add(stats)
|
|
|
|
|
|
notify_db.session.commit()
|
|
|
|
|
|
return stats
|
2016-05-05 10:45:47 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_notification_statistics(notify_db,
|
|
|
|
|
|
notify_db_session,
|
|
|
|
|
|
service=None,
|
|
|
|
|
|
day=None,
|
|
|
|
|
|
emails_requested=2,
|
|
|
|
|
|
emails_delivered=1,
|
|
|
|
|
|
emails_failed=1,
|
|
|
|
|
|
sms_requested=2,
|
|
|
|
|
|
sms_delivered=1,
|
|
|
|
|
|
sms_failed=1):
|
|
|
|
|
|
if service is None:
|
|
|
|
|
|
service = sample_service(notify_db, notify_db_session)
|
|
|
|
|
|
if day is None:
|
|
|
|
|
|
day = date.today()
|
|
|
|
|
|
stats = NotificationStatistics(
|
|
|
|
|
|
service=service,
|
|
|
|
|
|
day=day,
|
|
|
|
|
|
emails_requested=emails_requested,
|
|
|
|
|
|
emails_delivered=emails_delivered,
|
|
|
|
|
|
emails_failed=emails_failed,
|
|
|
|
|
|
sms_requested=sms_requested,
|
|
|
|
|
|
sms_delivered=sms_delivered,
|
|
|
|
|
|
sms_failed=sms_failed)
|
|
|
|
|
|
notify_db.session.add(stats)
|
|
|
|
|
|
notify_db.session.commit()
|
|
|
|
|
|
return stats
|
2016-06-01 15:59:44 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def mock_firetext_client(mocker, statsd_client=None):
|
|
|
|
|
|
client = FiretextClient()
|
|
|
|
|
|
statsd_client = statsd_client or mocker.Mock()
|
|
|
|
|
|
current_app = mocker.Mock(config={
|
|
|
|
|
|
'FIRETEXT_API_KEY': 'foo',
|
2016-06-06 09:49:51 +01:00
|
|
|
|
'FROM_NUMBER': 'bar'
|
2016-06-01 15:59:44 +01:00
|
|
|
|
})
|
|
|
|
|
|
client.init_app(current_app, statsd_client)
|
|
|
|
|
|
return client
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-06-06 11:51:12 +01:00
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sms_code_template(notify_db,
|
|
|
|
|
|
notify_db_session):
|
|
|
|
|
|
user = sample_user(notify_db, notify_db_session)
|
|
|
|
|
|
service = Service.query.get(current_app.config['NOTIFY_SERVICE_ID'])
|
|
|
|
|
|
if not service:
|
|
|
|
|
|
data = {
|
|
|
|
|
|
'id': current_app.config['NOTIFY_SERVICE_ID'],
|
|
|
|
|
|
'name': 'Notify Service',
|
|
|
|
|
|
'message_limit': 1000,
|
|
|
|
|
|
'active': True,
|
|
|
|
|
|
'restricted': False,
|
|
|
|
|
|
'email_from': 'notify.service',
|
|
|
|
|
|
'created_by': user
|
|
|
|
|
|
}
|
|
|
|
|
|
service = Service(**data)
|
|
|
|
|
|
db.session.add(service)
|
|
|
|
|
|
|
|
|
|
|
|
template = Template.query.get(current_app.config['SMS_CODE_TEMPLATE_ID'])
|
|
|
|
|
|
if not template:
|
|
|
|
|
|
data = {
|
|
|
|
|
|
'id': current_app.config['SMS_CODE_TEMPLATE_ID'],
|
|
|
|
|
|
'name': 'Sms code template',
|
|
|
|
|
|
'template_type': 'sms',
|
|
|
|
|
|
'content': '((verify_code))',
|
|
|
|
|
|
'service': service,
|
|
|
|
|
|
'created_by': user,
|
|
|
|
|
|
'archived': False
|
|
|
|
|
|
}
|
|
|
|
|
|
template = Template(**data)
|
|
|
|
|
|
db.session.add(template)
|
|
|
|
|
|
return template
|
2016-06-09 16:41:20 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def email_verification_template(notify_db,
|
|
|
|
|
|
notify_db_session):
|
|
|
|
|
|
user = sample_user(notify_db, notify_db_session)
|
|
|
|
|
|
service = Service.query.get(current_app.config['NOTIFY_SERVICE_ID'])
|
|
|
|
|
|
if not service:
|
|
|
|
|
|
data = {
|
|
|
|
|
|
'id': current_app.config['NOTIFY_SERVICE_ID'],
|
|
|
|
|
|
'name': 'Notify Service',
|
|
|
|
|
|
'message_limit': 1000,
|
|
|
|
|
|
'active': True,
|
|
|
|
|
|
'restricted': False,
|
|
|
|
|
|
'email_from': 'notify.service',
|
|
|
|
|
|
'created_by': user
|
|
|
|
|
|
}
|
|
|
|
|
|
service = Service(**data)
|
|
|
|
|
|
db.session.add(service)
|
|
|
|
|
|
|
2016-06-16 17:34:33 +01:00
|
|
|
|
template = Template.query.get(current_app.config['EMAIL_VERIFY_CODE_TEMPLATE_ID'])
|
2016-06-09 16:41:20 +01:00
|
|
|
|
if not template:
|
|
|
|
|
|
data = {
|
|
|
|
|
|
'id': current_app.config['EMAIL_VERIFY_CODE_TEMPLATE_ID'],
|
|
|
|
|
|
'name': 'Email verification template',
|
|
|
|
|
|
'template_type': 'email',
|
|
|
|
|
|
'content': '((user_name)) use ((url)) to complete registration',
|
|
|
|
|
|
'service': service,
|
|
|
|
|
|
'created_by': user,
|
|
|
|
|
|
'archived': False
|
|
|
|
|
|
}
|
|
|
|
|
|
template = Template(**data)
|
|
|
|
|
|
db.session.add(template)
|
|
|
|
|
|
return template
|
2016-06-16 17:34:33 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def invitation_email_template(notify_db,
|
|
|
|
|
|
notify_db_session):
|
|
|
|
|
|
user = sample_user(notify_db, notify_db_session)
|
|
|
|
|
|
service = Service.query.get(current_app.config['NOTIFY_SERVICE_ID'])
|
|
|
|
|
|
if not service:
|
|
|
|
|
|
data = {
|
|
|
|
|
|
'id': current_app.config['NOTIFY_SERVICE_ID'],
|
|
|
|
|
|
'name': 'Notify Service',
|
|
|
|
|
|
'message_limit': 1000,
|
|
|
|
|
|
'active': True,
|
|
|
|
|
|
'restricted': False,
|
|
|
|
|
|
'email_from': 'notify.service',
|
|
|
|
|
|
'created_by': user
|
|
|
|
|
|
}
|
|
|
|
|
|
service = Service(**data)
|
|
|
|
|
|
db.session.add(service)
|
|
|
|
|
|
|
|
|
|
|
|
template = Template.query.get(current_app.config['INVITATION_EMAIL_TEMPLATE_ID'])
|
|
|
|
|
|
if not template:
|
|
|
|
|
|
data = {
|
|
|
|
|
|
'id': current_app.config['INVITATION_EMAIL_TEMPLATE_ID'],
|
|
|
|
|
|
'name': 'Invitaion template',
|
|
|
|
|
|
'template_type': 'email',
|
|
|
|
|
|
'content': '((user_name)) is invited to Notify by ((service_name)) ((url)) to complete registration',
|
|
|
|
|
|
'subject': 'Invitation to ((service_name))',
|
|
|
|
|
|
'service': service,
|
|
|
|
|
|
'created_by': user,
|
|
|
|
|
|
'archived': False
|
|
|
|
|
|
}
|
|
|
|
|
|
template = Template(**data)
|
|
|
|
|
|
db.session.add(template)
|
|
|
|
|
|
return template
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def password_reset_email_template(notify_db,
|
|
|
|
|
|
notify_db_session):
|
|
|
|
|
|
user = sample_user(notify_db, notify_db_session)
|
|
|
|
|
|
service = Service.query.get(current_app.config['NOTIFY_SERVICE_ID'])
|
|
|
|
|
|
if not service:
|
|
|
|
|
|
data = {
|
|
|
|
|
|
'id': current_app.config['NOTIFY_SERVICE_ID'],
|
|
|
|
|
|
'name': 'Notify Service',
|
|
|
|
|
|
'message_limit': 1000,
|
|
|
|
|
|
'active': True,
|
|
|
|
|
|
'restricted': False,
|
|
|
|
|
|
'email_from': 'notify.service',
|
|
|
|
|
|
'created_by': user
|
|
|
|
|
|
}
|
|
|
|
|
|
service = Service(**data)
|
|
|
|
|
|
db.session.add(service)
|
|
|
|
|
|
|
|
|
|
|
|
template = Template.query.get(current_app.config['PASSWORD_RESET_TEMPLATE_ID'])
|
|
|
|
|
|
if not template:
|
|
|
|
|
|
data = {
|
|
|
|
|
|
'id': current_app.config['PASSWORD_RESET_TEMPLATE_ID'],
|
|
|
|
|
|
'name': 'Password reset template',
|
|
|
|
|
|
'template_type': 'email',
|
|
|
|
|
|
'content': '((user_name)) you can reset password by clicking ((url))',
|
|
|
|
|
|
'subject': 'Reset your password',
|
|
|
|
|
|
'service': service,
|
|
|
|
|
|
'created_by': user,
|
|
|
|
|
|
'archived': False
|
|
|
|
|
|
}
|
|
|
|
|
|
template = Template(**data)
|
|
|
|
|
|
db.session.add(template)
|
|
|
|
|
|
return template
|
2016-07-07 17:23:07 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def already_registered_template(notify_db,
|
|
|
|
|
|
notify_db_session):
|
|
|
|
|
|
user = sample_user(notify_db, notify_db_session)
|
|
|
|
|
|
service = Service.query.get(current_app.config['NOTIFY_SERVICE_ID'])
|
|
|
|
|
|
if not service:
|
|
|
|
|
|
data = {
|
|
|
|
|
|
'id': current_app.config['NOTIFY_SERVICE_ID'],
|
|
|
|
|
|
'name': 'Notify Service',
|
|
|
|
|
|
'message_limit': 1000,
|
|
|
|
|
|
'active': True,
|
|
|
|
|
|
'restricted': False,
|
|
|
|
|
|
'email_from': 'notify.service',
|
|
|
|
|
|
'created_by': user
|
|
|
|
|
|
}
|
|
|
|
|
|
service = Service(**data)
|
|
|
|
|
|
db.session.add(service)
|
|
|
|
|
|
|
|
|
|
|
|
template = Template.query.get(current_app.config['ALREADY_REGISTERED_EMAIL_TEMPLATE_ID'])
|
|
|
|
|
|
if not template:
|
|
|
|
|
|
data = {
|
|
|
|
|
|
'id': current_app.config['ALREADY_REGISTERED_EMAIL_TEMPLATE_ID'],
|
|
|
|
|
|
'name': 'ALREADY_REGISTERED_EMAIL_TEMPLATE_ID',
|
|
|
|
|
|
'template_type': 'email',
|
|
|
|
|
|
'content': """Sign in here: ((signin_url)) If you’ve forgotten your password,
|
|
|
|
|
|
you can reset it here: ((forgot_password_url)) feedback:((feedback_url))""",
|
|
|
|
|
|
'service': service,
|
|
|
|
|
|
'created_by': user,
|
|
|
|
|
|
'archived': False
|
|
|
|
|
|
}
|
|
|
|
|
|
template = Template(**data)
|
|
|
|
|
|
db.session.add(template)
|
|
|
|
|
|
return template
|
2016-09-22 17:17:34 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
|
|
|
|
def sample_service_whitelist(notify_db, notify_db_session, service=None, email_address=None, mobile_number=None):
|
|
|
|
|
|
if service is None:
|
|
|
|
|
|
service = sample_service(notify_db, notify_db_session)
|
|
|
|
|
|
|
|
|
|
|
|
if not email_address and not mobile_number:
|
|
|
|
|
|
email_address = 'whitelisted_user@digital.gov.uk'
|
|
|
|
|
|
|
|
|
|
|
|
whitelisted_user = ServiceWhitelist.from_string(service.id, email_address or mobile_number)
|
|
|
|
|
|
|
|
|
|
|
|
notify_db.session.add(whitelisted_user)
|
|
|
|
|
|
notify_db.session.commit()
|
|
|
|
|
|
return whitelisted_user
|