Refactor "create_user" to actually create a user

This switches a number of fixtures to use "sample_user", which is
equivalent to calling the previous "create_user" function when it
used to default the email to "notify@...".
This commit is contained in:
Ben Thorner
2021-09-08 11:16:46 +01:00
parent 922fd2f333
commit c9ea85938a
3 changed files with 30 additions and 37 deletions

View File

@@ -71,11 +71,11 @@ def rmock():
@pytest.fixture(scope='function') @pytest.fixture(scope='function')
def service_factory(notify_db, notify_db_session): def service_factory(notify_db, notify_db_session, sample_user):
class ServiceFactory(object): class ServiceFactory(object):
def get(self, service_name, user=None, template_type=None, email_from=None): def get(self, service_name, user=None, template_type=None, email_from=None):
if not user: if not user:
user = create_user() user = sample_user
if not email_from: if not email_from:
email_from = service_name email_from = service_name
@@ -106,7 +106,9 @@ def service_factory(notify_db, notify_db_session):
@pytest.fixture(scope='function') @pytest.fixture(scope='function')
def sample_user(notify_db_session): def sample_user(notify_db_session):
return create_user() return create_user(
email='notify@digital.cabinet-office.gov.uk'
)
@pytest.fixture(scope='function') @pytest.fixture(scope='function')
@@ -131,8 +133,7 @@ def sample_sms_code(notify_db_session):
@pytest.fixture(scope='function') @pytest.fixture(scope='function')
def sample_service(notify_db_session): def sample_service(notify_db_session, sample_user):
user = create_user()
service_name = 'Sample service' service_name = 'Sample service'
email_from = service_name.lower().replace(' ', '.') email_from = service_name.lower().replace(' ', '.')
@@ -141,23 +142,22 @@ def sample_service(notify_db_session):
'message_limit': 1000, 'message_limit': 1000,
'restricted': False, 'restricted': False,
'email_from': email_from, 'email_from': email_from,
'created_by': user, 'created_by': sample_user,
'crown': True 'crown': True
} }
service = Service.query.filter_by(name=service_name).first() service = Service.query.filter_by(name=service_name).first()
if not service: if not service:
service = Service(**data) service = Service(**data)
dao_create_service(service, user, service_permissions=None) dao_create_service(service, sample_user, service_permissions=None)
else: else:
if user not in service.users: if sample_user not in service.users:
dao_add_user_to_service(service, user) dao_add_user_to_service(service, sample_user)
return service return service
@pytest.fixture(scope='function') @pytest.fixture(scope='function')
def sample_broadcast_service(notify_db_session, broadcast_organisation): def sample_broadcast_service(notify_db_session, broadcast_organisation, sample_user):
user = create_user()
service_name = 'Sample broadcast service' service_name = 'Sample broadcast service'
email_from = service_name.lower().replace(' ', '.') email_from = service_name.lower().replace(' ', '.')
@@ -166,19 +166,19 @@ def sample_broadcast_service(notify_db_session, broadcast_organisation):
'message_limit': 1000, 'message_limit': 1000,
'restricted': False, 'restricted': False,
'email_from': email_from, 'email_from': email_from,
'created_by': user, 'created_by': sample_user,
'crown': True, 'crown': True,
'count_as_live': False, 'count_as_live': False,
} }
service = Service.query.filter_by(name=service_name).first() service = Service.query.filter_by(name=service_name).first()
if not service: if not service:
service = Service(**data) service = Service(**data)
dao_create_service(service, user, service_permissions=[BROADCAST_TYPE]) dao_create_service(service, sample_user, service_permissions=[BROADCAST_TYPE])
insert_or_update_service_broadcast_settings(service, channel="severe") insert_or_update_service_broadcast_settings(service, channel="severe")
dao_add_service_to_organisation(service, current_app.config['BROADCAST_ORGANISATION_ID']) dao_add_service_to_organisation(service, current_app.config['BROADCAST_ORGANISATION_ID'])
else: else:
if user not in service.users: if sample_user not in service.users:
dao_add_user_to_service(service, user) dao_add_user_to_service(service, sample_user)
return service return service
@@ -201,8 +201,7 @@ def _sample_service_custom_letter_contact_block(sample_service):
@pytest.fixture(scope='function') @pytest.fixture(scope='function')
def sample_template(notify_db_session): def sample_template(notify_db_session, sample_user):
user = create_user()
service = create_service(service_permissions=[EMAIL_TYPE, SMS_TYPE], check_if_service_exists=True) service = create_service(service_permissions=[EMAIL_TYPE, SMS_TYPE], check_if_service_exists=True)
data = { data = {
@@ -210,7 +209,7 @@ def sample_template(notify_db_session):
'template_type': 'sms', 'template_type': 'sms',
'content': 'This is a template:\nwith a newline', 'content': 'This is a template:\nwith a newline',
'service': service, 'service': service,
'created_by': user, 'created_by': sample_user,
'archived': False, 'archived': False,
'hidden': False, 'hidden': False,
'process_type': 'normal' 'process_type': 'normal'
@@ -240,15 +239,14 @@ def sample_sms_template_with_html(sample_service):
@pytest.fixture(scope='function') @pytest.fixture(scope='function')
def sample_email_template(notify_db_session): def sample_email_template(notify_db_session, sample_user):
user = create_user() service = create_service(user=sample_user, service_permissions=[EMAIL_TYPE, SMS_TYPE], check_if_service_exists=True)
service = create_service(user=user, service_permissions=[EMAIL_TYPE, SMS_TYPE], check_if_service_exists=True)
data = { data = {
'name': 'Email Template Name', 'name': 'Email Template Name',
'template_type': EMAIL_TYPE, 'template_type': EMAIL_TYPE,
'content': 'This is a template', 'content': 'This is a template',
'service': service, 'service': service,
'created_by': user, 'created_by': sample_user,
'subject': 'Email Subject' 'subject': 'Email Subject'
} }
template = Template(**data) template = Template(**data)
@@ -551,18 +549,17 @@ def sample_invited_org_user(sample_user, sample_organisation):
@pytest.fixture(scope='function') @pytest.fixture(scope='function')
def sample_user_service_permission(notify_db_session): def sample_user_service_permission(notify_db_session, sample_user):
user = create_user() service = create_service(user=sample_user, check_if_service_exists=True)
service = create_service(user=user, check_if_service_exists=True)
permission = 'manage_settings' permission = 'manage_settings'
data = { data = {
'user': user, 'user': sample_user,
'service': service, 'service': service,
'permission': permission 'permission': permission
} }
p_model = Permission.query.filter_by( p_model = Permission.query.filter_by(
user=user, user=sample_user,
service=service, service=service,
permission=permission).first() permission=permission).first()
if not p_model: if not p_model:
@@ -828,8 +825,7 @@ def letter_volumes_email_template(notify_service):
@pytest.fixture @pytest.fixture
def notify_service(notify_db, notify_db_session): def notify_service(notify_db, notify_db_session, sample_user):
user = create_user()
service = Service.query.get(current_app.config['NOTIFY_SERVICE_ID']) service = Service.query.get(current_app.config['NOTIFY_SERVICE_ID'])
if not service: if not service:
service = Service( service = Service(
@@ -837,13 +833,13 @@ def notify_service(notify_db, notify_db_session):
message_limit=1000, message_limit=1000,
restricted=False, restricted=False,
email_from='notify.service', email_from='notify.service',
created_by=user, created_by=sample_user,
prefix_sms=False, prefix_sms=False,
) )
dao_create_service( dao_create_service(
service=service, service=service,
service_id=current_app.config['NOTIFY_SERVICE_ID'], service_id=current_app.config['NOTIFY_SERVICE_ID'],
user=user user=sample_user
) )
data = { data = {

View File

@@ -81,7 +81,7 @@ from app.models import (
def create_user( def create_user(
*, *,
mobile_number="+447700900986", mobile_number="+447700900986",
email="notify@digital.cabinet-office.gov.uk", email=None,
state='active', state='active',
id_=None, id_=None,
name="Test User" name="Test User"
@@ -89,7 +89,7 @@ def create_user(
data = { data = {
'id': id_ or uuid.uuid4(), 'id': id_ or uuid.uuid4(),
'name': name, 'name': name,
'email_address': email, 'email_address': email or f"{uuid.uuid4()}@digital.cabinet-office.gov.uk",
'password': 'password', 'password': 'password',
'mobile_number': mobile_number, 'mobile_number': mobile_number,
'state': state 'state': state

View File

@@ -1,5 +1,3 @@
import uuid
from app.commands import local_dev_broadcast_permissions from app.commands import local_dev_broadcast_permissions
from app.dao.services_dao import dao_add_user_to_service from app.dao.services_dao import dao_add_user_to_service
from tests.app.db import create_user from tests.app.db import create_user
@@ -10,8 +8,7 @@ def test_local_dev_broadcast_permissions(
sample_broadcast_service, sample_broadcast_service,
notify_api, notify_api,
): ):
# create_user will pull existing unless email is unique user = create_user()
user = create_user(email=f'{uuid.uuid4()}@example.com')
dao_add_user_to_service(sample_service, user) dao_add_user_to_service(sample_service, user)
dao_add_user_to_service(sample_broadcast_service, user) dao_add_user_to_service(sample_broadcast_service, user)