From 805639a2e148cb70cd92c3bbc0e78604cdd0eee5 Mon Sep 17 00:00:00 2001 From: Leo Hemsted Date: Wed, 16 Nov 2016 11:44:29 +0000 Subject: [PATCH] add test for choose services and related redirects to it it'll just show the add service button if you only have archived services --- app/notify_client/service_api_client.py | 4 +- tests/app/main/views/test_choose_services.py | 22 ++++-- tests/app/main/views/test_sign_in.py | 72 ++++++++++++-------- 3 files changed, 61 insertions(+), 37 deletions(-) diff --git a/app/notify_client/service_api_client.py b/app/notify_client/service_api_client.py index af71b6469..379bbcb14 100644 --- a/app/notify_client/service_api_client.py +++ b/app/notify_client/service_api_client.py @@ -16,13 +16,13 @@ class ServiceAPIClient(BaseAPIClient): self.service_id = application.config['ADMIN_CLIENT_USER_NAME'] self.api_key = application.config['ADMIN_CLIENT_SECRET'] - def create_service(self, service_name, active, message_limit, restricted, user_id, email_from): + def create_service(self, service_name, message_limit, restricted, user_id, email_from): """ Create a service and return the json. """ data = { "name": service_name, - "active": active, + "active": True, "message_limit": message_limit, "user_id": user_id, "restricted": restricted, diff --git a/tests/app/main/views/test_choose_services.py b/tests/app/main/views/test_choose_services.py index d4399490a..2ca0dbb28 100644 --- a/tests/app/main/views/test_choose_services.py +++ b/tests/app/main/views/test_choose_services.py @@ -1,4 +1,4 @@ -from flask import url_for, session +from flask import url_for def test_should_show_choose_services_page(app_, @@ -18,13 +18,26 @@ def test_should_show_choose_services_page(app_, assert mock_get_services.called assert services['data'][0]['name'] in resp_data assert services['data'][1]['name'] in resp_data - assert 'List all services' not in resp_data + + +def test_should_show_choose_services_page_if_no_services( + client, + mock_login, + api_user_active, +): + # if users last service has been archived there'll be no services + # mock_login already patches get_services to return no data + client.login(api_user_active) + response = client.get(url_for('main.choose_service')) + assert response.status_code == 200 + resp_data = response.get_data(as_text=True) + assert 'Choose service' in resp_data + assert 'Add a new service' in resp_data def test_redirect_if_only_one_service( app_, mock_login, - mock_get_user, api_user_active, mock_get_services_with_one_service ): @@ -41,9 +54,7 @@ def test_redirect_if_only_one_service( def test_redirect_if_multiple_services( app_, mock_login, - mock_get_user, api_user_active, - mock_get_services ): with app_.test_request_context(): with app_.test_client() as client: @@ -57,7 +68,6 @@ def test_redirect_if_multiple_services( def test_redirect_if_service_in_session( app_, mock_login, - mock_get_user, api_user_active, mock_get_services, mock_get_service diff --git a/tests/app/main/views/test_sign_in.py b/tests/app/main/views/test_sign_in.py index f57eac9ee..418098eed 100644 --- a/tests/app/main/views/test_sign_in.py +++ b/tests/app/main/views/test_sign_in.py @@ -12,15 +12,9 @@ def test_render_sign_in_returns_sign_in_template(app_): assert 'Forgot your password?' in response.get_data(as_text=True) -def test_logged_in_user_redirects_to_choose_service(app_, - api_user_active, - mock_get_user): - - with app_.test_request_context(): - with app_.test_client() as client: - client.login(api_user_active) - response = client.get(url_for('main.sign_in')) - assert response.location == url_for('main.choose_service', _external=True) +def test_logged_in_user_redirects_to_choose_service(logged_in_client): + response = logged_in_client.get(url_for('main.sign_in')) + assert response.location == url_for('main.choose_service', _external=True) def test_process_sign_in_return_2fa_template(app_, @@ -88,24 +82,44 @@ def test_should_attempt_redirect_when_user_is_pending(app_, assert response.status_code == 302 -def test_not_fresh_session_login(app_, - api_user_active, - mock_login, - mock_get_user_by_email, - mock_verify_password, - mock_get_services_with_one_service): - with app_.test_request_context(): - with app_.test_client() as client: - client.login(api_user_active) - with client.session_transaction() as session: - assert session['_fresh'] - session['_fresh'] = False - # This should skip the two factor - response = client.post( - url_for('main.sign_in'), data={ - 'email_address': api_user_active.email_address, - 'password': 'val1dPassw0rd!'}) +def test_not_fresh_session_login_redirects_to_dashboard( + client, + api_user_active, + mock_login, + mock_get_user_by_email, + mock_verify_password, + mock_get_services_with_one_service +): + client.login(api_user_active) + with client.session_transaction() as session: + assert session['_fresh'] + session['_fresh'] = False + # This should skip the two factor + response = client.post( + url_for('main.sign_in'), data={ + 'email_address': api_user_active.email_address, + 'password': 'val1dPassw0rd!'}) + assert response.status_code == 302 + service_dct = mock_get_services_with_one_service(api_user_active.id)['data'][0] + assert response.location == url_for( + 'main.service_dashboard', service_id=service_dct['id'], _external=True) + + def test_not_fresh_session_login_redirects_to_choose_service( + client, + api_user_active, + mock_login, + mock_get_user_by_email, + mock_verify_password, + mock_get_services + ): + client.login(api_user_active) + with client.session_transaction() as session: + assert session['_fresh'] + session['_fresh'] = False + # This should skip the two factor + response = client.post( + url_for('main.sign_in'), data={ + 'email_address': api_user_active.email_address, + 'password': 'val1dPassw0rd!'}) assert response.status_code == 302 - service_dct = mock_get_services_with_one_service(api_user_active.id)['data'][0] - assert response.location == url_for( - 'main.service_dashboard', service_id=service_dct['id'], _external=True) + assert response.location == url_for('main.choose_service', _external=True)