From bd8bb3c926999ad1cb722e32d5ae128a882713f9 Mon Sep 17 00:00:00 2001
From: Rebecca Law Check your email address is correct and then resend the confirmation code.
-
-
- Your email address must end in .gov.uk
+
Check your mobile phone number is correct and then resend the confirmation code.
+ diff --git a/tests/app/main/dao/test_users_dao.py b/tests/app/main/dao/test_users_dao.py index 10b01052f..f169a7fd9 100644 --- a/tests/app/main/dao/test_users_dao.py +++ b/tests/app/main/dao/test_users_dao.py @@ -144,3 +144,20 @@ def test_should_throws_error_when_id_does_not_exist(notifications_admin, notific with pytest.raises(AttributeError) as error: users_dao.activate_user(123) assert '''object has no attribute 'state''''' in str(error.value) + + +def test_should_update_email_address(notifications_admin, notifications_admin_db, notify_db_session): + user = User(name='Update Email', + password='somepassword', + email_address='test@it.gov.uk', + mobile_number='+441234123412', + created_at=datetime.now(), + role_id=1, + state='inactive') + users_dao.insert_user(user) + + saved = users_dao.get_user_by_id(user.id) + assert saved.email_address == 'test@it.gov.uk' + users_dao.update_email_address(user.id, 'new_email@testit.gov.uk') + updated = users_dao.get_user_by_id(user.id) + assert updated.email_address == 'new_email@testit.gov.uk' diff --git a/tests/app/main/views/test_code_not_received.py b/tests/app/main/views/test_code_not_received.py index bab907fdd..50d2d8806 100644 --- a/tests/app/main/views/test_code_not_received.py +++ b/tests/app/main/views/test_code_not_received.py @@ -1,18 +1,107 @@ -def test_should_render_email_code_not_received_template(notifications_admin): - response = notifications_admin.test_client().get('/email-not-received') - assert response.status_code == 200 - assert 'Check your email address is correct and then resend the confirmation code' \ - in response.get_data(as_text=True) +from app import admin_api_client +from app.main.dao import verify_codes_dao, users_dao +from tests.app.main import create_test_user -# def test_should_check_and_resend_email_code(notifications_admin, notifications_admin_db, notify_db_session): -# response = notifications_admin.test_client().post('/email-not-received', -# data={'email_adddress': 'test@user.gov.uk'}) -# assert response is None +def test_should_render_email_code_not_received_template_and_populate_email_address(notifications_admin, + notifications_admin_db, + notify_db_session): + with notifications_admin.test_client() as client: + with client.session_transaction() as session: + user = create_test_user() + session['user_id'] = user.id + response = client.get('/email-not-received') + assert response.status_code == 200 + assert 'Check your email address is correct and then resend the confirmation code' \ + in response.get_data(as_text=True) + assert 'value="test@user.gov.uk"' in response.get_data(as_text=True) -def test_should_render_text_code_not_received_template(notifications_admin): - response = notifications_admin.test_client().get('/text-not-received') - assert response.status_code == 200 - assert 'Check your mobile phone number is correct and then resend the confirmation code.' \ - in response.get_data(as_text=True) +def test_should_check_and_resend_email_code_redirect_to_verify(notifications_admin, + notifications_admin_db, + notify_db_session, + mocker): + with notifications_admin.test_client() as client: + with client.session_transaction() as session: + _set_up_mocker(mocker) + user = create_test_user() + session['user_id'] = user.id + verify_codes_dao.add_code(user.id, code='12345', code_type='email') + response = client.post('/email-not-received', + data={'email_address': 'test@user.gov.uk'}) + assert response.status_code == 302 + assert response.location == 'http://localhost/verify' + + +def test_should_render_text_code_not_received_template(notifications_admin, + notifications_admin_db, + notify_db_session, + mocker): + with notifications_admin.test_client() as client: + with client.session_transaction() as session: + _set_up_mocker(mocker) + user = create_test_user() + session['user_id'] = user.id + verify_codes_dao.add_code(user.id, code='12345', code_type='email') + response = client.get('/text-not-received') + assert response.status_code == 200 + assert 'Check your mobile phone number is correct and then resend the confirmation code.' \ + in response.get_data(as_text=True) + assert 'value="+441234123412"' + + +def test_should_check_and_redirect_to_verify(notifications_admin, + notifications_admin_db, + notify_db_session, + mocker): + with notifications_admin.test_client() as client: + with client.session_transaction() as session: + _set_up_mocker(mocker) + user = create_test_user() + session['user_id'] = user.id + verify_codes_dao.add_code(user.id, code='12345', code_type='sms') + response = client.post('/text-not-received', + data={'mobile_number': '+441234123412'}) + assert response.status_code == 302 + assert response.location == 'http://localhost/verify' + + +def test_should_update_email_address_resend_code(notifications_admin, + notifications_admin_db, + notify_db_session, + mocker): + with notifications_admin.test_client() as client: + with client.session_transaction() as session: + _set_up_mocker(mocker) + user = create_test_user() + session['user_id'] = user.id + verify_codes_dao.add_code(user_id=user.id, code='12345', code_type='email') + response = client.post('/email-not-received', + data={'email_address': 'new@address.gov.uk'}) + assert response.status_code == 302 + assert response.location == 'http://localhost/verify' + updated_user = users_dao.get_user_by_id(user.id) + assert updated_user.email_address == 'new@address.gov.uk' + + +def test_should_update_mobile_number_resend_code(notifications_admin, + notifications_admin_db, + notify_db_session, + mocker): + with notifications_admin.test_client() as client: + with client.session_transaction() as session: + _set_up_mocker(mocker) + user = create_test_user() + session['user_id'] = user.id + verify_codes_dao.add_code(user_id=user.id, code='12345', code_type='sms') + response = client.post('/text-not-received', + data={'mobile_number': '+443456789012'}) + assert response.status_code == 302 + assert response.location == 'http://localhost/verify' + updated_user = users_dao.get_user_by_id(user.id) + assert updated_user.mobile_number == '+443456789012' + + +def _set_up_mocker(mocker): + mocker.patch("app.admin_api_client.send_sms") + mocker.patch("app.admin_api_client.send_email")