Skip to content

Commit

Permalink
Merge branch 'master' into add-templates-process_type
Browse files Browse the repository at this point in the history
  • Loading branch information
Rebecca Law committed Jan 13, 2017
2 parents ceb139c + 48424b3 commit 61b6b1b
Show file tree
Hide file tree
Showing 8 changed files with 76 additions and 95 deletions.
14 changes: 7 additions & 7 deletions tests/app/celery/test_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
from tests.app import load_example_csv
from tests.app.conftest import (
sample_service,
sample_user,
sample_template,
sample_job,
sample_email_template,
sample_notification
)
from tests.app.db import create_user


class AnyStringWith(str):
Expand Down Expand Up @@ -393,7 +393,7 @@ def test_should_put_send_sms_task_in_research_mode_queue_if_research_mode_servic


def test_should_send_sms_if_restricted_service_and_valid_number(notify_db, notify_db_session, mocker):
user = sample_user(notify_db, notify_db_session, mobile_numnber="07700 900890")
user = create_user(mobile_number="07700 900890")
service = sample_service(notify_db, notify_db_session, user=user, restricted=True)
template = sample_template(notify_db, notify_db_session, service=service)
notification = _notification_json(template, "+447700900890") # The user’s own number, but in a different format
Expand Down Expand Up @@ -429,7 +429,7 @@ def test_should_send_sms_if_restricted_service_and_valid_number(notify_db, notif
def test_should_send_sms_if_restricted_service_and_non_team_number_with_test_key(notify_db,
notify_db_session,
mocker):
user = sample_user(notify_db, notify_db_session, mobile_numnber="07700 900205")
user = create_user(mobile_number="07700 900205")
service = sample_service(notify_db, notify_db_session, user=user, restricted=True)
template = sample_template(notify_db, notify_db_session, service=service)

Expand All @@ -455,7 +455,7 @@ def test_should_send_sms_if_restricted_service_and_non_team_number_with_test_key
def test_should_send_email_if_restricted_service_and_non_team_email_address_with_test_key(notify_db,
notify_db_session,
mocker):
user = sample_user(notify_db, notify_db_session)
user = create_user()
service = sample_service(notify_db, notify_db_session, user=user, restricted=True)
template = sample_template(
notify_db, notify_db_session, service=service, template_type='email', subject_line='Hello'
Expand All @@ -481,7 +481,7 @@ def test_should_send_email_if_restricted_service_and_non_team_email_address_with


def test_should_not_send_sms_if_restricted_service_and_invalid_number(notify_db, notify_db_session, mocker):
user = sample_user(notify_db, notify_db_session, mobile_numnber="07700 900205")
user = create_user(mobile_number="07700 900205")
service = sample_service(notify_db, notify_db_session, user=user, restricted=True)
template = sample_template(notify_db, notify_db_session, service=service)

Expand All @@ -500,7 +500,7 @@ def test_should_not_send_sms_if_restricted_service_and_invalid_number(notify_db,


def test_should_not_send_email_if_restricted_service_and_invalid_email_address(notify_db, notify_db_session, mocker):
user = sample_user(notify_db, notify_db_session)
user = create_user()
service = sample_service(notify_db, notify_db_session, user=user, restricted=True)
template = sample_template(
notify_db, notify_db_session, service=service, template_type='email', subject_line='Hello'
Expand Down Expand Up @@ -617,7 +617,7 @@ def test_should_not_send_email_if_team_key_and_recipient_not_in_team(sample_emai

def test_should_not_send_sms_if_team_key_and_recipient_not_in_team(notify_db, notify_db_session, mocker):
assert Notification.query.count() == 0
user = sample_user(notify_db, notify_db_session, mobile_numnber="07700 900205")
user = create_user(mobile_number="07700 900205")
service = sample_service(notify_db, notify_db_session, user=user, restricted=True)
template = sample_template(notify_db, notify_db_session, service=service)

Expand Down
41 changes: 14 additions & 27 deletions tests/app/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
ServiceWhitelist,
KEY_TYPE_NORMAL, KEY_TYPE_TEST, KEY_TYPE_TEAM,
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.templates_dao import dao_create_template
from app.dao.api_key_dao import save_model_api_key
Expand All @@ -35,6 +35,8 @@
from app.dao.provider_rates_dao import create_provider_rates
from app.clients.sms.firetext import FiretextClient

from tests.app.db import create_user


@pytest.yield_fixture
def rmock():
Expand All @@ -47,7 +49,7 @@ def service_factory(notify_db, notify_db_session):
class ServiceFactory(object):
def get(self, service_name, user=None, template_type=None, email_from=None):
if not user:
user = sample_user(notify_db, notify_db_session)
user = create_user()
if not email_from:
email_from = service_name
service = sample_service(notify_db, notify_db_session, service_name, user, email_from=email_from)
Expand All @@ -71,30 +73,15 @@ def get(self, service_name, user=None, template_type=None, email_from=None):


@pytest.fixture(scope='function')
def sample_user(notify_db,
notify_db_session,
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 sample_user(notify_db_session):
return create_user()


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)
usr = create_user()
return create_user_code(usr, code, code_type), code


Expand Down Expand Up @@ -138,7 +125,7 @@ def sample_service(notify_db,
limit=1000,
email_from=None):
if user is None:
user = sample_user(notify_db, notify_db_session)
user = create_user()
if email_from is None:
email_from = service_name.lower().replace(' ', '.')
data = {
Expand Down Expand Up @@ -171,11 +158,11 @@ def sample_template(notify_db,
service=None,
created_by=None):
if user is None:
user = sample_user(notify_db, notify_db_session)
user = create_user()
if service is None:
service = sample_service(notify_db, notify_db_session)
if created_by is None:
created_by = sample_user(notify_db, notify_db_session)
created_by = create_user()
data = {
'name': template_name,
'template_type': template_type,
Expand Down Expand Up @@ -210,7 +197,7 @@ def sample_email_template(
subject_line='Email Subject',
service=None):
if user is None:
user = sample_user(notify_db, notify_db_session)
user = create_user()
if service is None:
service = sample_service(notify_db, notify_db_session)
data = {
Expand Down Expand Up @@ -590,7 +577,7 @@ def sample_permission(notify_db,
user=None,
permission="manage_settings"):
if user is None:
user = sample_user(notify_db, notify_db_session)
user = create_user()
data = {
'user': user,
'permission': permission
Expand All @@ -617,7 +604,7 @@ def sample_service_permission(notify_db,
user=None,
permission="manage_settings"):
if user is None:
user = sample_user(notify_db, notify_db_session)
user = create_user()
if service is None:
service = sample_service(notify_db, notify_db_session, user=user)
data = {
Expand Down Expand Up @@ -816,7 +803,7 @@ def create_notify_template(service, user, template_config_name, content, templat


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'])
if not service:
data = {
Expand Down
4 changes: 2 additions & 2 deletions tests/app/dao/test_jobs_dao.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
from tests.app.conftest import sample_job as create_job
from tests.app.conftest import sample_service as create_service
from tests.app.conftest import sample_template as create_template
from tests.app.conftest import sample_user as create_user
from tests.app.db import create_user


def test_should_have_decorated_notifications_dao_functions():
Expand Down Expand Up @@ -140,7 +140,7 @@ def test_get_job_by_id(sample_job):
def test_get_jobs_for_service(notify_db, notify_db_session, sample_template):
one_job = create_job(notify_db, notify_db_session, sample_template.service, sample_template)

other_user = create_user(notify_db, notify_db_session, email="test@digital.cabinet-office.gov.uk")
other_user = create_user(email="test@digital.cabinet-office.gov.uk")
other_service = create_service(notify_db, notify_db_session, user=other_user, service_name="other service",
email_from='other.service')
other_template = create_template(notify_db, notify_db_session, service=other_service)
Expand Down
59 changes: 24 additions & 35 deletions tests/app/dao/test_users_dao.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
from datetime import datetime, timedelta

from sqlalchemy.exc import DataError
from sqlalchemy.orm.exc import NoResultFound

from app import db
import pytest

from app import db
from app.dao.users_dao import (
save_model_user,
save_user_attribute,
Expand All @@ -16,11 +16,12 @@
delete_codes_older_created_more_than_a_day_ago,
)

from tests.app.conftest import sample_user as create_sample_user
from app.models import User, VerifyCode

from tests.app.db import create_user


def test_create_user(notify_api, notify_db, notify_db_session):
def test_create_user(notify_db_session):
email = 'notify@digital.cabinet-office.gov.uk'
data = {
'name': 'Test User',
Expand All @@ -36,62 +37,51 @@ def test_create_user(notify_api, notify_db, notify_db_session):
assert not user.platform_admin


def test_get_all_users(notify_api, notify_db, notify_db_session, sample_user):
assert User.query.count() == 1
assert len(get_user_by_id()) == 1
email = "another.notify@digital.cabinet-office.gov.uk"
another_user = create_sample_user(notify_db,
notify_db_session,
email=email)
def test_get_all_users(notify_db_session):
create_user(email='1@test.com')
create_user(email='2@test.com')

assert User.query.count() == 2
assert len(get_user_by_id()) == 2


def test_get_user(notify_api, notify_db, notify_db_session):
email = "another.notify@digital.cabinet-office.gov.uk"
another_user = create_sample_user(notify_db,
notify_db_session,
email=email)
assert get_user_by_id(user_id=another_user.id).email_address == email
def test_get_user(notify_db_session):
email = '1@test.com'
user = create_user(email=email)
assert get_user_by_id(user_id=user.id).email_address == email


def test_get_user_not_exists(notify_api, notify_db, notify_db_session, fake_uuid):
try:
def test_get_user_not_exists(notify_db_session, fake_uuid):
with pytest.raises(NoResultFound):
get_user_by_id(user_id=fake_uuid)
pytest.fail("NoResultFound exception not thrown.")
except NoResultFound as e:
pass


def test_get_user_invalid_id(notify_api, notify_db, notify_db_session):
def test_get_user_invalid_id(notify_db_session):
with pytest.raises(DataError):
get_user_by_id(user_id="blah")


def test_delete_users(notify_api, notify_db, notify_db_session, sample_user):
def test_delete_users(sample_user):
assert User.query.count() == 1
delete_model_user(sample_user)
assert User.query.count() == 0


def test_increment_failed_login_should_increment_failed_logins(notify_api, notify_db, notify_db_session, sample_user):
assert User.query.count() == 1
def test_increment_failed_login_should_increment_failed_logins(sample_user):
assert sample_user.failed_login_count == 0
increment_failed_login_count(sample_user)
assert sample_user.failed_login_count == 1


def test_reset_failed_login_should_set_failed_logins_to_0(notify_api, notify_db, notify_db_session, sample_user):
assert User.query.count() == 1
def test_reset_failed_login_should_set_failed_logins_to_0(sample_user):
increment_failed_login_count(sample_user)
assert sample_user.failed_login_count == 1
reset_failed_login_count(sample_user)
assert sample_user.failed_login_count == 0


def test_get_user_by_email(sample_user):
email = sample_user.email_address
user_from_db = get_user_by_email(email)
user_from_db = get_user_by_email(sample_user.email_address)
assert sample_user == user_from_db


Expand All @@ -104,19 +94,18 @@ def test_get_user_by_email_is_case_insensitive(sample_user):
def test_should_delete_all_verification_codes_more_than_one_day_old(sample_user):
make_verify_code(sample_user, age=timedelta(hours=24), code="54321")
make_verify_code(sample_user, age=timedelta(hours=24), code="54321")
assert len(VerifyCode.query.all()) == 2
assert VerifyCode.query.count() == 2
delete_codes_older_created_more_than_a_day_ago()
assert len(VerifyCode.query.all()) == 0
assert VerifyCode.query.count() == 0


def test_should_not_delete_verification_codes_less_than_one_day_old(sample_user):
make_verify_code(sample_user, age=timedelta(hours=23, minutes=59, seconds=59), code="12345")
make_verify_code(sample_user, age=timedelta(hours=24), code="54321")

assert len(VerifyCode.query.all()) == 2
assert VerifyCode.query.count() == 2
delete_codes_older_created_more_than_a_day_ago()
assert len(VerifyCode.query.all()) == 1
assert VerifyCode.query.first()._code == "12345"
assert VerifyCode.query.one()._code == "12345"


def make_verify_code(user, age=timedelta(hours=0), code="12335"):
Expand Down
17 changes: 17 additions & 0 deletions tests/app/db.py
Original file line number Diff line number Diff line change
@@ -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'
}
user = User.query.filter_by(email_address=email).first()
if not user:
user = User(**data)
save_model_user(user)
return user
2 changes: 1 addition & 1 deletion tests/app/notifications/rest/test_send_notification.py
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,7 @@ def test_should_not_return_html_in_body(notify_api, notify_db, notify_db_session
with notify_api.test_request_context():
with notify_api.test_client() as client:
mocker.patch('app.celery.provider_tasks.deliver_email.apply_async')
email_template = create_sample_email_template(notify_db, notify_db.session, content='hello\nthere')
email_template = create_sample_email_template(notify_db, notify_db_session, content='hello\nthere')

data = {
'to': 'ok@ok.com',
Expand Down
4 changes: 2 additions & 2 deletions tests/app/service/test_api_key_endpoints.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from tests import create_authorization_header
from tests.app.conftest import sample_api_key as create_sample_api_key
from tests.app.conftest import sample_service as create_sample_service
from tests.app.conftest import sample_user as create_user
from tests.app.db import create_user


def test_api_key_should_create_new_api_key_for_service(notify_api, sample_service):
Expand Down Expand Up @@ -101,7 +101,7 @@ def test_get_api_keys_should_return_all_keys_for_service(notify_api, notify_db,
sample_api_key):
with notify_api.test_request_context():
with notify_api.test_client() as client:
another_user = create_user(notify_db, notify_db_session, email='another@it.gov.uk')
another_user = create_user(email='another@it.gov.uk')

another_service = create_sample_service(
notify_db,
Expand Down

0 comments on commit 61b6b1b

Please sign in to comment.