2016-01-11 15:07:13 +00:00
|
|
|
import pytest
|
|
|
|
|
from app.dao.services_dao import (
|
2016-01-12 10:39:49 +00:00
|
|
|
save_model_service, get_model_services, DAOException, delete_model_service)
|
2016-01-08 12:18:12 +00:00
|
|
|
from tests.app.conftest import sample_service as create_sample_service
|
2016-01-22 12:47:59 +00:00
|
|
|
from tests.app.conftest import sample_user as create_sample_user
|
2016-01-08 12:18:12 +00:00
|
|
|
from app.models import Service
|
2016-01-07 17:31:17 +00:00
|
|
|
|
|
|
|
|
|
2016-01-08 12:18:12 +00:00
|
|
|
def test_create_service(notify_api, notify_db, notify_db_session, sample_user):
|
|
|
|
|
assert Service.query.count() == 0
|
|
|
|
|
service_name = 'Sample Service'
|
2016-01-11 15:07:13 +00:00
|
|
|
data = {
|
|
|
|
|
'name': service_name,
|
|
|
|
|
'users': [sample_user],
|
|
|
|
|
'limit': 1000,
|
|
|
|
|
'active': False,
|
|
|
|
|
'restricted': False}
|
|
|
|
|
service = Service(**data)
|
2016-01-11 17:19:06 +00:00
|
|
|
save_model_service(service)
|
2016-01-08 12:18:12 +00:00
|
|
|
assert Service.query.count() == 1
|
|
|
|
|
assert Service.query.first().name == service_name
|
2016-01-11 15:07:13 +00:00
|
|
|
assert Service.query.first().id == service.id
|
2016-01-07 17:31:17 +00:00
|
|
|
|
|
|
|
|
|
2016-01-08 12:18:12 +00:00
|
|
|
def test_get_services(notify_api, notify_db, notify_db_session, sample_user):
|
|
|
|
|
sample_service = create_sample_service(notify_db,
|
|
|
|
|
notify_db_session,
|
|
|
|
|
user=sample_user)
|
|
|
|
|
assert Service.query.count() == 1
|
2016-01-11 15:07:13 +00:00
|
|
|
assert len(get_model_services()) == 1
|
2016-01-08 12:18:12 +00:00
|
|
|
service_name = "Another service"
|
|
|
|
|
sample_service = create_sample_service(notify_db,
|
|
|
|
|
notify_db_session,
|
|
|
|
|
service_name=service_name,
|
|
|
|
|
user=sample_user)
|
|
|
|
|
assert Service.query.count() == 2
|
2016-01-11 15:07:13 +00:00
|
|
|
assert len(get_model_services()) == 2
|
2016-01-08 12:18:12 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_get_user_service(notify_api, notify_db, notify_db_session, sample_user):
|
|
|
|
|
assert Service.query.count() == 0
|
|
|
|
|
service_name = "Random service"
|
|
|
|
|
sample_service = create_sample_service(notify_db,
|
|
|
|
|
notify_db_session,
|
|
|
|
|
service_name=service_name,
|
|
|
|
|
user=sample_user)
|
2016-01-11 15:07:13 +00:00
|
|
|
assert get_model_services(service_id=sample_service.id).name == service_name
|
2016-01-08 12:18:12 +00:00
|
|
|
assert Service.query.count() == 1
|
2016-01-11 15:07:13 +00:00
|
|
|
|
|
|
|
|
|
2016-01-22 12:47:59 +00:00
|
|
|
def test_get_services_for_user(notify_api, notify_db, notify_db_session, sample_service):
|
|
|
|
|
assert Service.query.count() == 1
|
|
|
|
|
service_name = "Random service"
|
|
|
|
|
second_user = create_sample_user(notify_db, notify_db_session, 'an@other.gov.uk')
|
|
|
|
|
create_sample_service(notify_db, notify_db_session, service_name='another service', user=second_user)
|
|
|
|
|
|
|
|
|
|
sample_service = create_sample_service(notify_db,
|
|
|
|
|
notify_db_session,
|
|
|
|
|
service_name=service_name,
|
|
|
|
|
user=sample_service.users[0])
|
|
|
|
|
assert Service.query.count() == 3
|
|
|
|
|
services = get_model_services(user_id=sample_service.users[0].id)
|
|
|
|
|
assert len(services) == 2
|
|
|
|
|
assert service_name in [x.name for x in services]
|
|
|
|
|
assert 'Sample service' in [x.name for x in services]
|
|
|
|
|
|
|
|
|
|
|
2016-01-11 15:07:13 +00:00
|
|
|
def test_missing_user_attribute(notify_api, notify_db, notify_db_session):
|
|
|
|
|
assert Service.query.count() == 0
|
|
|
|
|
try:
|
|
|
|
|
service_name = 'Sample Service'
|
|
|
|
|
data = {
|
|
|
|
|
'name': service_name,
|
|
|
|
|
'limit': 1000,
|
|
|
|
|
'active': False,
|
|
|
|
|
'restricted': False}
|
|
|
|
|
|
|
|
|
|
service = Service(**data)
|
2016-01-11 17:19:06 +00:00
|
|
|
save_model_service(service)
|
2016-01-11 15:07:13 +00:00
|
|
|
pytest.fail("DAOException not thrown")
|
|
|
|
|
except DAOException as e:
|
|
|
|
|
assert "Missing data for required attribute" in str(e)
|
2016-01-12 10:39:49 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_delete_service(notify_api, notify_db, notify_db_session, sample_service):
|
|
|
|
|
assert Service.query.count() == 1
|
|
|
|
|
delete_model_service(sample_service)
|
|
|
|
|
assert Service.query.count() == 0
|