Merge with master again.

This commit is contained in:
Nicholas Staples
2016-03-02 13:53:05 +00:00
18 changed files with 276 additions and 109 deletions

View File

@@ -0,0 +1,30 @@
from flask import url_for
from app.notify_client.models import InvitedUser
from notifications_python_client.errors import HTTPError
import pytest
def test_existing_user_accept_invite_calls_api_and_redirects_to_dashboard(app_,
service_one,
api_user_active,
sample_invite,
mock_accept_invite,
mock_get_user_by_email,
mock_add_user_to_service):
expected_service = service_one['id']
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, api_user_active.id)
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'

View File

@@ -70,7 +70,7 @@ def test_upload_csvfile_with_invalid_phone_shows_check_page_with_errors(
mock_has_permissions
):
contents = 'to,name\n+44 123,test1\n+44 456,test2'
contents = 'phone number,name\n+44 123,test1\n+44 456,test2'
file_data = (BytesIO(contents.encode('utf-8')), 'invalid.csv')
mocker.patch('app.main.views.send.s3download', return_value=contents)
@@ -102,14 +102,14 @@ def test_upload_csvfile_removes_empty_lines_and_trailing_commas(
mock_has_permissions
):
contents = 'to,name,,,\n++44 7700 900981,test1,,,\n+44 7700 900981,test2,,,\n ,,, \n ,,, \t \t \n'
contents = 'phone number,name,,,\n++44 7700 900981,test1,,,\n+44 7700 900981,test2,,,\n ,,, \n ,,, \t \t \n'
file_data = (BytesIO(contents.encode('utf-8')), 'invalid.csv')
expected_data = {'data': ['to,name', '++44 7700 900981,test1', '+44 7700 900981,test2'],
expected_data = {'data': ['phone number,name', '++44 7700 900981,test1', '+44 7700 900981,test2'],
'file_name': 'invalid.csv'}
mocker.patch('app.main.views.send.s3download',
return_value='to,name\n++44 7700 900981,test1\n+44 7700 900981,test2')
return_value='phone number,name\n++44 7700 900981,test1\n+44 7700 900981,test2')
with app_.test_request_context():
with app_.test_client() as client:
@@ -135,8 +135,8 @@ def test_send_test_message_to_self(
mock_has_permissions
):
expected_data = {'data': ['to', '+4412341234'], 'file_name': 'Test run'}
mocker.patch('app.main.views.send.s3download', return_value='to\r\n+4412341234')
expected_data = {'data': ['phone number', '+4412341234'], 'file_name': 'Test run'}
mocker.patch('app.main.views.send.s3download', return_value='phone number\r\n+4412341234')
with app_.test_request_context():
with app_.test_client() as client:
@@ -167,7 +167,7 @@ def test_download_example_csv(
follow_redirects=True
)
assert response.status_code == 200
assert response.get_data(as_text=True) == 'to\r\n+4412341234\r\n'
assert response.get_data(as_text=True) == 'phone number\r\n+4412341234\r\n'
assert 'text/csv' in response.headers['Content-Type']
@@ -182,7 +182,7 @@ def test_upload_csvfile_with_valid_phone_shows_all_numbers(
mock_has_permissions
):
contents = 'to\n+44 7700 900981\n+44 7700 900982\n+44 7700 900983\n+44 7700 900984\n+44 7700 900985\n+44 7700 900986' # noqa
contents = 'phone number\n+44 7700 900981\n+44 7700 900982\n+44 7700 900983\n+44 7700 900984\n+44 7700 900985\n+44 7700 900986' # noqa
file_data = (BytesIO(contents.encode('utf-8')), 'valid.csv')
mocker.patch('app.main.views.send.s3download', return_value=contents)