From 69994292981e641233967d4858b4a043c03cab83 Mon Sep 17 00:00:00 2001 From: Vitor Baptista Date: Wed, 14 Aug 2013 18:13:36 -0300 Subject: [PATCH] [#1178] The user is activated when it performs the reset password --- ckan/controllers/user.py | 1 + ckan/tests/functional/test_user.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/ckan/controllers/user.py b/ckan/controllers/user.py index e0b1ba6c762..4e76b098d37 100644 --- a/ckan/controllers/user.py +++ b/ckan/controllers/user.py @@ -479,6 +479,7 @@ def perform_reset(self, id): new_password = self._get_form_password() user_dict['password'] = new_password user_dict['reset_key'] = c.reset_key + user_dict['state'] = model.State.ACTIVE user = get_action('user_update')(context, user_dict) h.flash_success(_("Your password has been reset.")) diff --git a/ckan/tests/functional/test_user.py b/ckan/tests/functional/test_user.py index 16795561f46..f0ff38cfdac 100644 --- a/ckan/tests/functional/test_user.py +++ b/ckan/tests/functional/test_user.py @@ -955,3 +955,21 @@ def test_perform_reset_user_password_link_user_incorrect(self): id='randomness', # i.e. incorrect key='randomness') res = self.app.get(offset, status=404) + + def test_perform_reset_activates_pending_user(self): + password = 'password' + params = { 'password1': password, 'password2': password } + user = CreateTestData.create_user(name='username', + email='user@email.com') + user.set_pending() + create_reset_key(user) + assert user.is_pending(), user.state + + offset = url_for(controller='user', + action='perform_reset', + id=user.id, + key=user.reset_key) + res = self.app.post(offset, params=params, status=302) + + user = model.User.get(user.id) + assert user.is_active(), user