mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-07-13 09:50:08 -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))
|
||||
|
||||
|
||||
@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'])
|
||||
@login_required
|
||||
@user_has_permissions('manage_settings', admin_override=True)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{% extends "withnav_template.html" %}
|
||||
{% 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 %}
|
||||
Settings – GOV.UK Notify
|
||||
@@ -10,46 +10,53 @@
|
||||
|
||||
<h1 class="heading-large">Settings</h1>
|
||||
|
||||
{% call mapping_table(
|
||||
caption='Settings',
|
||||
field_headings=['Label', 'Value', 'Action'],
|
||||
field_headings_visible=False,
|
||||
caption_visible=False
|
||||
) %}
|
||||
{% call row() %}
|
||||
{{ text_field('Service name' )}}
|
||||
{{ text_field(current_service.name) }}
|
||||
{{ edit_field('Change', url_for('.service_name_change', service_id=current_service.id)) }}
|
||||
<div class="dashboard-table">
|
||||
|
||||
{% call mapping_table(
|
||||
caption='Settings',
|
||||
field_headings=['Label', 'Value', 'Action'],
|
||||
field_headings_visible=False,
|
||||
caption_visible=False
|
||||
) %}
|
||||
{% call row() %}
|
||||
{{ 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 %}
|
||||
{% 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)) }}
|
||||
|
||||
{% call mapping_table(
|
||||
caption='Restrictions',
|
||||
field_headings=['Label', 'Value', 'Action'],
|
||||
field_headings_visible=False,
|
||||
caption_visible=True
|
||||
) %}
|
||||
{% 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 %}
|
||||
{% 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 %}
|
||||
{% 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 %}
|
||||
</div>
|
||||
|
||||
{% 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_,
|
||||
api_user_active,
|
||||
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_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():
|
||||
@@ -527,8 +436,6 @@ def test_route_invalid_permissions(mocker, app_, api_user_active, service_one):
|
||||
'main.service_request_to_go_live',
|
||||
'main.service_switch_live',
|
||||
'main.service_switch_research_mode',
|
||||
'main.service_status_change',
|
||||
'main.service_status_change_confirm',
|
||||
'main.service_delete',
|
||||
'main.service_delete_confirm']
|
||||
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_confirm',
|
||||
'main.service_request_to_go_live',
|
||||
'main.service_status_change',
|
||||
'main.service_status_change_confirm',
|
||||
'main.service_delete',
|
||||
'main.service_delete_confirm'
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user