Tests added for choose_template page.

Remove indifferent change to file.
This commit is contained in:
Nicholas Staples
2016-03-09 13:51:56 +00:00
parent d0f113b6bb
commit c5eaf97669
6 changed files with 142 additions and 92 deletions

View File

@@ -161,3 +161,4 @@ def validate_route_permission(mocker,
pytest.fail("Invalid method call {}".format(method))
if resp.status_code != response_code:
pytest.fail("Invalid permissions set for endpoint {}".format(route))
return resp

View File

@@ -6,65 +6,73 @@ from app.main.views.index import index
from werkzeug.exceptions import Forbidden
def _test_permissions(app_, usr, permissions, will_succeed, or_=False):
with app_.test_request_context():
with app_.test_client() as client:
client.login(usr)
decorator = user_has_permissions(*permissions, or_=or_)
decorated_index = decorator(index)
if will_succeed:
response = decorated_index()
else:
try:
response = decorated_index()
pytest.fail("Failed to throw a forbidden exception")
except Forbidden:
pass
def test_user_has_permissions_on_endpoint_fail(app_,
api_user_active,
mock_login,
mock_get_user_with_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
decorator = user_has_permissions('something')
decorated_index = decorator(index)
try:
response = decorated_index()
pytest.fail("Failed to throw a forbidden exception")
except Forbidden:
pass
_test_permissions(
app_,
api_user_active,
['something'],
False)
def test_user_has_permissions_success(app_,
api_user_active,
mock_login,
mock_get_user_with_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
decorator = user_has_permissions('manage_users')
decorated_index = decorator(index)
response = decorated_index()
_test_permissions(
app_,
api_user_active,
['manage_users'],
True)
def test_user_has_permissions_or(app_,
api_user_active,
mock_login,
mock_get_user_with_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
decorator = user_has_permissions('something', 'manage_users', or_=True)
decorated_index = decorator(index)
response = decorated_index()
_test_permissions(
app_,
api_user_active,
['something', 'manage_users'],
True,
or_=True)
def test_user_has_permissions_multiple(app_,
api_user_active,
mock_login,
mock_get_user_with_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
decorator = user_has_permissions('manage_templates', 'manage_users')
decorated_index = decorator(index)
response = decorated_index()
_test_permissions(
app_,
api_user_active,
['manage_templates', 'manage_users'],
True)
def test_exact_permissions(app_,
api_user_active,
mock_login,
mock_get_user_with_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
decorator = user_has_permissions('manage_users', 'manage_templates', 'manage_settings')
decorated_index = decorator(index)
response = decorated_index()
_test_permissions(
app_,
api_user_active,
['manage_users', 'manage_templates', 'manage_settings'],
True)

View File

@@ -64,7 +64,6 @@ def test_menu_send_messages(mocker, app_, api_user_active, service_one):
assert url_for('main.documentation', service_id=service_one['id']) not in page
def test_menu_manage_service(mocker, app_, api_user_active, service_one):
with app_.test_request_context():
resp = _test_dashboard_menu(
@@ -91,7 +90,6 @@ def test_menu_manage_service(mocker, app_, api_user_active, service_one):
assert url_for('main.documentation', service_id=service_one['id']) not in page
def test_menu_manage_api_keys(mocker, app_, api_user_active, service_one):
with app_.test_request_context():
resp = _test_dashboard_menu(

View File

@@ -8,32 +8,6 @@ from tests import validate_route_permission
template_types = ['email', 'sms']
@pytest.mark.parametrize("template_type", template_types)
def test_choose_template(
template_type,
app_,
api_user_active,
mock_login,
mock_get_user,
mock_get_service,
mock_check_verify_code,
mock_get_service_templates,
mock_get_jobs,
mock_has_permissions
):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
response = client.get(url_for('main.choose_template', template_type=template_type, service_id=12345))
assert response.status_code == 200
content = response.get_data(as_text=True)
assert '{}_template_one'.format(template_type) in content
assert '{} template one content'.format(template_type) in content
assert '{}_template_two'.format(template_type) in content
assert '{} template two content'.format(template_type) in content
def test_upload_csvfile_with_errors_shows_check_page_with_errors(
app_,
api_user_active,
@@ -323,3 +297,81 @@ def test_route_invalid_permissions(mocker,
['blah'],
api_user_active,
service_one)
def test_route_choose_template_manage_service_permissions(mocker,
app_,
api_user_active,
service_one,
mock_login,
mock_get_user,
mock_get_service,
mock_check_verify_code,
mock_get_service_templates,
mock_get_jobs):
with app_.test_request_context():
template_id = mock_get_service_templates(service_one['id'])['data'][0]['id']
resp = validate_route_permission(
mocker,
app_,
"GET",
200,
url_for(
'main.choose_template',
service_id=service_one['id'],
template_type='sms'),
['manage_users', 'manage_templates', 'manage_settings'],
api_user_active,
service_one)
page = resp.get_data(as_text=True)
assert url_for(
"main.send_messages",
service_id=service_one['id'],
template_id=template_id) not in page
assert url_for(
"main.send_message_to_self",
service_id=service_one['id'],
template_id=template_id) not in page
assert url_for(
"main.edit_service_template",
service_id=service_one['id'],
template_id=template_id) in page
def test_route_choose_template_send_messages_permissions(mocker,
app_,
api_user_active,
service_one,
mock_login,
mock_get_user,
mock_get_service,
mock_check_verify_code,
mock_get_service_templates,
mock_get_jobs):
with app_.test_request_context():
template_id = mock_get_service_templates(service_one['id'])['data'][0]['id']
resp = validate_route_permission(
mocker,
app_,
"GET",
200,
url_for(
'main.choose_template',
service_id=service_one['id'],
template_type='sms'),
['send_texts', 'send_emails', 'send_letters'],
api_user_active,
service_one)
page = resp.get_data(as_text=True)
assert url_for(
"main.send_messages",
service_id=service_one['id'],
template_id=template_id) in page
assert url_for(
"main.send_message_to_self",
service_id=service_one['id'],
template_id=template_id) in page
assert url_for(
"main.edit_service_template",
service_id=service_one['id'],
template_id=template_id) not in page