[ckan-changes] commit/ckan: amercader: Fix for #1030. User can not login again if he has edited his profile

Bitbucket commits-noreply at bitbucket.org
Thu Sep 1 18:10:12 UTC 2011


1 new changeset in ckan:

http://bitbucket.org/okfn/ckan/changeset/7637d8694388/
changeset:   7637d8694388
user:        amercader
date:        2011-09-01 20:09:54
summary:     Fix for #1030. User can not login again if he has edited his profile
affected #:  2 files (2.1 KB)

--- a/ckan/lib/dictization/model_save.py	Thu Sep 01 17:02:04 2011 +0100
+++ b/ckan/lib/dictization/model_save.py	Thu Sep 01 19:09:54 2011 +0100
@@ -320,6 +320,9 @@
     User = model.User
     if user:
         user_dict['id'] = user.id
+    
+    if 'password' in user_dict and not len(user_dict['password']):
+        del user_dict['password']
 
     user = table_dict_save(user_dict, User, context)
 


--- a/ckan/tests/functional/test_user.py	Thu Sep 01 17:02:04 2011 +0100
+++ b/ckan/tests/functional/test_user.py	Thu Sep 01 19:09:54 2011 +0100
@@ -416,6 +416,59 @@
         main_res = self.main_div(res)
         assert new_about in main_res, main_res
 
+    def test_user_edit_no_password(self):
+        # create user
+        username = 'testedit2'
+        about = u'Test About'
+        user = model.User.by_name(unicode(username))
+        if not user:
+            model.Session.add(model.User(name=unicode(username), about=about,
+                                         password='letmein'))
+            model.repo.commit_and_remove()
+            user = model.User.by_name(unicode(username))
+
+        old_password = user.password    
+
+        # edit
+        new_about = u'Changed about'
+        offset = url_for(controller='user', action='edit', id=user.id)
+        res = self.app.get(offset, status=200, extra_environ={'REMOTE_USER':username})
+        main_res = self.main_div(res)
+        assert 'Edit User: ' in main_res, main_res
+        assert about in main_res, main_res
+        fv = res.forms['user-edit']
+        fv['about'] = new_about
+        fv['password1'] = ''
+        fv['password2'] = ''
+
+        res = fv.submit('preview', extra_environ={'REMOTE_USER':username})
+        
+        # preview
+        main_res = self.main_div(res)
+        assert 'Edit User: testedit2' in main_res, main_res
+        in_preview = main_res[main_res.find('Preview'):]
+        assert new_about in in_preview, in_preview
+
+        # commit
+        res = fv.submit('save', extra_environ={'REMOTE_USER':username})      
+        assert res.status == 302, self.main_div(res).encode('utf8')
+        res = res.follow()
+        main_res = self.main_div(res)
+        assert 'testedit2' in main_res, main_res
+        assert new_about in main_res, main_res
+
+        # read, not logged in
+        offset = url_for(controller='user', action='read', id=user.id)
+        res = self.app.get(offset, status=200)
+        main_res = self.main_div(res)
+        assert new_about in main_res, main_res
+
+        updated_user = model.User.by_name(unicode(username))
+        new_password = updated_user.password
+
+        # Ensure password has not changed
+        assert old_password == new_password
+
     def test_user_edit_no_user(self):
         offset = url_for(controller='user', action='edit', id=None)
         res = self.app.get(offset, status=400)

Repository URL: https://bitbucket.org/okfn/ckan/

--

This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.




More information about the ckan-changes mailing list