Completion of the platform admin user story.

This commit is contained in:
Rebecca Law
2016-03-18 16:20:37 +00:00
parent d003dc4aa9
commit 13d9acf7dd
14 changed files with 177 additions and 162 deletions

View File

@@ -2,9 +2,7 @@ import uuid
from datetime import date, datetime, timedelta
from unittest.mock import Mock
import pytest
from app import create_app
from . import (
service_json,
TestClient,
@@ -18,7 +16,6 @@ from app.notify_client.models import (
User,
InvitedUser
)
from notifications_python_client.errors import HTTPError
@@ -89,7 +86,6 @@ def mock_update_service(mocker):
@pytest.fixture(scope='function')
def mock_update_service_raise_httperror_duplicate_name(mocker):
def _update(service_id,
service_name,
active,
@@ -112,7 +108,7 @@ SERVICE_TWO_ID = "147ad62a-2951-4fa1-9ca0-093cd1a52c52"
@pytest.fixture(scope='function')
def mock_get_services(mocker, user=None):
if user is None:
user = active_user_with_permissions(service_one)
user = active_user_with_permissions()
def _create(user_id=None):
service_one = service_json(
@@ -279,7 +275,7 @@ def api_user_active():
@pytest.fixture(scope='function')
def active_user_with_permissions(service_one):
def active_user_with_permissions():
from app.notify_client.user_api_client import User
user_data = {'id': 222,
@@ -290,13 +286,14 @@ def active_user_with_permissions(service_one):
'state': 'active',
'failed_login_count': 0,
'permissions': {SERVICE_ONE_ID: ['send_texts',
'send_emails',
'send_letters',
'manage_users',
'manage_templates',
'manage_settings',
'manage_api_keys',
'access_developer_docs']}
'send_emails',
'send_letters',
'manage_users',
'manage_templates',
'manage_settings',
'manage_api_keys',
'access_developer_docs']},
'platform_admin': False
}
user = User(user_data)
return user
@@ -369,6 +366,7 @@ def mock_get_user(mocker, api_user_active):
def _get_user(id):
api_user_active.id = id
return api_user_active
return mocker.patch(
'app.user_api_client.get_user', side_effect=_get_user)
@@ -387,10 +385,10 @@ def mock_get_user_pending(mocker, api_user_pending):
@pytest.fixture(scope='function')
def mock_get_user_by_email(mocker, api_user_active):
def _get_user(email_address):
api_user_active._email_address = email_address
return api_user_active
return mocker.patch('app.user_api_client.get_user_by_email', side_effect=_get_user)
@@ -399,23 +397,16 @@ def mock_get_user_with_permissions(mocker, api_user_active):
def _get_user(id):
api_user_active._permissions[''] = ['manage_users', 'manage_templates', 'manage_settings']
return api_user_active
return mocker.patch(
'app.user_api_client.get_user', side_effect=_get_user)
@pytest.fixture(scope='function')
def mock_get_platform_admin_user_with_permissions(mocker, platform_admin_user):
def _get_user(id):
return platform_admin_user
return mocker.patch(
'app.user_api_client.get_user', side_effect=_get_user)
@pytest.fixture(scope='function')
def mock_dont_get_user_by_email(mocker):
def _get_user(email_address):
return None
return mocker.patch(
'app.user_api_client.get_user_by_email',
side_effect=_get_user,
@@ -464,6 +455,7 @@ def mock_get_user_by_email_not_found(mocker):
def mock_verify_password(mocker):
def _verify_password(user, password):
return True
return mocker.patch(
'app.user_api_client.verify_password',
side_effect=_verify_password)
@@ -471,9 +463,9 @@ def mock_verify_password(mocker):
@pytest.fixture(scope='function')
def mock_update_user(mocker):
def _update(user):
return user
return mocker.patch('app.user_api_client.update_user', side_effect=_update)
@@ -489,7 +481,6 @@ def mock_get_all_users_from_api(mocker):
@pytest.fixture(scope='function')
def mock_create_api_key(mocker):
def _create(service_id, key_name):
import uuid
return {'data': str(uuid.uuid4())}
@@ -528,7 +519,6 @@ def mock_get_no_api_keys(mocker):
@pytest.fixture(scope='function')
def mock_login(mocker, mock_get_user, mock_update_user):
def _verify_code(user_id, code, code_type):
return True, ''
@@ -556,6 +546,7 @@ def mock_send_verify_code(mocker):
def mock_check_verify_code(mocker):
def _verify(user_id, code, code_type):
return True, ''
return mocker.patch(
'app.user_api_client.check_verify_code',
side_effect=_verify)
@@ -565,6 +556,7 @@ def mock_check_verify_code(mocker):
def mock_check_verify_code_code_not_found(mocker):
def _verify(user_id, code, code_type):
return False, 'Code not found'
return mocker.patch(
'app.user_api_client.check_verify_code',
side_effect=_verify)
@@ -574,6 +566,7 @@ def mock_check_verify_code_code_not_found(mocker):
def mock_check_verify_code_code_expired(mocker):
def _verify(user_id, code, code_type):
return False, 'Code has expired'
return mocker.patch(
'app.user_api_client.check_verify_code',
side_effect=_verify)
@@ -595,6 +588,7 @@ def mock_create_job(mocker, job_data):
job_data['file_name'] = '{}.csv'.format(job_id)
job_data['notification_count'] = notification_count
return job_data
return mocker.patch('app.job_api_client.create_job', side_effect=_create)
@@ -604,6 +598,7 @@ def mock_get_job(mocker, job_data):
job_data['id'] = job_id
job_data['service'] = service_id
return {"data": job_data}
return mocker.patch('app.job_api_client.get_job', side_effect=_get_job)
@@ -618,6 +613,7 @@ def mock_get_jobs(mocker):
job_data['service'] = service_id
data.append(job_data)
return {"data": data}
return mocker.patch('app.job_api_client.get_job', side_effect=_get_jobs)
@@ -625,6 +621,7 @@ def mock_get_jobs(mocker):
def mock_get_notifications(mocker):
def _get_notifications(service_id, job_id):
return notification_json()
return mocker.patch(
'app.notification_api_client.get_notifications_for_service',
side_effect=_get_notifications
@@ -633,8 +630,9 @@ def mock_get_notifications(mocker):
@pytest.fixture(scope='function')
def mock_has_permissions(mocker):
def _has_permission(permissions, service_id=None, or_=False, admin_override=False):
def _has_permission(permissions=None, or_=False, admin_override=False):
return True
return mocker.patch(
'app.notify_client.user_api_client.User.has_permissions',
side_effect=_has_permission)
@@ -660,6 +658,7 @@ def mock_get_users_by_service(mocker):
'email_address': 'notify@digital.cabinet-office.gov.uk',
'failed_login_count': 0}]
return [User(data[0])]
return mocker.patch('app.user_api_client.get_users_for_service', side_effect=_get_users_for_service, autospec=True)
@@ -667,6 +666,7 @@ def mock_get_users_by_service(mocker):
def mock_s3_upload(mocker):
def _upload(upload_id, service_id, filedata, region):
pass
return mocker.patch('app.main.views.send.s3upload', side_effect=_upload)
@@ -689,7 +689,6 @@ def sample_invited_user(mocker, sample_invite):
@pytest.fixture(scope='function')
def mock_create_invite(mocker, sample_invite):
def _create_invite(from_user, service_id, email_address, permissions):
sample_invite['from_user'] = from_user
sample_invite['service'] = service_id
@@ -697,6 +696,7 @@ def mock_create_invite(mocker, sample_invite):
sample_invite['status'] = 'pending'
sample_invite['permissions'] = permissions
return InvitedUser(**sample_invite)
return mocker.patch('app.invite_api_client.create_invite', side_effect=_create_invite)
@@ -711,6 +711,7 @@ def mock_get_invites_for_service(mocker, service_one, sample_invite):
invite['email_address'] = 'user_{}@testnotify.gov.uk'.format(i)
data.append(InvitedUser(**invite))
return data
return mocker.patch('app.invite_api_client.get_invites_for_service', side_effect=_get_invites)
@@ -718,6 +719,7 @@ def mock_get_invites_for_service(mocker, service_one, sample_invite):
def mock_check_invite_token(mocker, sample_invite):
def _check_token(token):
return InvitedUser(**sample_invite)
return mocker.patch('app.invite_api_client.check_token', side_effect=_check_token)
@@ -725,6 +727,7 @@ def mock_check_invite_token(mocker, sample_invite):
def mock_accept_invite(mocker, sample_invite):
def _accept(service_id, invite_id):
return InvitedUser(**sample_invite)
return mocker.patch('app.invite_api_client.accept_invite', side_effect=_accept)
@@ -732,6 +735,7 @@ def mock_accept_invite(mocker, sample_invite):
def mock_add_user_to_service(mocker, service_one, api_user_active):
def _add_user(service_id, user_id, permissions):
return api_user_active
return mocker.patch('app.user_api_client.add_user_to_service', side_effect=_add_user)