Make a few more test files Pytest 5 compliant

This commit is contained in:
Katie Smith
2019-12-19 11:19:28 +00:00
parent c6779e6f92
commit b62018a8e4
3 changed files with 69 additions and 64 deletions

View File

@@ -2,11 +2,6 @@ import pytest
from app import user_api_client from app import user_api_client
from app.main.forms import TwoFactorForm from app.main.forms import TwoFactorForm
from tests.conftest import (
mock_check_verify_code,
mock_check_verify_code_code_expired,
mock_check_verify_code_code_not_found,
)
def _check_code(code): def _check_code(code):
@@ -28,47 +23,51 @@ def test_form_is_valid_returns_no_errors(
assert form.errors == {} assert form.errors == {}
@pytest.mark.parametrize('mock, post_data, expected_error', ( @pytest.mark.parametrize('post_data, expected_error', (
( (
mock_check_verify_code,
{'sms_code': '1234'}, {'sms_code': '1234'},
'Not enough numbers', 'Not enough numbers',
), ),
( (
mock_check_verify_code,
{'sms_code': '123456'}, {'sms_code': '123456'},
'Too many numbers', 'Too many numbers',
), ),
( (
mock_check_verify_code,
{}, {},
'Cannot be empty', 'Cannot be empty',
), ),
( (
mock_check_verify_code,
{'sms_code': '12E45'}, {'sms_code': '12E45'},
'Numbers only', 'Numbers only',
), ),
(
mock_check_verify_code_code_expired,
{'sms_code': '99999'},
'Code has expired',
),
(
mock_check_verify_code_code_not_found,
{'sms_code': '99999'},
'Code not found',
),
)) ))
def test_returns_errors_when_code_is_too_short( def test_check_verify_code_returns_errors(
app_, app_,
mocker,
mock,
post_data, post_data,
expected_error, expected_error,
mock_check_verify_code,
): ):
mock(mocker)
with app_.test_request_context(method='POST', data=post_data): with app_.test_request_context(method='POST', data=post_data):
form = TwoFactorForm(_check_code) form = TwoFactorForm(_check_code)
assert form.validate() is False assert form.validate() is False
assert form.errors == {'sms_code': [expected_error]} assert form.errors == {'sms_code': [expected_error]}
def test_check_verify_code_returns_error_when_code_has_expired(
app_,
mock_check_verify_code_code_expired,
):
with app_.test_request_context(method='POST', data={'sms_code': '99999'}):
form = TwoFactorForm(_check_code)
assert form.validate() is False
assert form.errors == {'sms_code': ['Code has expired']}
def test_check_verify_code_returns_error_when_code_was_not_found(
app_,
mock_check_verify_code_code_not_found,
):
with app_.test_request_context(method='POST', data={'sms_code': '99999'}):
form = TwoFactorForm(_check_code)
assert form.validate() is False
assert form.errors == {'sms_code': ['Code not found']}

View File

@@ -5,13 +5,7 @@ import pytest
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from flask import url_for from flask import url_for
from tests.conftest import ( from tests.conftest import SERVICE_ONE_ID, SERVICE_TWO_ID, normalize_spaces
SERVICE_ONE_ID,
SERVICE_TWO_ID,
normalize_spaces,
service_one,
service_two,
)
OS1, OS2, OS3, S1, S2, S3 = repeat(uuid.uuid4(), 6) OS1, OS2, OS3, S1, S2, S3 = repeat(uuid.uuid4(), 6)
@@ -237,43 +231,58 @@ def test_choose_account_should_not_show_back_to_service_link_if_service_archived
assert page.select_one('.navigation-service a') is None assert page.select_one('.navigation-service a') is None
@pytest.mark.parametrize('service, expected_status, page_text', ( def test_should_not_show_back_to_service_if_user_doesnt_belong_to_service(
(service_one, 200, ( client_request,
'Test Service Switch service ' fake_uuid,
'' mock_get_service,
'Dashboard ' service_two,
'Templates ' ):
'Team members' mock_get_service.return_value = service_two
)), expected_page_text = (
(service_two, 403, (
# Page has no back to link # Page has no back to link
'Youre not allowed to see this page ' 'Youre not allowed to see this page '
'To check your permissions, speak to a member of your team who can manage settings, team and usage.' 'To check your permissions, speak to a member of your team who can manage settings, team and usage.'
)), )
))
def test_should_not_show_back_to_service_if_user_doesnt_belong_to_service(
client_request,
api_user_active,
fake_uuid,
mock_get_service,
mock_get_service_template,
mock_get_template_folders,
service,
expected_status,
page_text,
):
mock_get_service.return_value = service(api_user_active)
page = client_request.get( page = client_request.get(
'main.view_template', 'main.view_template',
service_id=mock_get_service.return_value['id'], service_id=mock_get_service.return_value['id'],
template_id=fake_uuid, template_id=fake_uuid,
_expected_status=expected_status, _expected_status=403,
_test_page_title=False, _test_page_title=False,
) )
assert normalize_spaces( assert normalize_spaces(
page.select_one('header + .govuk-width-container').text page.select_one('header + .govuk-width-container').text
).startswith( ).startswith(
normalize_spaces(page_text) normalize_spaces(expected_page_text)
)
def test_should_show_back_to_service_if_user_belongs_to_service(
client_request,
fake_uuid,
mock_get_service,
mock_get_service_template,
service_one,
):
mock_get_service.return_value = service_one
expected_page_text = (
'Test Service Switch service '
''
'Dashboard '
'Templates '
'Team members'
)
page = client_request.get(
'main.view_template',
service_id=mock_get_service.return_value['id'],
template_id=fake_uuid,
_test_page_title=False,
)
assert normalize_spaces(
page.select_one('header + .govuk-width-container').text
).startswith(
normalize_spaces(expected_page_text)
) )

View File

@@ -11,10 +11,8 @@ from tests.conftest import (
USER_ONE_ID, USER_ONE_ID,
active_caseworking_user, active_caseworking_user,
active_user_with_permissions, active_user_with_permissions,
normalize_spaces,
) )
from tests.conftest import mock_check_invite_token as mock_check_token_invite
from tests.conftest import normalize_spaces
from tests.conftest import sample_invite as create_sample_invite
def test_existing_user_accept_invite_calls_api_and_redirects_to_dashboard( def test_existing_user_accept_invite_calls_api_and_redirects_to_dashboard(
@@ -296,13 +294,12 @@ def test_new_user_accept_invite_calls_api_and_views_registration_page(
def test_cancelled_invited_user_accepts_invited_redirect_to_cancelled_invitation( def test_cancelled_invited_user_accepts_invited_redirect_to_cancelled_invitation(
client, client,
service_one,
mocker,
mock_get_user, mock_get_user,
mock_get_service, mock_get_service,
sample_invite,
mock_check_invite_token,
): ):
cancelled_invitation = create_sample_invite(mocker, service_one, status='cancelled') sample_invite['status'] = 'cancelled'
mock_check_token_invite(mocker, cancelled_invitation)
response = client.get(url_for('main.accept_invite', token='thisisnotarealtoken')) response = client.get(url_for('main.accept_invite', token='thisisnotarealtoken'))
app.invite_api_client.check_token.assert_called_with('thisisnotarealtoken') app.invite_api_client.check_token.assert_called_with('thisisnotarealtoken')