2016-03-17 10:46:47 +00:00
|
|
|
from flask import url_for
|
2016-03-23 12:15:57 +00:00
|
|
|
from tests import validate_route_permission
|
2015-12-18 10:26:56 +00:00
|
|
|
|
2016-01-06 16:51:35 +00:00
|
|
|
|
2016-01-15 15:15:35 +00:00
|
|
|
def test_should_show_recent_jobs_on_dashboard(app_,
|
2016-01-27 12:22:32 +00:00
|
|
|
api_user_active,
|
2016-01-20 15:13:15 +00:00
|
|
|
mock_get_service,
|
2016-02-02 09:38:58 +00:00
|
|
|
mock_get_service_templates,
|
2016-03-17 11:44:00 +00:00
|
|
|
mock_get_service_statistics,
|
2016-01-27 16:30:33 +00:00
|
|
|
mock_get_user,
|
|
|
|
|
mock_get_user_by_email,
|
2016-02-03 14:43:16 +00:00
|
|
|
mock_login,
|
2016-03-23 12:15:57 +00:00
|
|
|
mock_get_jobs,
|
|
|
|
|
mock_has_permissions):
|
2016-01-27 16:30:33 +00:00
|
|
|
|
2016-01-15 15:15:35 +00:00
|
|
|
with app_.test_request_context():
|
|
|
|
|
with app_.test_client() as client:
|
2016-01-27 12:22:32 +00:00
|
|
|
client.login(api_user_active)
|
2016-01-15 17:46:09 +00:00
|
|
|
response = client.get(url_for('main.service_dashboard', service_id=123))
|
2016-01-06 16:51:35 +00:00
|
|
|
|
|
|
|
|
assert response.status_code == 200
|
2016-01-28 17:20:34 +00:00
|
|
|
text = response.get_data(as_text=True)
|
|
|
|
|
assert 'Test Service' in text
|
2016-03-09 12:10:50 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def _test_dashboard_menu(mocker, app_, usr, service, permissions):
|
|
|
|
|
with app_.test_request_context():
|
|
|
|
|
with app_.test_client() as client:
|
|
|
|
|
usr._permissions[str(service['id'])] = permissions
|
2016-03-30 09:31:53 +01:00
|
|
|
mocker.patch('app.user_api_client.check_verify_code', return_value=(True, ''))
|
|
|
|
|
mocker.patch('app.service_api_client.get_services', return_value={'data': [service]})
|
2016-03-09 12:10:50 +00:00
|
|
|
mocker.patch('app.user_api_client.get_user', return_value=usr)
|
|
|
|
|
mocker.patch('app.user_api_client.get_user_by_email', return_value=usr)
|
2016-03-17 10:46:47 +00:00
|
|
|
mocker.patch('app.service_api_client.get_service', return_value={'data': service})
|
2016-03-17 11:45:48 +00:00
|
|
|
mocker.patch('app.statistics_api_client.get_statistics_for_service', return_value={'data': [{}]})
|
2016-03-09 12:10:50 +00:00
|
|
|
client.login(usr)
|
|
|
|
|
return client.get(url_for('main.service_dashboard', service_id=service['id']))
|
|
|
|
|
|
|
|
|
|
|
2016-03-09 14:11:24 +00:00
|
|
|
def test_menu_send_messages(mocker, app_, api_user_active, service_one, mock_get_service_templates, mock_get_jobs):
|
2016-03-09 12:10:50 +00:00
|
|
|
with app_.test_request_context():
|
|
|
|
|
resp = _test_dashboard_menu(
|
|
|
|
|
mocker,
|
|
|
|
|
app_,
|
|
|
|
|
api_user_active,
|
|
|
|
|
service_one,
|
2016-03-29 13:23:36 +01:00
|
|
|
['view_activity', 'send_texts', 'send_emails', 'send_letters'])
|
2016-03-09 12:10:50 +00:00
|
|
|
page = resp.get_data(as_text=True)
|
|
|
|
|
assert url_for(
|
|
|
|
|
'main.choose_template',
|
|
|
|
|
service_id=service_one['id'],
|
|
|
|
|
template_type='email')in page
|
|
|
|
|
assert url_for(
|
|
|
|
|
'main.choose_template',
|
|
|
|
|
service_id=service_one['id'],
|
|
|
|
|
template_type='sms')in page
|
2016-03-30 09:31:53 +01:00
|
|
|
assert url_for('main.view_notifications', service_id=service_one['id']) in page
|
2016-03-21 15:25:19 +00:00
|
|
|
assert url_for('main.manage_users', service_id=service_one['id']) in page
|
2016-03-30 09:31:53 +01:00
|
|
|
assert url_for('main.documentation') in page
|
2016-03-09 12:10:50 +00:00
|
|
|
|
2016-03-30 09:31:53 +01:00
|
|
|
assert url_for('main.service_settings', service_id=service_one['id']) not in page
|
2016-03-09 12:10:50 +00:00
|
|
|
assert url_for('main.api_keys', service_id=service_one['id']) not in page
|
2016-03-21 15:36:47 +00:00
|
|
|
assert url_for('main.show_all_services') not in page
|
2016-03-09 12:10:50 +00:00
|
|
|
|
|
|
|
|
|
2016-03-09 14:11:24 +00:00
|
|
|
def test_menu_manage_service(mocker, app_, api_user_active, service_one, mock_get_service_templates, mock_get_jobs):
|
2016-03-09 12:10:50 +00:00
|
|
|
with app_.test_request_context():
|
|
|
|
|
resp = _test_dashboard_menu(
|
|
|
|
|
mocker,
|
|
|
|
|
app_,
|
|
|
|
|
api_user_active,
|
|
|
|
|
service_one,
|
2016-03-29 13:23:36 +01:00
|
|
|
['view_activity', 'manage_users', 'manage_templates', 'manage_settings'])
|
2016-03-09 12:10:50 +00:00
|
|
|
page = resp.get_data(as_text=True)
|
|
|
|
|
assert url_for(
|
|
|
|
|
'main.choose_template',
|
|
|
|
|
service_id=service_one['id'],
|
|
|
|
|
template_type='email') in page
|
|
|
|
|
assert url_for(
|
|
|
|
|
'main.choose_template',
|
|
|
|
|
service_id=service_one['id'],
|
|
|
|
|
template_type='sms') in page
|
2016-03-30 09:31:53 +01:00
|
|
|
assert url_for('main.view_notifications', service_id=service_one['id']) in page
|
2016-03-09 12:10:50 +00:00
|
|
|
assert url_for('main.manage_users', service_id=service_one['id']) in page
|
|
|
|
|
assert url_for('main.service_settings', service_id=service_one['id']) in page
|
2016-03-30 09:31:53 +01:00
|
|
|
assert url_for('main.documentation') in page
|
2016-03-09 12:10:50 +00:00
|
|
|
|
|
|
|
|
assert url_for('main.api_keys', service_id=service_one['id']) not in page
|
2016-03-21 15:36:47 +00:00
|
|
|
assert url_for('main.show_all_services') not in page
|
2016-03-09 12:10:50 +00:00
|
|
|
|
|
|
|
|
|
2016-03-09 14:11:24 +00:00
|
|
|
def test_menu_manage_api_keys(mocker, app_, api_user_active, service_one, mock_get_service_templates, mock_get_jobs):
|
2016-03-09 12:10:50 +00:00
|
|
|
with app_.test_request_context():
|
|
|
|
|
resp = _test_dashboard_menu(
|
|
|
|
|
mocker,
|
|
|
|
|
app_,
|
|
|
|
|
api_user_active,
|
|
|
|
|
service_one,
|
2016-03-29 17:33:12 +01:00
|
|
|
['view_activity', 'manage_api_keys'])
|
2016-03-09 12:10:50 +00:00
|
|
|
page = resp.get_data(as_text=True)
|
|
|
|
|
assert url_for(
|
|
|
|
|
'main.choose_template',
|
|
|
|
|
service_id=service_one['id'],
|
2016-03-18 14:43:03 +00:00
|
|
|
template_type='email') in page
|
2016-03-09 12:10:50 +00:00
|
|
|
assert url_for(
|
|
|
|
|
'main.choose_template',
|
|
|
|
|
service_id=service_one['id'],
|
2016-03-18 14:43:03 +00:00
|
|
|
template_type='sms') in page
|
2016-03-30 09:31:53 +01:00
|
|
|
assert url_for('main.view_notifications', service_id=service_one['id']) in page
|
2016-03-21 15:25:19 +00:00
|
|
|
assert url_for('main.manage_users', service_id=service_one['id']) in page
|
2016-03-09 12:10:50 +00:00
|
|
|
assert url_for('main.service_settings', service_id=service_one['id']) not in page
|
2016-03-21 15:36:47 +00:00
|
|
|
assert url_for('main.show_all_services') not in page
|
2016-03-09 12:10:50 +00:00
|
|
|
|
|
|
|
|
assert url_for('main.api_keys', service_id=service_one['id']) in page
|
2016-03-17 10:46:47 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_menu_all_services_for_platform_admin_user(mocker, app_, platform_admin_user, service_one,
|
|
|
|
|
mock_get_service_templates, mock_get_jobs):
|
|
|
|
|
with app_.test_request_context():
|
|
|
|
|
resp = _test_dashboard_menu(
|
|
|
|
|
mocker,
|
|
|
|
|
app_,
|
|
|
|
|
platform_admin_user,
|
|
|
|
|
service_one,
|
|
|
|
|
[])
|
|
|
|
|
page = resp.get_data(as_text=True)
|
|
|
|
|
assert url_for('main.show_all_services') in page
|
2016-03-21 15:36:47 +00:00
|
|
|
assert url_for('main.choose_template', service_id=service_one['id'], template_type='sms') in page
|
|
|
|
|
assert url_for('main.choose_template', service_id=service_one['id'], template_type='email') in page
|
|
|
|
|
assert url_for('main.manage_users', service_id=service_one['id']) in page
|
|
|
|
|
assert url_for('main.service_settings', service_id=service_one['id']) in page
|
|
|
|
|
assert url_for('main.view_notifications', service_id=service_one['id']) in page
|
|
|
|
|
assert url_for('main.view_jobs', service_id=service_one['id']) in page
|
|
|
|
|
assert url_for('main.api_keys', service_id=service_one['id']) not in page
|
2016-03-23 12:15:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_route_for_service_permissions(mocker,
|
|
|
|
|
app_,
|
|
|
|
|
api_user_active,
|
|
|
|
|
service_one,
|
|
|
|
|
mock_get_service,
|
|
|
|
|
mock_get_user,
|
|
|
|
|
mock_get_service_templates,
|
|
|
|
|
mock_get_jobs,
|
|
|
|
|
mock_get_service_statistics):
|
|
|
|
|
routes = [
|
|
|
|
|
'main.service_dashboard']
|
|
|
|
|
with app_.test_request_context():
|
|
|
|
|
# Just test that the user is part of the service
|
|
|
|
|
for route in routes:
|
|
|
|
|
validate_route_permission(
|
|
|
|
|
mocker,
|
|
|
|
|
app_,
|
|
|
|
|
"GET",
|
|
|
|
|
200,
|
|
|
|
|
url_for(
|
|
|
|
|
route,
|
|
|
|
|
service_id=service_one['id']),
|
2016-03-29 13:23:36 +01:00
|
|
|
['view_activity'],
|
2016-03-23 12:15:57 +00:00
|
|
|
api_user_active,
|
|
|
|
|
service_one)
|