Tell API what URL to use for email auth links

So that we can keep people on the prototype URL when doing user
research.

Depends on:
- [ ] https://github.com/alphagov/notifications-api/pull/1645
This commit is contained in:
Chris Hill-Scott
2018-02-09 15:01:20 +00:00
parent 5254aa6765
commit 1908e7b091
3 changed files with 23 additions and 0 deletions

View File

@@ -20,6 +20,7 @@ class UserApiClient(NotifyAdminAPIClient):
self.service_id = app.config['ADMIN_CLIENT_USER_NAME']
self.api_key = app.config['ADMIN_CLIENT_SECRET']
self.max_failed_login_count = app.config["MAX_FAILED_LOGIN_COUNT"]
self.admin_url = app.config['ADMIN_BASE_URL']
def register_user(self, name, email_address, mobile_number, password, auth_type):
data = {
@@ -93,6 +94,8 @@ class UserApiClient(NotifyAdminAPIClient):
data = {'to': to}
if next_string:
data['next'] = next_string
if code_type == 'email':
data['email_auth_link_host'] = self.admin_url
endpoint = '/user/{0}/{1}-code'.format(user_id, code_type)
self.post(endpoint, data=data)

View File

@@ -117,6 +117,7 @@ def test_process_email_auth_sign_in_return_2fa_template(
'password': 'val1dPassw0rd!'})
assert response.status_code == 302
assert response.location == url_for('.two_factor_email_sent', _external=True)
mock_send_verify_code.assert_called_with(api_user_active_email_auth.id, 'email', None)
mock_verify_password.assert_called_with(api_user_active_email_auth.id, 'val1dPassw0rd!')

View File

@@ -1,5 +1,6 @@
import pytest
from app import user_api_client
from app.notify_client.user_api_client import UserApiClient
@@ -52,3 +53,21 @@ def test_client_doesnt_activate_if_already_active(mocker, api_user_active):
client.activate_user(api_user_active)
assert not mock_post.called
def test_client_passes_admin_url_when_sending_email_auth(
app_,
mocker,
fake_uuid,
):
mock_post = mocker.patch('app.notify_client.user_api_client.UserApiClient.post')
user_api_client.send_verify_code(fake_uuid, 'email', 'ignored@example.com')
mock_post.assert_called_once_with(
'/user/{}/email-code'.format(fake_uuid),
data={
'to': 'ignored@example.com',
'email_auth_link_host': 'http://localhost:6012',
}
)