[WIP] Start of user accepting invite.

This commit only deals with acceptance by
users who are already in system.

Changed invite client to return invited user objects
instead of dictionaries.

Added commented out test. fixed up fixtures to return invited user
object for invites
This commit is contained in:
Adam Shimali
2016-02-29 17:35:21 +00:00
parent e3740f314f
commit 5f3c72729e
11 changed files with 220 additions and 79 deletions

View File

@@ -0,0 +1,25 @@
from flask import url_for
def test_existing_user_accept_invite_calls_api_and_redirects_to_dashboard(app_,
service_one,
sample_invite,
mock_accept_invite,
mock_get_user_by_email,
mock_add_user_to_service):
expected_service = service_one['id']
expected_from_user = service_one['users'][0]
expected_redirect_location = 'http://localhost/services/{}/dashboard'.format(expected_service)
with app_.test_request_context():
with app_.test_client() as client:
response = client.get(url_for('main.accept_invite', token='thisisnotarealtoken'))
mock_accept_invite.assert_called_with('thisisnotarealtoken')
mock_get_user_by_email.assert_called_with('invited_user@test.gov.uk')
mock_add_user_to_service.assert_called_with(expected_service, expected_from_user, sample_invite)
assert response.status_code == 302
assert response.location == expected_redirect_location

View File

@@ -3,22 +3,22 @@ from flask import url_for
from bs4 import BeautifulSoup
# def test_should_show_overview_page(
# app_,
# api_user_active,
# mock_login,
# mock_get_service,
# mock_get_users_by_service,
# mock_get_invites_for_service
# ):
# with app_.test_request_context():
# with app_.test_client() as client:
# client.login(api_user_active)
# response = client.get(url_for('main.manage_users', service_id=55555))
#
# assert 'Manage team' in response.get_data(as_text=True)
# assert response.status_code == 200
# mock_get_users_by_service.assert_called_once_with(service_id='55555')
def test_should_show_overview_page(
app_,
api_user_active,
mock_login,
mock_get_service,
mock_get_users_by_service,
mock_get_invites_for_service
):
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
response = client.get(url_for('main.manage_users', service_id=55555))
assert 'Manage team' in response.get_data(as_text=True)
assert response.status_code == 200
mock_get_users_by_service.assert_called_once_with(service_id='55555')
def test_should_show_page_for_one_user(
@@ -70,37 +70,37 @@ def test_should_show_page_for_inviting_user(
assert 'Add a new team member' in response.get_data(as_text=True)
assert response.status_code == 200
#
# def test_invite_user(
# app_,
# service_one,
# api_user_active,
# mock_login,
# mock_get_users_by_service,
# mock_create_invite,
# mock_get_invites_for_service
# ):
# from_user = api_user_active.id
# service_id = service_one['id']
# email_address = 'test@example.gov.uk'
# permissions = 'send_messages,manage_service,manage_api_keys'
#
# with app_.test_request_context():
# with app_.test_client() as client:
# client.login(api_user_active)
# response = client.post(
# url_for('main.invite_user', service_id=service_id),
# data={'email_address': email_address,
# 'send_messages': 'yes',
# 'manage_service': 'yes',
# 'manage_api_keys': 'yes'},
# follow_redirects=True
# )
#
# assert response.status_code == 200
# mock_create_invite.assert_called_with(from_user, service_id, email_address, permissions)
# mock_get_invites_for_service.assert_called_with(service_id=service_id)
# page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
# 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_invite_user(
app_,
service_one,
api_user_active,
mock_login,
mock_get_users_by_service,
mock_create_invite,
mock_get_invites_for_service
):
from_user = api_user_active.id
service_id = service_one['id']
email_address = 'test@example.gov.uk'
permissions = 'send_messages,manage_service,manage_api_keys'
with app_.test_request_context():
with app_.test_client() as client:
client.login(api_user_active)
response = client.post(
url_for('main.invite_user', service_id=service_id),
data={'email_address': email_address,
'send_messages': 'yes',
'manage_service': 'yes',
'manage_api_keys': 'yes'},
follow_redirects=True
)
assert response.status_code == 200
mock_create_invite.assert_called_with(from_user, service_id, email_address, permissions)
mock_get_invites_for_service.assert_called_with(service_id=service_id)
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
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'