Files
notifications-admin/tests/app/main/views/test_add_service.py
T

126 lines
4.0 KiB
Python
Raw Normal View History

from flask import url_for, session
2017-08-07 11:30:25 +01:00
from app.utils import is_gov_user
2015-12-14 17:12:28 +00:00
2017-02-03 10:42:01 +00:00
def test_non_gov_user_cannot_see_add_service_button(
client,
mock_login,
mock_get_non_govuser,
api_nongov_user_active,
):
2016-10-30 09:20:53 +00:00
client.login(api_nongov_user_active)
response = client.get(url_for('main.choose_service'))
assert 'Add a new service' not in response.get_data(as_text=True)
assert response.status_code == 200
2017-02-03 10:42:01 +00:00
def test_get_should_render_add_service_template(
logged_in_client
2017-02-03 10:42:01 +00:00
):
2017-02-03 12:07:21 +00:00
response = logged_in_client.get(url_for('main.add_service'))
assert response.status_code == 200
assert 'Which service do you want to set up notifications for?' in response.get_data(as_text=True)
2015-12-14 17:12:28 +00:00
2017-02-03 10:42:01 +00:00
def test_should_add_service_and_redirect_to_tour_when_no_services(
app_,
2017-02-03 12:07:21 +00:00
logged_in_client,
2017-02-03 10:42:01 +00:00
mock_create_service,
mock_create_service_template,
mock_get_services_with_no_services,
api_user_active,
):
2017-02-03 12:07:21 +00:00
response = logged_in_client.post(
url_for('main.add_service'),
data={'name': 'testing the post'})
assert mock_get_services_with_no_services.called
mock_create_service.assert_called_once_with(
service_name='testing the post',
message_limit=app_.config['DEFAULT_SERVICE_LIMIT'],
restricted=True,
user_id=api_user_active.id,
email_from='testing.the.post'
)
2017-03-09 10:30:19 +00:00
mock_create_service_template.assert_called_once_with(
'Example text message template',
'sms',
(
'Hey ((name)), Im trying out Notify. Today is '
'((day of week)) and my favourite colour is ((colour)).'
),
101,
process_type='priority',
)
2017-02-03 12:07:21 +00:00
assert session['service_id'] == 101
assert response.status_code == 302
assert response.location == url_for(
'main.start_tour',
2017-02-03 12:07:21 +00:00
service_id=101,
template_id="Example%20text%20message%20template",
2017-02-03 12:07:21 +00:00
_external=True
)
2017-02-03 10:42:01 +00:00
def test_should_add_service_and_redirect_to_dashboard_when_existing_service(
app_,
2017-02-03 12:07:21 +00:00
logged_in_client,
2017-02-03 10:42:01 +00:00
mock_create_service,
mock_create_service_template,
mock_get_services,
api_user_active,
):
2017-02-03 12:07:21 +00:00
response = logged_in_client.post(
url_for('main.add_service'),
data={'name': 'testing the post'})
assert mock_get_services.called
mock_create_service.assert_called_once_with(
service_name='testing the post',
message_limit=app_.config['DEFAULT_SERVICE_LIMIT'],
restricted=True,
user_id=api_user_active.id,
email_from='testing.the.post'
)
assert len(mock_create_service_template.call_args_list) == 0
assert session['service_id'] == 101
assert response.status_code == 302
assert response.location == url_for('main.service_dashboard', service_id=101, _external=True)
2017-02-03 10:42:01 +00:00
def test_should_return_form_errors_when_service_name_is_empty(
logged_in_client
2017-02-03 10:42:01 +00:00
):
2017-02-03 12:07:21 +00:00
response = logged_in_client.post(url_for('main.add_service'), data={})
assert response.status_code == 200
assert 'Cant be empty' in response.get_data(as_text=True)
2016-01-15 16:10:24 +00:00
2017-02-03 10:42:01 +00:00
def test_should_return_form_errors_with_duplicate_service_name_regardless_of_case(
2017-02-03 12:07:21 +00:00
logged_in_client,
2017-08-07 11:30:25 +01:00
mock_create_duplicate_service,
2017-02-03 10:42:01 +00:00
):
response = logged_in_client.post(url_for('main.add_service'), data={'name': 'SERVICE ONE'})
assert response.status_code == 200
2017-02-03 12:07:21 +00:00
assert 'This service name is already in use' in response.get_data(as_text=True)
2017-02-03 10:42:01 +00:00
def test_non_whitelist_user_cannot_access_create_service_page(
2017-02-03 12:07:21 +00:00
logged_in_client,
2017-02-03 10:42:01 +00:00
mock_get_non_govuser,
api_nongov_user_active,
):
assert not is_gov_user(api_nongov_user_active.email_address)
2017-02-03 12:07:21 +00:00
response = logged_in_client.get(url_for('main.add_service'))
assert response.status_code == 403
2017-02-03 10:42:01 +00:00
def test_non_whitelist_user_cannot_create_service(
2017-02-03 12:07:21 +00:00
logged_in_client,
2017-02-03 10:42:01 +00:00
mock_get_non_govuser,
api_nongov_user_active,
):
assert not is_gov_user(api_nongov_user_active.email_address)
2017-02-03 12:07:21 +00:00
response = logged_in_client.post(url_for('main.add_service'), data={'name': 'SERVICE TWO'})
assert response.status_code == 403