Fix reset password flow

It was broken because of mismatch in update password argument
This commit is contained in:
Pea Tyczynska
2020-02-18 14:28:03 +00:00
parent 583213c29f
commit 3a93fe6892
6 changed files with 11 additions and 9 deletions

View File

@@ -96,7 +96,7 @@ def log_in_user(user_id):
session['current_session_id'] = user.current_session_id session['current_session_id'] = user.current_session_id
# Check if coming from new password page # Check if coming from new password page
if 'password' in session.get('user_details', {}): if 'password' in session.get('user_details', {}):
user.update_password(session['user_details']['password'], from_email=True) user.update_password(session['user_details']['password'], validated_email_access=True)
user.activate() user.activate()
user.login() user.login()
finally: finally:

View File

@@ -106,8 +106,8 @@ class User(JSONModel, UserMixin):
response = user_api_client.update_user_attribute(self.id, **kwargs) response = user_api_client.update_user_attribute(self.id, **kwargs)
self.__init__(response) self.__init__(response)
def update_password(self, password, from_email=False): def update_password(self, password, validated_email_access=False):
response = user_api_client.update_password(self.id, password, from_email=from_email) response = user_api_client.update_password(self.id, password, validated_email_access=validated_email_access)
self.__init__(response) self.__init__(response)
def password_changed_more_recently_than(self, datetime_string): def password_changed_more_recently_than(self, datetime_string):

View File

@@ -75,10 +75,10 @@ class UserApiClient(NotifyAdminAPIClient):
return user_data['data'] return user_data['data']
@cache.delete('user-{user_id}') @cache.delete('user-{user_id}')
def update_password(self, user_id, password, from_email=False): def update_password(self, user_id, password, validated_email_access=False):
data = {"_password": password} data = {"_password": password}
if from_email: if validated_email_access:
data["from_email"] = from_email data["validated_email_access"] = validated_email_access
url = "/user/{}/update-password".format(user_id) url = "/user/{}/update-password".format(user_id)
user_data = self.post(url, data=data) user_data = self.post(url, data=data)
return user_data['data'] return user_data['data']

View File

@@ -112,6 +112,6 @@ def test_should_sign_in_when_password_reset_is_successful_for_email_auth(
# the log-in flow makes a couple of calls # the log-in flow makes a couple of calls
mock_get_user.assert_called_once_with(user['id']) mock_get_user.assert_called_once_with(user['id'])
mock_update_user_password.assert_called_once_with(user['id'], 'a-new_password', from_email=True) mock_update_user_password.assert_called_once_with(user['id'], 'a-new_password', validated_email_access=True)
assert not mock_send_verify_code.called assert not mock_send_verify_code.called

View File

@@ -191,7 +191,9 @@ def test_two_factor_should_set_password_when_new_password_exists_in_session(
assert response.status_code == 302 assert response.status_code == 302
assert response.location == url_for('main.show_accounts_or_dashboard', _external=True) assert response.location == url_for('main.show_accounts_or_dashboard', _external=True)
mock_update_user_password.assert_called_once_with(api_user_active['id'], 'changedpassword', from_email=True) mock_update_user_password.assert_called_once_with(
api_user_active['id'], 'changedpassword', validated_email_access=True
)
def test_two_factor_returns_error_when_user_is_locked( def test_two_factor_returns_error_when_user_is_locked(

View File

@@ -1515,7 +1515,7 @@ def mock_verify_password(mocker):
@pytest.fixture(scope='function') @pytest.fixture(scope='function')
def mock_update_user_password(mocker, api_user_active): def mock_update_user_password(mocker, api_user_active):
def _update(user_id, password, from_email=False): def _update(user_id, password, validated_email_access=False):
api_user_active['id'] = user_id api_user_active['id'] = user_id
return api_user_active return api_user_active