From 08881e5bd1fe0f28e88e90799603a45fc16e197c Mon Sep 17 00:00:00 2001 From: Leo Hemsted Date: Wed, 9 Nov 2016 14:33:35 +0000 Subject: [PATCH] add get_active_services method * all current invocations of get_services now call get_active_services EXCEPT for platform admin page (where we want to see inactive services * cleaned up parameter names and unpacking (since *params is unhelpful) * fixed incorrect kwarg name in conftest --- app/main/views/add_service.py | 2 +- app/main/views/choose_service.py | 4 ++-- app/main/views/platform_admin.py | 1 + app/main/views/sign_in.py | 2 +- app/main/views/two_factor.py | 2 +- app/notify_client/service_api_client.py | 11 +++++++++-- tests/conftest.py | 14 +++++++------- 7 files changed, 22 insertions(+), 14 deletions(-) diff --git a/app/main/views/add_service.py b/app/main/views/add_service.py index 2869788ce..a9731c32b 100644 --- a/app/main/views/add_service.py +++ b/app/main/views/add_service.py @@ -68,7 +68,7 @@ def add_service(): service_name = form.name.data service_id = _create_service(service_name, email_from) - if (len(service_api_client.get_services({'user_id': session['user_id']}).get('data', [])) > 1): + if (len(service_api_client.get_active_services({'user_id': session['user_id']}).get('data', [])) > 1): return redirect(url_for('main.service_dashboard', service_id=service_id)) example_sms_template = service_api_client.create_service_template( diff --git a/app/main/views/choose_service.py b/app/main/views/choose_service.py index d5cd2e6b9..d1a58f68d 100644 --- a/app/main/views/choose_service.py +++ b/app/main/views/choose_service.py @@ -12,7 +12,7 @@ def choose_service(): return render_template( 'views/choose-service.html', services=[ServicesBrowsableItem(x) for x in - service_api_client.get_services({'user_id': current_user.id})['data']], + service_api_client.get_active_services({'user_id': current_user.id})['data']], can_add_service=is_gov_user(current_user.email_address) ) @@ -23,7 +23,7 @@ def show_all_services_or_dashboard(): if not current_user.is_authenticated: return redirect(url_for('.index')) - services = service_api_client.get_services({'user_id': current_user.id})['data'] + services = service_api_client.get_active_services({'user_id': current_user.id})['data'] if 1 == len(services): return redirect(url_for('.service_dashboard', service_id=services[0]['id'])) diff --git a/app/main/views/platform_admin.py b/app/main/views/platform_admin.py index 3d613f458..a5485b988 100644 --- a/app/main/views/platform_admin.py +++ b/app/main/views/platform_admin.py @@ -13,6 +13,7 @@ from app.statistics_utils import get_formatted_percentage @login_required @user_has_permissions(admin_override=True) def platform_admin(): + # specifically DO get inactive services services = service_api_client.get_services({'detailed': True})['data'] return render_template( 'views/platform-admin.html', diff --git a/app/main/views/sign_in.py b/app/main/views/sign_in.py index c93dfd847..1ad7a2521 100644 --- a/app/main/views/sign_in.py +++ b/app/main/views/sign_in.py @@ -55,7 +55,7 @@ def sign_in(): user.is_active: confirm_login() - services = service_api_client.get_services({'user_id': str(user.id)}).get('data', []) + services = service_api_client.get_active_services({'user_id': str(user.id)}).get('data', []) if (len(services) == 1): return redirect(url_for('main.service_dashboard', service_id=services[0]['id'])) else: diff --git a/app/main/views/two_factor.py b/app/main/views/two_factor.py index c4d609d64..770d2cf4b 100644 --- a/app/main/views/two_factor.py +++ b/app/main/views/two_factor.py @@ -26,7 +26,7 @@ def two_factor(): if form.validate_on_submit(): try: user = user_api_client.get_user(user_id) - services = service_api_client.get_services({'user_id': str(user_id)}).get('data', []) + services = service_api_client.get_active_services({'user_id': str(user_id)}).get('data', []) # Check if coming from new password page if 'password' in session['user_details']: user.set_password(session['user_details']['password']) diff --git a/app/notify_client/service_api_client.py b/app/notify_client/service_api_client.py index 9766d876c..af71b6469 100644 --- a/app/notify_client/service_api_client.py +++ b/app/notify_client/service_api_client.py @@ -57,11 +57,18 @@ class ServiceAPIClient(BaseAPIClient): '/service/{0}'.format(service_id), params=params) - def get_services(self, *params): + def get_services(self, params_dict=None): """ Retrieve a list of services. """ - return self.get('/service', *params) + return self.get('/service', params=params_dict) + + def get_active_services(self, params_dict=None): + """ + Retrieve a list of active services. + """ + params_dict['only_active'] = True + return self.get_services(params_dict) def update_service( self, diff --git a/tests/conftest.py b/tests/conftest.py index 2d3d14120..93a9c8813 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -187,7 +187,7 @@ def mock_get_services(mocker, fake_uuid, user=None): if user is None: user = active_user_with_permissions(fake_uuid) - def _create(user_id=None): + def _get_services(params_dict=None): service_one = service_json( SERVICE_ONE_ID, "service_one", [user.id], 1000, True, False) service_two = service_json( @@ -195,7 +195,7 @@ def mock_get_services(mocker, fake_uuid, user=None): return {'data': [service_one, service_two]} return mocker.patch( - 'app.service_api_client.get_services', side_effect=_create) + 'app.service_api_client.get_services', side_effect=_get_services) @pytest.fixture(scope='function') @@ -203,11 +203,11 @@ def mock_get_services_with_no_services(mocker, fake_uuid, user=None): if user is None: user = active_user_with_permissions(fake_uuid) - def _create(user_id=None): + def _get_services(params_dict=None): return {'data': []} return mocker.patch( - 'app.service_api_client.get_services', side_effect=_create) + 'app.service_api_client.get_services', side_effect=_get_services) @pytest.fixture(scope='function') @@ -215,13 +215,13 @@ def mock_get_services_with_one_service(mocker, fake_uuid, user=None): if user is None: user = api_user_active(fake_uuid) - def _create(user_id=None): + def _get_services(params_dict=None): return {'data': [service_json( SERVICE_ONE_ID, "service_one", [user.id], 1000, True, False )]} return mocker.patch( - 'app.service_api_client.get_services', side_effect=_create) + 'app.service_api_client.get_services', side_effect=_get_services) @pytest.fixture(scope='function') @@ -825,7 +825,7 @@ def mock_login(mocker, mock_get_user, mock_update_user, mock_events): def _verify_code(user_id, code, code_type): return True, '' - def _no_services(user_id=None): + def _no_services(params_dict=None): return {'data': []} return (