mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-08 03:38:26 -04:00
Add button to cancel invitation of invited user.
This commit is contained in:
@@ -4,8 +4,7 @@ from flask import (
|
|||||||
redirect,
|
redirect,
|
||||||
abort,
|
abort,
|
||||||
url_for,
|
url_for,
|
||||||
flash
|
flash)
|
||||||
)
|
|
||||||
|
|
||||||
from flask_login import (
|
from flask_login import (
|
||||||
login_required,
|
login_required,
|
||||||
@@ -79,7 +78,7 @@ def invite_user(service_id):
|
|||||||
|
|
||||||
@main.route("/services/<service_id>/users/<user_id>", methods=['GET', 'POST'])
|
@main.route("/services/<service_id>/users/<user_id>", methods=['GET', 'POST'])
|
||||||
@login_required
|
@login_required
|
||||||
def edit_user(service_id, user_id):
|
def edit_user_permissions(service_id, user_id):
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
return redirect(url_for('.manage_users', service_id=service_id))
|
return redirect(url_for('.manage_users', service_id=service_id))
|
||||||
@@ -116,6 +115,13 @@ def delete_user(service_id, user_id):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@main.route("/services/<service_id>/cancel-invited-user/<invited_user_id>", methods=['POST'])
|
||||||
|
def cancel_invited_user(service_id, invited_user_id):
|
||||||
|
invite_api_client.cancel_invited_user(service_id=service_id, invited_user_id=invited_user_id)
|
||||||
|
|
||||||
|
return redirect(url_for('main.manage_users', service_id=service_id))
|
||||||
|
|
||||||
|
|
||||||
def _get_permissions(form):
|
def _get_permissions(form):
|
||||||
permissions = []
|
permissions = []
|
||||||
if form.get('send_messages') and form['send_messages'] == 'yes':
|
if form.get('send_messages') and form['send_messages'] == 'yes':
|
||||||
|
|||||||
@@ -28,3 +28,9 @@ class InviteApiClient(BaseAPIClient):
|
|||||||
endpoint = '/service/{}/invite'.format(service_id)
|
endpoint = '/service/{}/invite'.format(service_id)
|
||||||
resp = self.get(endpoint)
|
resp = self.get(endpoint)
|
||||||
return [User(data) for data in resp['data']]
|
return [User(data) for data in resp['data']]
|
||||||
|
|
||||||
|
def cancel_invited_user(self, service_id, invited_user_id):
|
||||||
|
data = {'status': 'cancelled'}
|
||||||
|
resp = self.post(url='/service/{0}/invite/{0}'.format(service_id, invited_user_id),
|
||||||
|
data = data)
|
||||||
|
return resp['data']
|
||||||
@@ -31,9 +31,6 @@ Manage users – GOV.UK Notify
|
|||||||
{{ boolean_field(item.has_permissions(service_id, 'send_messages')) }}
|
{{ boolean_field(item.has_permissions(service_id, 'send_messages')) }}
|
||||||
{{ boolean_field(item.has_permissions(service_id, 'manage_service')) }}
|
{{ boolean_field(item.has_permissions(service_id, 'manage_service')) }}
|
||||||
{{ boolean_field(item.has_permissions(service_id, 'manage_api_keys')) }}
|
{{ boolean_field(item.has_permissions(service_id, 'manage_api_keys')) }}
|
||||||
{% call field(align='right') %}
|
|
||||||
<a href="{{ url_for('.edit_user', service_id=service_id, user_id=item.id)}}">Change</a>
|
|
||||||
{% endcall %}
|
|
||||||
{% endcall %}
|
{% endcall %}
|
||||||
|
|
||||||
{% if invited_users %}
|
{% if invited_users %}
|
||||||
@@ -47,7 +44,7 @@ Manage users – GOV.UK Notify
|
|||||||
{{ boolean_field(item.has_permissions(service_id, 'manage_service')) }}
|
{{ boolean_field(item.has_permissions(service_id, 'manage_service')) }}
|
||||||
{{ boolean_field(item.has_permissions(service_id, 'api_keys')) }}
|
{{ boolean_field(item.has_permissions(service_id, 'api_keys')) }}
|
||||||
{% call field(align='right') %}
|
{% call field(align='right') %}
|
||||||
<a href="{{ url_for('.edit_user', service_id=service_id, user_id=item.id)}}">Change</a>
|
<a href="{{ url_for('.cancel_invited_user', service_id=service_id, invited_user_id=item.id)}}">Cancel invitation</a>
|
||||||
{% endcall %}
|
{% endcall %}
|
||||||
{% endcall %}
|
{% endcall %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ def test_should_show_page_for_one_user(
|
|||||||
with app_.test_request_context():
|
with app_.test_request_context():
|
||||||
with app_.test_client() as client:
|
with app_.test_client() as client:
|
||||||
client.login(api_user_active)
|
client.login(api_user_active)
|
||||||
response = client.get(url_for('main.edit_user', service_id=55555, user_id=0))
|
response = client.get(url_for('main.edit_user_permissions', service_id=55555, user_id=0))
|
||||||
|
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ def test_redirect_after_saving_user(
|
|||||||
with app_.test_client() as client:
|
with app_.test_client() as client:
|
||||||
client.login(api_user_active)
|
client.login(api_user_active)
|
||||||
response = client.post(url_for(
|
response = client.post(url_for(
|
||||||
'main.edit_user', service_id=55555, user_id=0
|
'main.edit_user_permissions', service_id=55555, user_id=0
|
||||||
))
|
))
|
||||||
|
|
||||||
assert response.status_code == 302
|
assert response.status_code == 302
|
||||||
@@ -104,3 +104,18 @@ def test_should_show_page_for_inviting_user(
|
|||||||
# assert page.h1.string.strip() == 'Manage team'
|
# assert page.h1.string.strip() == 'Manage team'
|
||||||
# flash_banner = page.find('div', class_='banner-default-with-tick').string.strip()
|
# flash_banner = page.find('div', class_='banner-default-with-tick').string.strip()
|
||||||
# assert flash_banner == 'Invite sent to test@example.gov.uk'
|
# assert flash_banner == 'Invite sent to test@example.gov.uk'
|
||||||
|
|
||||||
|
|
||||||
|
def test_cancel_invited_user_cancels_user_invitations(app_, api_user_active, mock_login, mocker):
|
||||||
|
with app_.test_request_context():
|
||||||
|
with app_.test_client() as client:
|
||||||
|
mocker.patch('app.invite_api_client.cancel_invited_user')
|
||||||
|
import uuid
|
||||||
|
invited_user_id = uuid.uuid4()
|
||||||
|
client.login(api_user_active)
|
||||||
|
service_id = uuid.uuid4()
|
||||||
|
response = client.post(url_for('main.cancel_invited_user', service_id=service_id,
|
||||||
|
invited_user_id=invited_user_id))
|
||||||
|
|
||||||
|
assert response.status_code == 302
|
||||||
|
assert response.location == url_for('main.manage_users', service_id=service_id, _external=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user