mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-05 10:53:28 -05:00
Merge pull request #218 from alphagov/cancel-invited-user
Cancel invited user
This commit is contained in:
@@ -4,8 +4,7 @@ from flask import (
|
||||
redirect,
|
||||
abort,
|
||||
url_for,
|
||||
flash
|
||||
)
|
||||
flash)
|
||||
|
||||
from flask_login import (
|
||||
login_required,
|
||||
@@ -79,7 +78,7 @@ def invite_user(service_id):
|
||||
|
||||
@main.route("/services/<service_id>/users/<user_id>", methods=['GET', 'POST'])
|
||||
@login_required
|
||||
def edit_user(service_id, user_id):
|
||||
def edit_user_permissions(service_id, user_id):
|
||||
|
||||
if request.method == 'POST':
|
||||
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=['GET'])
|
||||
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):
|
||||
permissions = []
|
||||
if form.get('send_messages') and form['send_messages'] == 'yes':
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
from notifications_python_client.base import BaseAPIClient
|
||||
from app.notify_client.models import InvitedUser
|
||||
|
||||
@@ -27,17 +28,21 @@ class InviteApiClient(BaseAPIClient):
|
||||
endpoint = '/service/{}/invite'.format(service_id)
|
||||
resp = self.get(endpoint)
|
||||
invites = resp['data']
|
||||
invited_users = _get_invited_users(invites)
|
||||
invited_users = self._get_invited_users(invites)
|
||||
return invited_users
|
||||
|
||||
def accept_invite(self, token):
|
||||
resp = self.get(url='/invite/{}'.format(token))
|
||||
return InvitedUser(**resp['data'])
|
||||
|
||||
def cancel_invited_user(self, service_id, invited_user_id):
|
||||
data = {'status': 'cancelled'}
|
||||
self.post(url='/service/{0}/invite/{1}'.format(service_id, invited_user_id),
|
||||
data=data)
|
||||
|
||||
def _get_invited_users(invites):
|
||||
invited_users = []
|
||||
for invite in invites:
|
||||
invited_user = InvitedUser(**invite)
|
||||
invited_users.append(invited_user)
|
||||
return invited_users
|
||||
def _get_invited_users(self, invites):
|
||||
invited_users = []
|
||||
for invite in invites:
|
||||
invited_user = InvitedUser(**invite)
|
||||
invited_users.append(invited_user)
|
||||
return invited_users
|
||||
|
||||
@@ -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, 'manage_service')) }}
|
||||
{{ 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 %}
|
||||
|
||||
{% if invited_users %}
|
||||
@@ -46,9 +43,15 @@ Manage users – GOV.UK Notify
|
||||
{{ boolean_field(item.has_permissions('send_messages')) }}
|
||||
{{ boolean_field(item.has_permissions('manage_service')) }}
|
||||
{{ boolean_field(item.has_permissions('manage_api_keys')) }}
|
||||
{% call field(align='right') %}
|
||||
<a href="{{ url_for('.edit_user', service_id=service_id, user_id=item.id)}}">Change</a>
|
||||
{% endcall %}
|
||||
{% if item.status == 'pending' %}
|
||||
{% call field(align='right') %}
|
||||
<a href="{{ url_for('.cancel_invited_user', service_id=service_id, invited_user_id=item.id)}}">Cancel invitation</a>
|
||||
{% endcall %}
|
||||
{% else %}
|
||||
{% call field() %}
|
||||
{{ item.status }}
|
||||
{% endcall %}
|
||||
{% endif %}
|
||||
{% endcall %}
|
||||
{% endif %}
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ def test_should_show_page_for_one_user(
|
||||
with app_.test_request_context():
|
||||
with app_.test_client() as client:
|
||||
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
|
||||
|
||||
@@ -47,7 +47,7 @@ def test_redirect_after_saving_user(
|
||||
with app_.test_client() as client:
|
||||
client.login(api_user_active)
|
||||
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
|
||||
@@ -104,3 +104,18 @@ def test_invite_user(
|
||||
assert page.h1.string.strip() == 'Manage team'
|
||||
flash_banner = page.find('div', class_='banner-default-with-tick').string.strip()
|
||||
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.get(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