diff --git a/app/notify_client/user_api_client.py b/app/notify_client/user_api_client.py index d340430bb..693a321f7 100644 --- a/app/notify_client/user_api_client.py +++ b/app/notify_client/user_api_client.py @@ -1,8 +1,5 @@ from notifications_python_client.notifications import BaseAPIClient -from notifications_python_client.errors import ( - HTTPError, - InvalidResponse -) +from notifications_python_client.errors import HTTPError from flask.ext.login import UserMixin @@ -34,6 +31,11 @@ class UserApiClient(BaseAPIClient): user_data = self.get(url) return User(user_data['data'], max_failed_login_count=self.max_failed_login_count) + def get_user_by_email(self, email_address): + params = {'email': email_address} + user_data = self.get('/user/email', params=params) + return User(user_data['data'], max_failed_login_count=self.max_failed_login_count) + def get_users(self): users_data = self.get("/user")['data'] users = [] @@ -57,13 +59,6 @@ class UserApiClient(BaseAPIClient): if e.status_code == 400 or e.status_code == 404: return False - def get_user_by_email(self, email_address): - users = self.get_users() - user = [u for u in users if u.email_address == email_address] - if len(user) == 1: - return user[0] - return None - def send_verify_code(self, user_id, code_type, to): data = {'to': to} endpoint = '/user/{0}/{1}-code'.format(user_id, code_type) diff --git a/tests/app/main/notify_client/test_user_client.py b/tests/app/main/notify_client/test_user_client.py new file mode 100644 index 000000000..433a36952 --- /dev/null +++ b/tests/app/main/notify_client/test_user_client.py @@ -0,0 +1,15 @@ +from app.notify_client.user_api_client import UserApiClient + + +def test_client_uses_correct_find_by_email(mocker, api_user_active): + + expected_url = '/user/email' + expected_params = {'email': api_user_active.email_address} + + client = UserApiClient() + client.max_failed_login_count = 1 # doesn't matter for this test + mock_get = mocker.patch('app.notify_client.user_api_client.UserApiClient.get') + + client.get_user_by_email(api_user_active.email_address) + + mock_get.assert_called_once_with(expected_url, params=expected_params)