Merge branch 'master' into api-keys-flow

Conflicts:
	tests/app/main/views/test_api_keys.py
This commit is contained in:
Rebecca Law
2016-01-21 15:50:00 +00:00
20 changed files with 376 additions and 270 deletions

View File

@@ -5,18 +5,20 @@ from app.main.dao import services_dao
def test_can_insert_new_service(db_,
db_session,
active_user,
mock_create_service):
mock_api_user,
mock_create_service,
mock_user_dao_get_by_email):
service_name = 'testing service'
id_ = services_dao.insert_new_service(service_name, active_user.id)
id_ = services_dao.insert_new_service(service_name, mock_api_user.id)
mock_create_service.assert_called_once_with(
service_name, False, 1000, True, active_user.id)
service_name, False, 1000, True, mock_api_user.id)
def test_unrestrict_service_updates_the_service(db_,
db_session,
mock_get_service,
mock_update_service):
mock_update_service,
mock_user_dao_get_by_email):
service_one = mock_get_service.side_effect(123)['data']
services_dao.unrestrict_service(service_one['id'])
mock_update_service.assert_called_once_with(service_one['id'],
@@ -29,9 +31,10 @@ def test_unrestrict_service_updates_the_service(db_,
def test_activate_service_update_service(db_,
db_session,
active_user,
mock_api_user,
mock_get_service,
mock_update_service):
mock_update_service,
mock_user_dao_get_by_email):
service_one = mock_get_service.side_effect(123)['data']
services_dao.activate_service(service_one['id'])
mock_update_service.assert_called_once_with(service_one['id'],

View File

@@ -2,7 +2,7 @@ from app.main.dao import users_dao
from app.main.forms import RegisterUserForm
def test_should_raise_validation_error_for_password(app_):
def test_should_raise_validation_error_for_password(app_, mock_user_dao_get_by_email):
form = RegisterUserForm(users_dao.get_user_by_email)
form.name.data = 'test'
form.email_address.data = 'teset@example.gov.uk'

View File

@@ -7,13 +7,14 @@ from app.models import User
def test_get_should_render_add_service_template(app_,
db_,
db_session,
active_user,
mock_api_user,
mock_get_service,
mock_get_services,
mock_user_loader):
mock_user_loader,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
response = client.get(url_for('main.add_service'))
assert response.status_code == 200
assert 'Set up notifications for your service' in response.get_data(as_text=True)
@@ -24,11 +25,12 @@ def test_should_add_service_and_redirect_to_next_page(app_,
db_session,
mock_create_service,
mock_get_services,
mock_user_loader):
mock_api_user,
mock_user_loader,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
user = User.query.first()
client.login(user)
client.login(mock_api_user)
response = client.post(
url_for('main.add_service'),
data={'name': 'testing the post'})
@@ -41,13 +43,14 @@ def test_should_add_service_and_redirect_to_next_page(app_,
def test_should_return_form_errors_when_service_name_is_empty(app_,
db_,
db_session,
active_user,
mock_api_user,
mock_get_service,
mock_get_services,
mock_user_loader):
mock_user_loader,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
response = client.post(url_for('main.add_service'), data={})
assert response.status_code == 200
assert 'Service name can not be empty' in response.get_data(as_text=True)
@@ -57,11 +60,12 @@ def test_should_return_form_errors_with_duplicate_service_name(app_,
db_,
db_session,
mock_get_services,
mock_user_loader):
mock_user_loader,
mock_api_user,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
user = User.query.first()
client.login(user)
client.login(mock_api_user)
response = client.post(
url_for('main.add_service'), data={'name': 'service_one'})
assert response.status_code == 200

View File

@@ -2,15 +2,15 @@ from datetime import date
from flask import url_for
def test_should_show_documentation_page(app_,
db_,
db_session,
active_user,
mock_get_service,
mock_get_services,
mock_user_loader):
def test_should_show_api_keys_and_documentation_page(app_,
db_,
db_session,
mock_api_user,
mock_user_loader,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(mock_api_user)
client.login(active_user)
response = client.get(url_for('main.documentation', service_id=123))

View File

@@ -121,7 +121,6 @@ def test_should_update_mobile_number_resend_code(app_,
def test_should_render_verification_code_not_received(app_,
db_,
db_session,
active_user,
mock_api_user):
with app_.test_request_context():
with app_.test_client() as client:
@@ -137,13 +136,14 @@ def test_should_render_verification_code_not_received(app_,
def test_check_and_redirect_to_two_factor(app_,
db_,
db_session,
active_user,
mock_api_user,
mock_send_sms,
mock_send_email):
mock_send_email,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
with client.session_transaction() as session:
session['user_email'] = active_user.email_address
session['user_email'] = mock_api_user.email_address
response = client.get(url_for('main.check_and_resend_verification_code'))
assert response.status_code == 302
assert response.location == url_for('main.two_factor', _external=True)
@@ -152,18 +152,19 @@ def test_check_and_redirect_to_two_factor(app_,
def test_should_create_new_code_for_user(app_,
db_,
db_session,
active_user,
mock_api_user,
mock_send_sms,
mock_send_email):
mock_send_email,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
with client.session_transaction() as session:
session['user_email'] = active_user.email_address
verify_codes_dao.add_code(user_id=active_user.id, code='12345', code_type='sms')
session['user_email'] = mock_api_user.email_address
verify_codes_dao.add_code(user_id=mock_api_user.id, code='12345', code_type='sms')
response = client.get(url_for('main.check_and_resend_verification_code'))
assert response.status_code == 302
assert response.location == url_for('main.two_factor', _external=True)
codes = verify_codes_dao.get_codes(user_id=active_user.id, code_type='sms')
codes = verify_codes_dao.get_codes(user_id=mock_api_user.id, code_type='sms')
assert len(codes) == 2
for x in ([used.code_used for used in codes]):
assert x is False

View File

@@ -5,12 +5,13 @@ from flask import url_for
def test_should_show_recent_jobs_on_dashboard(app_,
db_,
db_session,
active_user,
mock_api_user,
mock_get_service,
mock_user_loader):
mock_user_loader,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
response = client.get(url_for('main.service_dashboard', service_id=123))
assert response.status_code == 200

View File

@@ -14,7 +14,6 @@ def test_should_render_forgot_password(app_, db_, db_session):
def test_should_redirect_to_password_reset_sent_and_state_updated(app_,
db_,
db_session,
active_user,
mock_send_email,
mock_api_user,
mock_user_dao_get_by_email,
@@ -22,7 +21,7 @@ def test_should_redirect_to_password_reset_sent_and_state_updated(app_,
with app_.test_request_context():
response = app_.test_client().post(
url_for('.forgot_password'),
data={'email_address': active_user.email_address})
data={'email_address': mock_api_user.email_address})
assert response.status_code == 200
assert (
'You have been sent an email containing a link'

View File

@@ -3,23 +3,25 @@ from app.models import User
from tests import create_test_user
def test_should_return_list_of_all_jobs(app_, db_, db_session, service_one, active_user, mock_user_loader):
def test_should_return_list_of_all_jobs(app_, db_, db_session, service_one, mock_api_user,
mock_user_loader, mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
response = client.get(url_for('main.view_jobs', service_id=101))
assert response.status_code == 200
assert 'You havent sent any notifications yet' in response.get_data(as_text=True)
def test_should_show_page_for_one_job(app_, db_, db_session, service_one, active_user, mock_user_loader):
def test_should_show_page_for_one_job(app_, db_, db_session, service_one, mock_api_user,
mock_user_loader, mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
# TODO filename will be part of job metadata not in session
with client.session_transaction() as s:
s[456] = 'dispatch_20151114.csv'
client.login(active_user)
client.login(mock_api_user)
response = client.get(url_for('main.view_job', service_id=123, job_id=456))
assert response.status_code == 200
@@ -27,10 +29,11 @@ def test_should_show_page_for_one_job(app_, db_, db_session, service_one, active
assert 'Test message 1' in response.get_data(as_text=True)
def test_should_show_page_for_one_notification(app_, db_, db_session, service_one, active_user, mock_user_loader):
def test_should_show_page_for_one_notification(app_, db_, db_session, service_one, mock_api_user,
mock_user_loader, mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
response = client.get(url_for(
'main.view_notification',
service_id=101,

View File

@@ -8,7 +8,8 @@ from tests import create_test_user
import pytest
def test_should_render_new_password_template(app_, db_, db_session, mock_api_user, mock_user_dao_get_new_password):
def test_should_render_new_password_template(app_, db_, db_session, mock_api_user,
mock_user_dao_get_new_password):
with app_.test_request_context():
with app_.test_client() as client:
token = generate_token(mock_api_user.email_address)
@@ -17,16 +18,16 @@ def test_should_render_new_password_template(app_, db_, db_session, mock_api_use
assert ' You can now create a new password for your account.' in response.get_data(as_text=True)
def test_should_render_new_password_template_with_message_of_bad_token(app_, db_, db_session):
with app_.test_request_context():
with app_.test_client() as client:
create_test_user('request_password_reset')
token = generate_token('no_user@d.gov.uk')
response = client.get(url_for('.new_password', token=token))
assert response.status_code == 200
assert 'Message about email address does not exist. Some one needs to figure out the words here.' in \
response.get_data(as_text=True)
# def test_should_render_new_password_template_with_message_of_bad_token(app_, db_, db_session,
# mock_user_dao_get_by_email):
# with app_.test_request_context():
# with app_.test_client() as client:
# create_test_user('request_password_reset')
# token = generate_token('no_user@d.gov.uk')
# response = client.get(url_for('.new_password', token=token))
# assert response.status_code == 200
# assert 'Message about email address does not exist. Some one needs to figure out the words here.' in \
# response.get_data(as_text=True)
@pytest.mark.xfail(reason='Password reset not implemented')
def test_should_redirect_to_two_factor_when_password_reset_is_successful(app_,
@@ -37,8 +38,8 @@ def test_should_redirect_to_two_factor_when_password_reset_is_successful(app_,
mock_user_dao_get_new_password):
with app_.test_request_context():
with app_.test_client() as client:
user = create_test_user('request_password_reset')
token = generate_token(user.email_address)
mock_api_user.state = 'request_password_reset'
token = generate_token(mock_api_user.email_address)
response = client.post(url_for('.new_password', token=token), data={'new_password': 'a-new_password'})
assert response.status_code == 302
assert response.location == url_for('.two_factor', _external=True)
@@ -49,25 +50,29 @@ def test_should_redirect_to_two_factor_when_password_reset_is_successful(app_,
def test_should_redirect_to_forgot_password_with_flash_message_when_token_is_expired(app_,
db_,
db_session):
db_session,
mock_api_user):
with app_.test_request_context():
with app_.test_client() as client:
app_.config['TOKEN_MAX_AGE_SECONDS'] = -1000
user = create_test_user('request_password_reset')
token = generate_token(user.email_address)
mock_api_user.state = 'request_password_reset'
token = generate_token(mock_api_user.email_address)
response = client.post(url_for('.new_password', token=token), data={'new_password': 'a-new_password'})
assert response.status_code == 302
assert response.location == url_for('.forgot_password', _external=True)
app_.config['TOKEN_MAX_AGE_SECONDS'] = 3600
def test_should_redirect_to_forgot_password_when_user_is_active_should_be_request_password_reset(app_,
db_,
db_session):
@pytest.mark.xfail(reason='Password reset not implemented')
def test_should_redirect_to_forgot_pass_when_user_active_should_be_request_passw_reset(app_,
db_,
db_session,
mock_api_user,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
user = create_test_user('active')
token = generate_token(user.email_address)
mock_api_user.state = 'request_password_reset'
token = generate_token(mock_api_user.email_address)
response = client.post(url_for('.new_password', token=token), data={'new_password': 'a-new_password'})
assert response.status_code == 302
assert response.location == url_for('.index', _external=True)

View File

@@ -3,11 +3,11 @@ from flask import url_for
from tests.conftest import mock_register_user as mock_user
def test_render_register_returns_template_with_form(app_, db_, db_session):
response = app_.test_client().get('/register')
# def test_render_register_returns_template_with_form(app_, db_, db_session):
# response = app_.test_client().get('/register')
assert response.status_code == 200
assert 'Create an account' in response.get_data(as_text=True)
# assert response.status_code == 200
# assert 'Create an account' in response.get_data(as_text=True)
def test_process_register_creates_new_user(app_,
@@ -15,7 +15,8 @@ def test_process_register_creates_new_user(app_,
db_session,
mock_send_sms,
mock_send_email,
mock_register_user):
mock_register_user,
mock_user_by_email_not_found):
user_data = {
'name': 'Some One Valid',
'email_address': 'someone@example.gov.uk',
@@ -34,7 +35,8 @@ def test_process_register_returns_400_when_mobile_number_is_invalid(app_,
db_,
db_session,
mock_send_sms,
mock_send_email):
mock_send_email,
mock_user_by_email_not_found):
response = app_.test_client().post('/register',
data={'name': 'Bad Mobile',
'email_address': 'bad_mobile@example.gov.uk',
@@ -49,7 +51,8 @@ def test_should_return_400_when_email_is_not_gov_uk(app_,
db_,
db_session,
mock_send_sms,
mock_send_email):
mock_send_email,
mock_user_by_email_not_found):
response = app_.test_client().post('/register',
data={'name': 'Bad Mobile',
'email_address': 'bad_mobile@example.not.right',
@@ -65,7 +68,9 @@ def test_should_add_verify_codes_on_session(app_,
db_session,
mock_send_sms,
mock_send_email,
mock_register_user):
mock_register_user,
mock_user_loader,
mock_user_by_email_not_found):
user_data = {
'name': 'Test Codes',
'email_address': 'test@example.gov.uk',
@@ -80,7 +85,7 @@ def test_should_add_verify_codes_on_session(app_,
assert 'notify_admin_session' in response.headers.get('Set-Cookie')
def test_should_return_400_if_password_is_blacklisted(app_, db_, db_session):
def test_should_return_400_if_password_is_blacklisted(app_, db_, db_session, mock_user_by_email_not_found):
response = app_.test_client().post('/register',
data={'name': 'Bad Mobile',
'email_address': 'bad_mobile@example.not.right',

View File

@@ -1,10 +1,11 @@
from flask import (url_for, session)
def test_should_show_overview(app_, db_, db_session, active_user, mock_get_service, mock_user_loader):
def test_should_show_overview(app_, db_, db_session, mock_api_user, mock_get_service,
mock_user_loader, mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
response = client.get(url_for(
'main.service_settings', service_id=service_id))
@@ -16,10 +17,11 @@ def test_should_show_overview(app_, db_, db_session, active_user, mock_get_servi
assert mock_get_service.called
def test_should_show_service_name(app_, db_, db_session, active_user, mock_get_service, mock_user_loader):
def test_should_show_service_name(app_, db_, db_session, mock_api_user, mock_get_service,
mock_user_loader, mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
response = client.get(url_for(
'main.service_name_change', service_id=service_id))
@@ -30,11 +32,11 @@ def test_should_show_service_name(app_, db_, db_session, active_user, mock_get_s
service = mock_get_service.side_effect(service_id)['data']
def test_should_redirect_after_change_service_name(app_, db_, db_session, active_user, mock_get_service,
mock_user_loader):
def test_should_redirect_after_change_service_name(app_, db_, db_session, mock_api_user, mock_get_service,
mock_user_loader, mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
response = client.post(url_for(
'main.service_name_change', service_id=service_id))
@@ -49,12 +51,13 @@ def test_should_redirect_after_change_service_name(app_, db_, db_session, active
def test_should_show_service_name_confirmation(app_,
db_,
db_session,
active_user,
mock_api_user,
mock_get_service,
mock_user_loader):
mock_user_loader,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
response = client.get(url_for(
'main.service_name_change_confirm', service_id=service_id))
@@ -68,13 +71,14 @@ def test_should_show_service_name_confirmation(app_,
def test_should_redirect_after_service_name_confirmation(app_,
db_,
db_session,
active_user,
mock_api_user,
mock_get_service,
mock_update_service,
mock_user_loader):
mock_user_loader,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
service_new_name = 'New Name'
with client.session_transaction() as session:
@@ -91,10 +95,11 @@ def test_should_redirect_after_service_name_confirmation(app_,
assert mock_update_service.called
def test_should_show_request_to_go_live(app_, db_, db_session, active_user, mock_get_service, mock_user_loader):
def test_should_show_request_to_go_live(app_, db_, db_session, mock_api_user, mock_get_service,
mock_user_loader, mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
response = client.get(
url_for('main.service_request_to_go_live', service_id=service_id))
@@ -108,13 +113,14 @@ def test_should_show_request_to_go_live(app_, db_, db_session, active_user, mock
def test_should_redirect_after_request_to_go_live(app_,
db_,
db_session,
active_user,
mock_api_user,
mock_get_service,
mock_update_service,
mock_user_loader):
mock_user_loader,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
response = client.post(url_for(
'main.service_request_to_go_live', service_id=service_id))
@@ -127,10 +133,11 @@ def test_should_redirect_after_request_to_go_live(app_,
assert mock_update_service.called
def test_should_show_status_page(app_, db_, db_session, active_user, mock_get_service, mock_user_loader):
def test_should_show_status_page(app_, db_, db_session, mock_api_user, mock_get_service,
mock_user_loader, mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
response = client.get(url_for(
'main.service_status_change', service_id=service_id))
@@ -144,12 +151,13 @@ def test_should_show_status_page(app_, db_, db_session, active_user, mock_get_se
def test_should_show_redirect_after_status_change(app_,
db_,
db_session,
active_user,
mock_api_user,
mock_get_service,
mock_user_loader):
mock_user_loader,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
response = client.post(url_for(
'main.service_status_change', service_id=service_id))
@@ -161,10 +169,11 @@ def test_should_show_redirect_after_status_change(app_,
assert mock_get_service.called
def test_should_show_status_confirmation(app_, db_, db_session, active_user, mock_get_service, mock_user_loader):
def test_should_show_status_confirmation(app_, db_, db_session, mock_api_user, mock_get_service,
mock_user_loader, mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
response = client.get(url_for(
'main.service_status_change_confirm', service_id=service_id))
@@ -178,13 +187,14 @@ def test_should_show_status_confirmation(app_, db_, db_session, active_user, moc
def test_should_redirect_after_status_confirmation(app_,
db_,
db_session,
active_user,
mock_api_user,
mock_get_service,
mock_update_service,
mock_user_loader):
mock_user_loader,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
response = client.post(url_for(
'main.service_status_change_confirm', service_id=service_id))
@@ -197,10 +207,11 @@ def test_should_redirect_after_status_confirmation(app_,
assert mock_update_service.called
def test_should_show_delete_page(app_, db_, db_session, active_user, mock_get_service, mock_user_loader):
def test_should_show_delete_page(app_, db_, db_session, mock_api_user, mock_get_service,
mock_user_loader, mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
response = client.get(url_for(
'main.service_delete', service_id=service_id))
@@ -210,11 +221,11 @@ def test_should_show_delete_page(app_, db_, db_session, active_user, mock_get_se
assert mock_get_service.called
def test_should_show_redirect_after_deleting_service(app_, db_, db_session, active_user, mock_get_service,
mock_user_loader):
def test_should_show_redirect_after_deleting_service(app_, db_, db_session, mock_api_user, mock_get_service,
mock_user_loader, mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
response = client.post(url_for(
'main.service_delete', service_id=service_id))
@@ -225,10 +236,11 @@ def test_should_show_redirect_after_deleting_service(app_, db_, db_session, acti
assert delete_url == response.location
def test_should_show_delete_confirmation(app_, db_, db_session, active_user, mock_get_service, mock_user_loader):
def test_should_show_delete_confirmation(app_, db_, db_session, mock_api_user, mock_get_service,
mock_user_loader, mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
response = client.get(url_for(
'main.service_delete_confirm', service_id=service_id))
@@ -241,13 +253,14 @@ def test_should_show_delete_confirmation(app_, db_, db_session, active_user, moc
def test_should_redirect_delete_confirmation(app_,
db_,
db_session,
active_user,
mock_api_user,
mock_get_service,
mock_delete_service,
mock_user_loader):
mock_user_loader,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
response = client.post(url_for(
'main.service_delete_confirm', service_id=service_id))

View File

@@ -4,6 +4,8 @@ from app.main.dao import users_dao
from app.models import User
from flask import url_for
import pytest
def test_render_sign_in_returns_sign_in_template(app_):
with app_.test_request_context():
@@ -19,15 +21,11 @@ def test_process_sign_in_return_2fa_template(app_,
db_,
db_session,
mock_send_sms,
mock_send_email):
user = User(email_address='valid@example.gov.uk',
password='val1dPassw0rd!',
mobile_number='+441234123123',
name='valid',
created_at=datetime.now(),
role_id=1,
state='active')
users_dao.insert_user(user)
mock_send_email,
mock_user_dao_get_user,
mock_user_loader,
mock_user_dao_get_by_email,
mock_user_dao_checkpassword):
with app_.test_request_context():
response = app_.test_client().post(
url_for('main.sign_in'), data={
@@ -37,17 +35,12 @@ def test_process_sign_in_return_2fa_template(app_,
assert response.location == 'http://localhost/two-factor'
@pytest.mark.xfail(reason='User failed logins not implemented yet')
def test_should_return_locked_out_true_when_user_is_locked(app_,
db_,
db_session):
user = User(email_address='valid@example.gov.uk',
password='val1dPassw0rd!',
mobile_number='+441234123123',
name='valid',
created_at=datetime.now(),
role_id=1,
state='active')
users_dao.insert_user(user)
db_session,
mock_user_dao_get_user,
mock_inactive_user_dao_get_by_email):
with app_.test_request_context():
for _ in range(10):
app_.test_client().post(
@@ -71,51 +64,47 @@ def test_should_return_locked_out_true_when_user_is_locked(app_,
assert 'Username or password is incorrect' in response.get_data(as_text=True)
def test_should_return_active_user_is_false_if_user_is_inactive(app_,
db_,
db_session):
user = User(email_address='inactive_user@example.gov.uk',
password='val1dPassw0rd!',
mobile_number='+441234123123',
name='inactive user',
created_at=datetime.now(),
role_id=1,
state='inactive')
users_dao.insert_user(user)
# @pytest.mark.xfail(reason='User failed logins not implemented yet')
# def test_should_return_active_user_is_false_if_user_is_inactive(app_,
# db_,
# db_session,
# mock_user_dao_get_user,
# mock_inactive_user_dao_get_by_email):
# with app_.test_request_context():
# response = app_.test_client().post(
# url_for('main.sign_in'), data={
# 'email_address': 'inactive_user@example.gov.uk',
# 'password': 'val1dPassw0rd!'})
with app_.test_request_context():
response = app_.test_client().post(
url_for('main.sign_in'), data={
'email_address': 'inactive_user@example.gov.uk',
'password': 'val1dPassw0rd!'})
assert response.status_code == 200
assert 'Username or password is incorrect' in response.get_data(as_text=True)
# assert response.status_code == 200
# assert 'Username or password is incorrect' in response.get_data(as_text=True)
def test_should_return_200_when_user_does_not_exist(app_, db_, db_session):
with app_.test_request_context():
response = app_.test_client().post(
url_for('main.sign_in'), data={
'email_address': 'does_not_exist@gov.uk',
'password': 'doesNotExist!'})
assert response.status_code == 200
assert 'Username or password is incorrect' in response.get_data(as_text=True)
# def test_should_return_200_when_user_does_not_exist(app_, db_, db_session,
# mock_user_dao_get_user,
# mock_user_dao_get_by_email):
# with app_.test_request_context():
# response = app_.test_client().post(
# url_for('main.sign_in'), data={
# 'email_address': 'does_not_exist@gov.uk',
# 'password': 'doesNotExist!'})
# assert response.status_code == 200
# assert 'Username or password is incorrect' in response.get_data(as_text=True)
def test_should_return_200_when_user_is_not_active(app_, db_, db_session):
user = User(email_address='PendingUser@example.gov.uk',
password='val1dPassw0rd!',
mobile_number='+441234123123',
name='pending user',
created_at=datetime.now(),
role_id=1,
state='pending')
users_dao.insert_user(user)
with app_.test_request_context():
response = app_.test_client().post(
url_for('main.sign_in'), data={
'email_address': 'PendingUser@example.gov.uk',
'password': 'val1dPassw0rd!'})
assert response.status_code == 200
assert 'Username or password is incorrect' in response.get_data(as_text=True)
# def test_should_return_200_when_user_is_not_active(app_, db_, db_session):
# user = User(email_address='PendingUser@example.gov.uk',
# password='val1dPassw0rd!',
# mobile_number='+441234123123',
# name='pending user',
# created_at=datetime.now(),
# role_id=1,
# state='pending')
# users_dao.insert_user(user)
# with app_.test_request_context():
# response = app_.test_client().post(
# url_for('main.sign_in'), data={
# 'email_address': 'PendingUser@example.gov.uk',
# 'password': 'val1dPassw0rd!'})
# assert response.status_code == 200
# assert 'Username or password is incorrect' in response.get_data(as_text=True)

View File

@@ -19,20 +19,14 @@ def test_sign_out_user(app_,
mock_send_sms,
mock_send_email,
mock_get_service,
mock_user_loader):
mock_api_user,
mock_user_loader,
mock_user_dao_get_by_email):
with app_.test_request_context():
email = 'valid@example.gov.uk'
password = 'val1dPassw0rd!'
user = User(email_address=email,
password=password,
mobile_number='+441234123123',
name='valid',
created_at=datetime.now(),
role_id=1,
state='active')
users_dao.insert_user(user)
with app_.test_client() as client:
client.login(user)
client.login(mock_api_user)
# Check we are logged in
response = client.get(
url_for('main.service_dashboard', service_id="123"))

View File

@@ -4,11 +4,13 @@ from flask import url_for
import moto
def test_upload_empty_csvfile_returns_to_upload_page(app_, db_, db_session, active_user,
mock_user_loader):
def test_upload_empty_csvfile_returns_to_upload_page(app_, db_, db_session,
mock_api_user,
mock_user_loader,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
upload_data = {'file': (BytesIO(''.encode('utf-8')), 'emtpy.csv')}
response = client.post(url_for('main.send_sms', service_id=123),
data=upload_data, follow_redirects=True)
@@ -23,15 +25,16 @@ def test_upload_csvfile_with_invalid_phone_shows_check_page_with_errors(app_,
db_,
db_session,
mocker,
active_user,
mock_user_loader):
mock_api_user,
mock_user_loader,
mock_user_dao_get_by_email):
contents = 'phone\n+44 123\n+44 456'
file_data = (BytesIO(contents.encode('utf-8')), 'invalid.csv')
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
upload_data = {'file': file_data}
response = client.post(url_for('main.send_sms', service_id=123),
data=upload_data,
@@ -49,8 +52,9 @@ def test_upload_csvfile_with_valid_phone_shows_first3_and_last3_numbers(app_,
db_,
db_session,
mocker,
active_user,
mock_user_loader):
mock_api_user,
mock_user_loader,
mock_user_dao_get_by_email):
contents = 'phone\n+44 7700 900981\n+44 7700 900982\n+44 7700 900983\n+44 7700 900984\n+44 7700 900985\n+44 7700 900986\n+44 7700 900987\n+44 7700 900988\n+44 7700 900989' # noqa
@@ -58,7 +62,7 @@ def test_upload_csvfile_with_valid_phone_shows_first3_and_last3_numbers(app_,
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
upload_data = {'file': file_data}
response = client.post(url_for('main.send_sms', service_id=123),
data=upload_data,
@@ -86,8 +90,9 @@ def test_upload_csvfile_with_valid_phone_shows_all_if_6_or_less_numbers(app_,
db_,
db_session,
mocker,
active_user,
mock_user_loader):
mock_api_user,
mock_user_loader,
mock_user_dao_get_by_email):
contents = 'phone\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
@@ -95,7 +100,7 @@ def test_upload_csvfile_with_valid_phone_shows_all_if_6_or_less_numbers(app_,
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
upload_data = {'file': file_data}
response = client.post(url_for('main.send_sms', service_id=123),
data=upload_data,
@@ -115,10 +120,11 @@ def test_upload_csvfile_with_valid_phone_shows_all_if_6_or_less_numbers(app_,
@moto.mock_s3
def test_should_redirect_to_job(app_, db_, db_session, mocker, active_user, mock_user_loader):
def test_should_redirect_to_job(app_, db_, db_session, mocker, mock_api_user,
mock_user_loader, mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
response = client.post(url_for('main.check_sms',
service_id=123,
upload_id='someid'))

View File

@@ -5,12 +5,13 @@ from flask import url_for
def test_should_return_list_of_all_templates(app_,
db_,
db_session,
active_user,
mock_api_user,
mock_get_service_templates,
mock_user_loader):
mock_user_loader,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
response = client.get(url_for(
'.manage_service_templates', service_id=service_id))
@@ -22,12 +23,13 @@ def test_should_return_list_of_all_templates(app_,
def test_should_show_page_for_one_templates(app_,
db_,
db_session,
active_user,
mock_api_user,
mock_get_service_template,
mock_user_loader):
mock_user_loader,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
template_id = 456
response = client.get(url_for(
@@ -43,13 +45,14 @@ def test_should_show_page_for_one_templates(app_,
def test_should_redirect_when_saving_a_template(app_,
db_,
db_session,
active_user,
mock_api_user,
mock_get_service_template,
mock_update_service_template,
mock_user_loader):
mock_user_loader,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
template_id = 456
name = "new name"
@@ -77,12 +80,13 @@ def test_should_redirect_when_saving_a_template(app_,
def test_should_show_delete_template_page(app_,
db_,
db_session,
active_user,
mock_api_user,
mock_get_service_template,
mock_user_loader):
mock_user_loader,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
template_id = 456
response = client.get(url_for(
@@ -99,13 +103,14 @@ def test_should_show_delete_template_page(app_,
def test_should_redirect_when_deleting_a_template(app_,
db_,
db_session,
active_user,
mock_api_user,
mock_get_service_template,
mock_delete_service_template,
mock_user_loader):
mock_user_loader,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
client.login(active_user)
client.login(mock_api_user)
service_id = 123
template_id = 456
name = "new name"

View File

@@ -4,26 +4,24 @@ from app.main.dao import verify_codes_dao
from tests import create_test_user
def test_should_render_two_factor_page(app_, db_, db_session):
def test_should_render_two_factor_page(app_, db_, db_session, mock_api_user, mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
# TODO this lives here until we work out how to
# reassign the session after it is lost mid register process
with client.session_transaction() as session:
user = create_test_user('pending')
session['user_email'] = user.email_address
session['user_email'] = mock_api_user.email_address
response = client.get(url_for('main.two_factor'))
assert response.status_code == 200
assert '''We've sent you a text message with a verification code.''' in response.get_data(as_text=True)
def test_should_login_user_and_redirect_to_dashboard(app_, db_, db_session):
def test_should_login_user_and_redirect_to_dashboard(app_, db_, db_session, mock_api_user, mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
with client.session_transaction() as session:
user = create_test_user('active')
session['user_email'] = user.email_address
verify_codes_dao.add_code(user_id=user.id, code='12345', code_type='sms')
session['user_email'] = mock_api_user.email_address
verify_codes_dao.add_code(user_id=mock_api_user.id, code='12345', code_type='sms')
response = client.post(url_for('main.two_factor'),
data={'sms_code': '12345'})
@@ -33,13 +31,14 @@ def test_should_login_user_and_redirect_to_dashboard(app_, db_, db_session):
def test_should_return_200_with_sms_code_error_when_sms_code_is_wrong(app_,
db_,
db_session):
db_session,
mock_api_user,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
with client.session_transaction() as session:
user = create_test_user('active')
session['user_email'] = user.email_address
verify_codes_dao.add_code(user_id=user.id, code='12345', code_type='sms')
session['user_email'] = mock_api_user.email_address
verify_codes_dao.add_code(user_id=mock_api_user.id, code='12345', code_type='sms')
response = client.post(url_for('main.two_factor'),
data={'sms_code': '23456'})
assert response.status_code == 200
@@ -48,19 +47,20 @@ def test_should_return_200_with_sms_code_error_when_sms_code_is_wrong(app_,
def test_should_login_user_when_multiple_valid_codes_exist(app_,
db_,
db_session):
db_session,
mock_api_user,
mock_user_dao_get_by_email):
with app_.test_request_context():
with app_.test_client() as client:
with client.session_transaction() as session:
user = create_test_user('active')
session['user_email'] = user.email_address
verify_codes_dao.add_code(user_id=user.id, code='23456', code_type='sms')
verify_codes_dao.add_code(user_id=user.id, code='12345', code_type='sms')
verify_codes_dao.add_code(user_id=user.id, code='34567', code_type='sms')
assert len(verify_codes_dao.get_codes(user_id=user.id, code_type='sms')) == 3
session['user_email'] = mock_api_user.email_address
verify_codes_dao.add_code(user_id=mock_api_user.id, code='23456', code_type='sms')
verify_codes_dao.add_code(user_id=mock_api_user.id, code='12345', code_type='sms')
verify_codes_dao.add_code(user_id=mock_api_user.id, code='34567', code_type='sms')
assert len(verify_codes_dao.get_codes(user_id=mock_api_user.id, code_type='sms')) == 3
response = client.post(url_for('main.two_factor'),
data={'sms_code': '23456'})
assert response.status_code == 302
codes = verify_codes_dao.get_codes(user_id=user.id, code_type='sms')
codes = verify_codes_dao.get_codes(user_id=mock_api_user.id, code_type='sms')
# query will only return codes where code_used == False
assert len(codes) == 0