Files
notifications-admin/tests/app/main/views/test_service_settings.py
Adam Shimali be5aeb0676 View function for request go live was always calling update service.
Actually this should be no op until whatever workflow will take place
in the real world is implemented.

For the moment just display flash message to say request being
processed and do nothing.
2016-03-09 15:02:05 +00:00

377 lines
16 KiB
Python

from flask import url_for
from tests import validate_route_permission
from bs4 import BeautifulSoup
def test_should_show_overview(app_,
api_user_active,
mock_get_service,
mock_get_user,
mock_get_user_by_email,
mock_login,
mock_has_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
service_id = 123
response = client.get(url_for(
'main.service_settings', service_id=service_id))
assert response.status_code == 200
resp_data = response.get_data(as_text=True)
assert 'Service settings' in resp_data
service = mock_get_service.side_effect(service_id)['data']
assert mock_get_service.called
def test_should_show_service_name(app_,
api_user_active,
mock_get_service,
mock_get_user,
mock_get_user_by_email,
mock_login,
mock_has_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
service_id = 123
response = client.get(url_for(
'main.service_name_change', service_id=service_id))
assert response.status_code == 200
resp_data = response.get_data(as_text=True)
assert 'Change your service name' in resp_data
assert mock_get_service.called
service = mock_get_service.side_effect(service_id)['data']
def test_should_redirect_after_change_service_name(app_,
api_user_active,
mock_get_service,
mock_get_user,
mock_get_user_by_email,
mock_login,
mock_has_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
service_id = 123
response = client.post(url_for(
'main.service_name_change', service_id=service_id))
assert response.status_code == 302
settings_url = url_for(
'main.service_name_change_confirm', service_id=service_id, _external=True)
assert settings_url == response.location
assert mock_get_service.called
def test_should_show_service_name_confirmation(app_,
api_user_active,
mock_get_service,
mock_get_user,
mock_get_user_by_email,
mock_login,
mock_has_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
service_id = 123
response = client.get(url_for(
'main.service_name_change_confirm', service_id=service_id))
assert response.status_code == 200
resp_data = response.get_data(as_text=True)
assert 'Change your service name' in resp_data
assert mock_get_service.called
def test_should_redirect_after_service_name_confirmation(app_,
api_user_active,
mock_get_service,
mock_update_service,
mock_get_user,
mock_get_user_by_email,
mock_login,
mock_verify_password,
mock_has_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
service_id = 123
service_new_name = 'New Name'
with client.session_transaction() as session:
session['service_name_change'] = service_new_name
response = client.post(url_for(
'main.service_name_change_confirm', service_id=service_id))
assert response.status_code == 302
settings_url = url_for(
'main.service_settings', service_id=service_id, _external=True)
resp_data = response.get_data(as_text=True)
assert settings_url == response.location
assert mock_get_service.called
assert mock_update_service.called
def test_should_show_request_to_go_live(app_,
api_user_active,
mock_get_service,
mock_get_user,
mock_get_user_by_email,
mock_login,
mock_has_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
service_id = 123
response = client.get(
url_for('main.service_request_to_go_live', service_id=service_id))
service = mock_get_service.side_effect(service_id)['data']
assert response.status_code == 200
resp_data = response.get_data(as_text=True)
assert 'Request to go live' in resp_data
assert mock_get_service.called
def test_should_redirect_after_request_to_go_live(app_,
api_user_active,
mock_get_service,
mock_get_user,
mock_get_user_by_email,
mock_login,
mock_has_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
service_id = 123
response = client.post(url_for(
'main.service_request_to_go_live', service_id=service_id))
assert response.status_code == 302
settings_url = url_for(
'main.service_settings', service_id=service_id, _external=True)
assert settings_url == response.location
assert mock_get_service.called
with app_.test_client() as client:
client.login(api_user_active)
service_id = 123
response = client.post(url_for(
'main.service_request_to_go_live', service_id=service_id), follow_redirects=True)
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
flash_banner = page.find('div', class_='banner-default').string.strip()
assert flash_banner == 'Thanks your request to go live is being processed'
def test_should_show_status_page(app_,
api_user_active,
mock_get_service,
mock_get_user,
mock_get_user_by_email,
mock_login,
mock_has_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
service_id = 123
response = client.get(url_for(
'main.service_status_change', service_id=service_id))
assert response.status_code == 200
resp_data = response.get_data(as_text=True)
assert 'Suspend API keys' in resp_data
assert mock_get_service.called
def test_should_show_redirect_after_status_change(app_,
api_user_active,
mock_get_service,
mock_get_user,
mock_get_user_by_email,
mock_login,
mock_has_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
service_id = 123
response = client.post(url_for(
'main.service_status_change', service_id=service_id))
assert response.status_code == 302
redirect_url = url_for(
'main.service_status_change_confirm', service_id=service_id, _external=True)
assert redirect_url == response.location
assert mock_get_service.called
def test_should_show_status_confirmation(app_,
api_user_active,
mock_get_service,
mock_get_user,
mock_get_user_by_email,
mock_login,
mock_has_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
service_id = 123
response = client.get(url_for(
'main.service_status_change_confirm', service_id=service_id))
assert response.status_code == 200
resp_data = response.get_data(as_text=True)
assert 'Turn off all outgoing notifications' in resp_data
assert mock_get_service.called
def test_should_redirect_after_status_confirmation(app_,
api_user_active,
mock_get_service,
mock_update_service,
mock_get_user,
mock_get_user_by_email,
mock_login,
mock_verify_password,
mock_has_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
service_id = 123
response = client.post(url_for(
'main.service_status_change_confirm', service_id=service_id))
assert response.status_code == 302
settings_url = url_for(
'main.service_settings', service_id=service_id, _external=True)
assert settings_url == response.location
assert mock_get_service.called
assert mock_update_service.called
def test_should_show_delete_page(app_,
api_user_active,
mock_get_service,
mock_get_user,
mock_get_user_by_email,
mock_login,
mock_has_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
service_id = 123
response = client.get(url_for(
'main.service_delete', service_id=service_id))
assert response.status_code == 200
assert 'Delete this service from GOV.UK Notify' in response.get_data(as_text=True)
assert mock_get_service.called
def test_should_show_redirect_after_deleting_service(app_,
api_user_active,
mock_get_service,
mock_get_user,
mock_get_user_by_email,
mock_login,
mock_has_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
service_id = 123
response = client.post(url_for(
'main.service_delete', service_id=service_id))
assert response.status_code == 302
delete_url = url_for(
'main.service_delete_confirm', service_id=service_id, _external=True)
assert delete_url == response.location
def test_should_show_delete_confirmation(app_,
api_user_active,
mock_get_service,
mock_get_user,
mock_get_user_by_email,
mock_login,
mock_has_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
service_id = 123
response = client.get(url_for(
'main.service_delete_confirm', service_id=service_id))
assert response.status_code == 200
assert 'Delete this service from Notify' in response.get_data(as_text=True)
assert mock_get_service.called
def test_should_redirect_delete_confirmation(app_,
api_user_active,
mock_get_service,
mock_delete_service,
mock_get_user,
mock_get_user_by_email,
mock_login,
mock_verify_password,
mock_has_permissions):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
service_id = 123
response = client.post(url_for(
'main.service_delete_confirm', service_id=service_id))
assert response.status_code == 302
choose_url = url_for(
'main.choose_service', _external=True)
assert choose_url == response.location
assert mock_get_service.called
assert mock_delete_service.called
def test_route_permissions(mocker, app_, api_user_active, service_one):
routes = [
'main.service_settings',
'main.service_name_change',
'main.service_name_change_confirm',
'main.service_request_to_go_live',
'main.service_status_change',
'main.service_status_change_confirm',
'main.service_delete',
'main.service_delete_confirm']
with app_.test_request_context():
for route in routes:
validate_route_permission(
mocker,
app_,
"GET",
200,
url_for(route, service_id=service_one['id']),
['manage_settings'],
api_user_active,
service_one)
def test_route_invalid_permissions(mocker, app_, api_user_active, service_one):
routes = [
'main.service_settings',
'main.service_name_change',
'main.service_name_change_confirm',
'main.service_request_to_go_live',
'main.service_status_change',
'main.service_status_change_confirm',
'main.service_delete',
'main.service_delete_confirm']
with app_.test_request_context():
for route in routes:
validate_route_permission(
mocker,
app_,
"GET",
403,
url_for(route, service_id=service_one['id']),
['blah'],
api_user_active,
service_one)