mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-22 08:21:13 -05:00
refactor sample_user to create a new create_user function
this create_user function can be imported for use in creating specific
users in your tests, for example
```
from tests.app.db import create_user
def test_create_user_persists_to_database(notify_db_session):
user = create_user()
assert User.query.count() == 1
```
this has the benefit of not requiring you to pass the notify_db and
notify_db_session fixtures around, and separating custom object
creation from the fixture dependency trees to aid clarity
I started with sample_user since it has no downstream dependencies, but
the intention is to push this out to all db fixtures eventually. This
is a total conversion, but can be rolled out in a non-breaking manner
by keeping arguments in the fixture, and passing them through to the
new db function - then tests can be updated to use the create_* instead
of sample_* functions as and when you want to
This commit is contained in:
@@ -25,7 +25,7 @@ from app.models import (
|
|||||||
ServiceWhitelist,
|
ServiceWhitelist,
|
||||||
KEY_TYPE_NORMAL, KEY_TYPE_TEST, KEY_TYPE_TEAM,
|
KEY_TYPE_NORMAL, KEY_TYPE_TEST, KEY_TYPE_TEAM,
|
||||||
MOBILE_TYPE, EMAIL_TYPE, NOTIFICATION_STATUS_TYPES_COMPLETED)
|
MOBILE_TYPE, EMAIL_TYPE, NOTIFICATION_STATUS_TYPES_COMPLETED)
|
||||||
from app.dao.users_dao import (save_model_user, create_user_code, create_secret_code)
|
from app.dao.users_dao import (create_user_code, create_secret_code)
|
||||||
from app.dao.services_dao import (dao_create_service, dao_add_user_to_service)
|
from app.dao.services_dao import (dao_create_service, dao_add_user_to_service)
|
||||||
from app.dao.templates_dao import dao_create_template
|
from app.dao.templates_dao import dao_create_template
|
||||||
from app.dao.api_key_dao import save_model_api_key
|
from app.dao.api_key_dao import save_model_api_key
|
||||||
@@ -35,6 +35,8 @@ from app.dao.invited_user_dao import save_invited_user
|
|||||||
from app.dao.provider_rates_dao import create_provider_rates
|
from app.dao.provider_rates_dao import create_provider_rates
|
||||||
from app.clients.sms.firetext import FiretextClient
|
from app.clients.sms.firetext import FiretextClient
|
||||||
|
|
||||||
|
from tests.app.db import create_user
|
||||||
|
|
||||||
|
|
||||||
@pytest.yield_fixture
|
@pytest.yield_fixture
|
||||||
def rmock():
|
def rmock():
|
||||||
@@ -47,7 +49,7 @@ def service_factory(notify_db, notify_db_session):
|
|||||||
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 = sample_user(notify_db, notify_db_session)
|
user = create_user()
|
||||||
if not email_from:
|
if not email_from:
|
||||||
email_from = service_name
|
email_from = service_name
|
||||||
service = sample_service(notify_db, notify_db_session, service_name, user, email_from=email_from)
|
service = sample_service(notify_db, notify_db_session, service_name, user, email_from=email_from)
|
||||||
@@ -71,30 +73,15 @@ def service_factory(notify_db, notify_db_session):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='function')
|
@pytest.fixture(scope='function')
|
||||||
def sample_user(notify_db,
|
def sample_user(notify_db_session):
|
||||||
notify_db_session,
|
return create_user()
|
||||||
mobile_numnber="+447700900986",
|
|
||||||
email="notify@digital.cabinet-office.gov.uk"):
|
|
||||||
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)
|
|
||||||
|
|
||||||
return usr
|
|
||||||
|
|
||||||
|
|
||||||
def create_code(notify_db, notify_db_session, code_type, usr=None, code=None):
|
def create_code(notify_db, notify_db_session, code_type, usr=None, code=None):
|
||||||
if code is None:
|
if code is None:
|
||||||
code = create_secret_code()
|
code = create_secret_code()
|
||||||
if usr is None:
|
if usr is None:
|
||||||
usr = sample_user(notify_db, notify_db_session)
|
usr = create_user()
|
||||||
return create_user_code(usr, code, code_type), code
|
return create_user_code(usr, code, code_type), code
|
||||||
|
|
||||||
|
|
||||||
@@ -138,7 +125,7 @@ def sample_service(notify_db,
|
|||||||
limit=1000,
|
limit=1000,
|
||||||
email_from=None):
|
email_from=None):
|
||||||
if user is None:
|
if user is None:
|
||||||
user = sample_user(notify_db, notify_db_session)
|
user = create_user()
|
||||||
if email_from is None:
|
if email_from is None:
|
||||||
email_from = service_name.lower().replace(' ', '.')
|
email_from = service_name.lower().replace(' ', '.')
|
||||||
data = {
|
data = {
|
||||||
@@ -171,11 +158,11 @@ def sample_template(notify_db,
|
|||||||
service=None,
|
service=None,
|
||||||
created_by=None):
|
created_by=None):
|
||||||
if user is None:
|
if user is None:
|
||||||
user = sample_user(notify_db, notify_db_session)
|
user = create_user()
|
||||||
if service is None:
|
if service is None:
|
||||||
service = sample_service(notify_db, notify_db_session)
|
service = sample_service(notify_db, notify_db_session)
|
||||||
if created_by is None:
|
if created_by is None:
|
||||||
created_by = sample_user(notify_db, notify_db_session)
|
created_by = create_user()
|
||||||
data = {
|
data = {
|
||||||
'name': template_name,
|
'name': template_name,
|
||||||
'template_type': template_type,
|
'template_type': template_type,
|
||||||
@@ -210,7 +197,7 @@ def sample_email_template(
|
|||||||
subject_line='Email Subject',
|
subject_line='Email Subject',
|
||||||
service=None):
|
service=None):
|
||||||
if user is None:
|
if user is None:
|
||||||
user = sample_user(notify_db, notify_db_session)
|
user = create_user()
|
||||||
if service is None:
|
if service is None:
|
||||||
service = sample_service(notify_db, notify_db_session)
|
service = sample_service(notify_db, notify_db_session)
|
||||||
data = {
|
data = {
|
||||||
@@ -590,7 +577,7 @@ def sample_permission(notify_db,
|
|||||||
user=None,
|
user=None,
|
||||||
permission="manage_settings"):
|
permission="manage_settings"):
|
||||||
if user is None:
|
if user is None:
|
||||||
user = sample_user(notify_db, notify_db_session)
|
user = create_user()
|
||||||
data = {
|
data = {
|
||||||
'user': user,
|
'user': user,
|
||||||
'permission': permission
|
'permission': permission
|
||||||
@@ -617,7 +604,7 @@ def sample_service_permission(notify_db,
|
|||||||
user=None,
|
user=None,
|
||||||
permission="manage_settings"):
|
permission="manage_settings"):
|
||||||
if user is None:
|
if user is None:
|
||||||
user = sample_user(notify_db, notify_db_session)
|
user = create_user()
|
||||||
if service is None:
|
if service is None:
|
||||||
service = sample_service(notify_db, notify_db_session, user=user)
|
service = sample_service(notify_db, notify_db_session, user=user)
|
||||||
data = {
|
data = {
|
||||||
@@ -816,7 +803,7 @@ def create_notify_template(service, user, template_config_name, content, templat
|
|||||||
|
|
||||||
|
|
||||||
def notify_service(notify_db, notify_db_session):
|
def notify_service(notify_db, notify_db_session):
|
||||||
user = sample_user(notify_db, notify_db_session)
|
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:
|
||||||
data = {
|
data = {
|
||||||
|
|||||||
17
tests/app/db.py
Normal file
17
tests/app/db.py
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
from app.models import User
|
||||||
|
from app.dao.users_dao import save_model_user
|
||||||
|
|
||||||
|
|
||||||
|
def create_user(mobile_number="+447700900986", email="notify@digital.cabinet-office.gov.uk"):
|
||||||
|
data = {
|
||||||
|
'name': 'Test User',
|
||||||
|
'email_address': email,
|
||||||
|
'password': 'password',
|
||||||
|
'mobile_number': mobile_number,
|
||||||
|
'state': 'active'
|
||||||
|
}
|
||||||
|
usr = User.query.filter_by(email_address=email).first()
|
||||||
|
if not usr:
|
||||||
|
usr = User(**data)
|
||||||
|
save_model_user(usr)
|
||||||
|
return usr
|
||||||
Reference in New Issue
Block a user