mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-10 01:55:41 -04:00
Remove ‘suspend API keys’
This was an early reckon feature. There were a few of problems with it: - it worked on the service, not just on the API keys as described - it was back to front, ‘suspending’ a service set `active` to `True`, reactivating it set `active` to `False` - no part of the API actually respected the `active` flag on a service The same intent can be acheived by either: - revoking an API key - having a platform admin put your service back into trial mode So this commit removes the link and the code behind it.
This commit is contained in:
@@ -157,41 +157,6 @@ def service_switch_research_mode(service_id):
|
|||||||
return redirect(url_for('.service_settings', service_id=service_id))
|
return redirect(url_for('.service_settings', service_id=service_id))
|
||||||
|
|
||||||
|
|
||||||
@main.route("/services/<service_id>/service-settings/status", methods=['GET', 'POST'])
|
|
||||||
@login_required
|
|
||||||
@user_has_permissions('manage_settings', admin_override=True)
|
|
||||||
def service_status_change(service_id):
|
|
||||||
if request.method == 'GET':
|
|
||||||
return render_template(
|
|
||||||
'views/service-settings/status.html'
|
|
||||||
)
|
|
||||||
elif request.method == 'POST':
|
|
||||||
return redirect(url_for('.service_status_change_confirm', service_id=service_id))
|
|
||||||
|
|
||||||
|
|
||||||
@main.route("/services/<service_id>/service-settings/status/confirm", methods=['GET', 'POST'])
|
|
||||||
@login_required
|
|
||||||
@user_has_permissions('manage_settings', admin_override=True)
|
|
||||||
def service_status_change_confirm(service_id):
|
|
||||||
# Validate password for form
|
|
||||||
def _check_password(pwd):
|
|
||||||
return user_api_client.verify_password(current_user.id, pwd)
|
|
||||||
|
|
||||||
form = ConfirmPasswordForm(_check_password)
|
|
||||||
|
|
||||||
if form.validate_on_submit():
|
|
||||||
service_api_client.update_service(
|
|
||||||
current_service['id'],
|
|
||||||
active=True
|
|
||||||
)
|
|
||||||
return redirect(url_for('.service_settings', service_id=service_id))
|
|
||||||
return render_template(
|
|
||||||
'views/service-settings/confirm.html',
|
|
||||||
heading='Turn off all outgoing notifications',
|
|
||||||
destructive=True,
|
|
||||||
form=form)
|
|
||||||
|
|
||||||
|
|
||||||
@main.route("/services/<service_id>/service-settings/delete", methods=['GET', 'POST'])
|
@main.route("/services/<service_id>/service-settings/delete", methods=['GET', 'POST'])
|
||||||
@login_required
|
@login_required
|
||||||
@user_has_permissions('manage_settings', admin_override=True)
|
@user_has_permissions('manage_settings', admin_override=True)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{% extends "withnav_template.html" %}
|
{% extends "withnav_template.html" %}
|
||||||
{% from "components/browse-list.html" import browse_list %}
|
{% from "components/browse-list.html" import browse_list %}
|
||||||
{% from "components/table.html" import mapping_table, row, text_field, edit_field %}
|
{% from "components/table.html" import mapping_table, row, text_field, edit_field, field %}
|
||||||
|
|
||||||
{% block page_title %}
|
{% block page_title %}
|
||||||
Settings – GOV.UK Notify
|
Settings – GOV.UK Notify
|
||||||
@@ -10,46 +10,53 @@
|
|||||||
|
|
||||||
<h1 class="heading-large">Settings</h1>
|
<h1 class="heading-large">Settings</h1>
|
||||||
|
|
||||||
{% call mapping_table(
|
<div class="dashboard-table">
|
||||||
caption='Settings',
|
|
||||||
field_headings=['Label', 'Value', 'Action'],
|
{% call mapping_table(
|
||||||
field_headings_visible=False,
|
caption='Settings',
|
||||||
caption_visible=False
|
field_headings=['Label', 'Value', 'Action'],
|
||||||
) %}
|
field_headings_visible=False,
|
||||||
{% call row() %}
|
caption_visible=False
|
||||||
{{ text_field('Service name' )}}
|
) %}
|
||||||
{{ text_field(current_service.name) }}
|
{% call row() %}
|
||||||
{{ edit_field('Change', url_for('.service_name_change', service_id=current_service.id)) }}
|
{{ text_field('Service name' )}}
|
||||||
|
{{ text_field(current_service.name) }}
|
||||||
|
{{ edit_field('Change', url_for('.service_name_change', service_id=current_service.id)) }}
|
||||||
|
{% endcall %}
|
||||||
|
{% call row() %}
|
||||||
|
{{ text_field('Email reply to address')}}
|
||||||
|
{{ text_field(
|
||||||
|
current_service.reply_to_email_address,
|
||||||
|
status='' if current_service.reply_to_email_address else 'default'
|
||||||
|
) }}
|
||||||
|
{{ edit_field('Change', url_for('.service_set_reply_to_email', service_id=current_service.id)) }}
|
||||||
|
{% endcall %}
|
||||||
|
{% call row() %}
|
||||||
|
{{ text_field('Text message sender')}}
|
||||||
|
{{ text_field(current_service.sms_sender or '40604') }}
|
||||||
|
{{ edit_field('Change', url_for('.service_set_sms_sender', service_id=current_service.id)) }}
|
||||||
|
{% endcall %}
|
||||||
{% endcall %}
|
{% endcall %}
|
||||||
{% call row() %}
|
|
||||||
{{ text_field('Email reply to address')}}
|
{% call mapping_table(
|
||||||
{{ text_field(
|
caption='Restrictions',
|
||||||
current_service.reply_to_email_address,
|
field_headings=['Label', 'Value', 'Action'],
|
||||||
status='' if current_service.reply_to_email_address else 'default'
|
field_headings_visible=False,
|
||||||
) }}
|
caption_visible=True
|
||||||
{{ edit_field('Change', url_for('.service_set_reply_to_email', service_id=current_service.id)) }}
|
) %}
|
||||||
|
{% call row() %}
|
||||||
|
{% if current_service.restricted %}
|
||||||
|
{{ text_field('Trial mode') }}
|
||||||
|
{{ text_field('On') }}
|
||||||
|
{{ edit_field('Request to go live', url_for('.service_request_to_go_live', service_id=current_service.id)) }}
|
||||||
|
{% else %}
|
||||||
|
{{ text_field('Trial mode') }}
|
||||||
|
{{ text_field('Off')}}
|
||||||
|
{{ edit_field() }}
|
||||||
|
{% endif %}
|
||||||
|
{% endcall %}
|
||||||
{% endcall %}
|
{% endcall %}
|
||||||
{% call row() %}
|
</div>
|
||||||
{{ text_field('Text message sender')}}
|
|
||||||
{{ text_field(current_service.sms_sender or '40604') }}
|
|
||||||
{{ edit_field('Change', url_for('.service_set_sms_sender', service_id=current_service.id)) }}
|
|
||||||
{% endcall %}
|
|
||||||
{% call row() %}
|
|
||||||
{{ text_field('Mode')}}
|
|
||||||
{% if current_service.restricted %}
|
|
||||||
{{ text_field('Trial') }}
|
|
||||||
{{ edit_field('Go live', url_for('.service_request_to_go_live', service_id=current_service.id)) }}
|
|
||||||
{% else %}
|
|
||||||
{{ text_field('Live') }}
|
|
||||||
{{ edit_field() }}
|
|
||||||
{% endif %}
|
|
||||||
{% endcall %}
|
|
||||||
{% call row() %}
|
|
||||||
{{ text_field('Active')}}
|
|
||||||
{{ text_field(current_service.active) }}
|
|
||||||
{{ edit_field('Suspend', url_for('.service_status_change', service_id=current_service.id)) }}
|
|
||||||
{% endcall %}
|
|
||||||
{% endcall %}
|
|
||||||
|
|
||||||
{% if current_user.has_permissions([], admin_override=True) %}
|
{% if current_user.has_permissions([], admin_override=True) %}
|
||||||
|
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
{% extends "withnav_template.html" %}
|
|
||||||
{% from "components/page-footer.html" import page_footer %}
|
|
||||||
|
|
||||||
{% block page_title %}
|
|
||||||
Temporrily suspend API keys – GOV.UK Notify
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block maincolumn_content %}
|
|
||||||
|
|
||||||
<h1 class="heading-large">Temporarily suspend API keys</h1>
|
|
||||||
|
|
||||||
<div class="grid-row">
|
|
||||||
<div class="column-three-quarters">
|
|
||||||
|
|
||||||
<p>
|
|
||||||
You’ll still be able to send notifications to yourself by uploading a
|
|
||||||
CSV file.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
You can start sending notifications again when you’re ready.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<form method="post">
|
|
||||||
{{ page_footer(
|
|
||||||
'Suspend API keys',
|
|
||||||
destructive=True,
|
|
||||||
back_link=url_for('.service_settings', service_id=current_service.id),
|
|
||||||
back_link_text='Back to settings'
|
|
||||||
) }}
|
|
||||||
</form>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% endblock %}
|
|
||||||
@@ -321,95 +321,6 @@ def test_log_error_on_request_to_go_live(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
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,
|
|
||||||
fake_uuid):
|
|
||||||
with app_.test_request_context():
|
|
||||||
with app_.test_client() as client:
|
|
||||||
client.login(api_user_active)
|
|
||||||
service_id = fake_uuid
|
|
||||||
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,
|
|
||||||
fake_uuid):
|
|
||||||
with app_.test_request_context():
|
|
||||||
with app_.test_client() as client:
|
|
||||||
client.login(api_user_active)
|
|
||||||
service_id = fake_uuid
|
|
||||||
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,
|
|
||||||
fake_uuid):
|
|
||||||
with app_.test_request_context():
|
|
||||||
with app_.test_client() as client:
|
|
||||||
client.login(api_user_active)
|
|
||||||
service_id = fake_uuid
|
|
||||||
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,
|
|
||||||
fake_uuid):
|
|
||||||
with app_.test_request_context():
|
|
||||||
with app_.test_client() as client:
|
|
||||||
client.login(api_user_active)
|
|
||||||
service_id = fake_uuid
|
|
||||||
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_,
|
def test_should_show_delete_page(app_,
|
||||||
api_user_active,
|
api_user_active,
|
||||||
mock_login,
|
mock_login,
|
||||||
@@ -502,8 +413,6 @@ def test_route_permissions(mocker, app_, api_user_active, service_one):
|
|||||||
'main.service_name_change',
|
'main.service_name_change',
|
||||||
'main.service_name_change_confirm',
|
'main.service_name_change_confirm',
|
||||||
'main.service_request_to_go_live',
|
'main.service_request_to_go_live',
|
||||||
'main.service_status_change',
|
|
||||||
'main.service_status_change_confirm',
|
|
||||||
'main.service_delete',
|
'main.service_delete',
|
||||||
'main.service_delete_confirm']
|
'main.service_delete_confirm']
|
||||||
with app_.test_request_context():
|
with app_.test_request_context():
|
||||||
@@ -527,8 +436,6 @@ def test_route_invalid_permissions(mocker, app_, api_user_active, service_one):
|
|||||||
'main.service_request_to_go_live',
|
'main.service_request_to_go_live',
|
||||||
'main.service_switch_live',
|
'main.service_switch_live',
|
||||||
'main.service_switch_research_mode',
|
'main.service_switch_research_mode',
|
||||||
'main.service_status_change',
|
|
||||||
'main.service_status_change_confirm',
|
|
||||||
'main.service_delete',
|
'main.service_delete',
|
||||||
'main.service_delete_confirm']
|
'main.service_delete_confirm']
|
||||||
with app_.test_request_context():
|
with app_.test_request_context():
|
||||||
@@ -550,8 +457,6 @@ def test_route_for_platform_admin(mocker, app_, platform_admin_user, service_one
|
|||||||
'main.service_name_change',
|
'main.service_name_change',
|
||||||
'main.service_name_change_confirm',
|
'main.service_name_change_confirm',
|
||||||
'main.service_request_to_go_live',
|
'main.service_request_to_go_live',
|
||||||
'main.service_status_change',
|
|
||||||
'main.service_status_change_confirm',
|
|
||||||
'main.service_delete',
|
'main.service_delete',
|
||||||
'main.service_delete_confirm'
|
'main.service_delete_confirm'
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user