# HG changeset patch # User Marcin Kuzminski # Date 1336514367 -7200 # Node ID 72542dc597bed17f15c597f8ebda48fb257cb909 # Parent 99536f257644ac086604d303a0899d7bde834588 fixed issue with empty APIKEYS on registration #438 diff -r 99536f257644 -r 72542dc597be docs/changelog.rst --- a/docs/changelog.rst Tue May 08 22:18:46 2012 +0200 +++ b/docs/changelog.rst Tue May 08 23:59:27 2012 +0200 @@ -38,6 +38,7 @@ - fixed remote-pulling for git remotes remopositories - fixed #434: Error when accessing files or changesets of a git repository with submodules +- fixed issue with empty APIKEYS for users after registration ref. #438 1.3.4 (**2012-03-28**) ---------------------- diff -r 99536f257644 -r 72542dc597be rhodecode/model/db.py --- a/rhodecode/model/db.py Tue May 08 22:18:46 2012 +0200 +++ b/rhodecode/model/db.py Tue May 08 23:59:27 2012 +0200 @@ -1233,7 +1233,8 @@ @property def recipients(self): return [x.user for x in UserNotification.query()\ - .filter(UserNotification.notification == self).all()] + .filter(UserNotification.notification == self)\ + .order_by(UserNotification.user).all()] @classmethod def create(cls, created_by, subject, body, recipients, type_=None): diff -r 99536f257644 -r 72542dc597be rhodecode/model/user.py --- a/rhodecode/model/user.py Tue May 08 22:18:46 2012 +0200 +++ b/rhodecode/model/user.py Tue May 08 23:59:27 2012 +0200 @@ -225,10 +225,8 @@ from rhodecode.model.notification import NotificationModel try: - new_user = User() - for k, v in form_data.items(): - if k != 'admin': - setattr(new_user, k, v) + form_data['admin'] = False + new_user = self.create(form_data) self.sa.add(new_user) self.sa.flush() diff -r 99536f257644 -r 72542dc597be rhodecode/tests/functional/test_login.py --- a/rhodecode/tests/functional/test_login.py Tue May 08 22:18:46 2012 +0200 +++ b/rhodecode/tests/functional/test_login.py Tue May 08 23:59:27 2012 +0200 @@ -54,7 +54,6 @@ self.assertEqual(response.status, '200 OK') self.assertTrue('Users administration' in response.body) - def test_login_short_password(self): response = self.app.post(url(controller='login', action='index'), {'username':'test_admin', @@ -101,7 +100,7 @@ 'lastname':'test'}) self.assertEqual(response.status , '200 OK') - assert 'This e-mail address is already taken' in response.body + response.mustcontain('This e-mail address is already taken') def test_register_err_same_email_case_sensitive(self): response = self.app.post(url(controller='login', action='register'), @@ -112,7 +111,7 @@ 'name':'test', 'lastname':'test'}) self.assertEqual(response.status , '200 OK') - assert 'This e-mail address is already taken' in response.body + response.mustcontain('This e-mail address is already taken') def test_register_err_wrong_data(self): response = self.app.post(url(controller='login', action='register'), @@ -123,9 +122,8 @@ 'name':'test', 'lastname':'test'}) self.assertEqual(response.status , '200 OK') - assert 'An email address must contain a single @' in response.body - assert 'Enter a value 6 characters long or more' in response.body - + response.mustcontain('An email address must contain a single @') + response.mustcontain('Enter a value 6 characters long or more') def test_register_err_username(self): response = self.app.post(url(controller='login', action='register'), @@ -137,11 +135,11 @@ 'lastname':'test'}) self.assertEqual(response.status , '200 OK') - assert 'An email address must contain a single @' in response.body - assert ('Username may only contain ' + response.mustcontain('An email address must contain a single @') + response.mustcontain('Username may only contain ' 'alphanumeric characters underscores, ' 'periods or dashes and must begin with ' - 'alphanumeric character') in response.body + 'alphanumeric character') def test_register_err_case_sensitive(self): response = self.app.post(url(controller='login', action='register'), @@ -156,8 +154,6 @@ self.assertTrue('An email address must contain a single @' in response.body) self.assertTrue('This username already exists' in response.body) - - def test_register_special_chars(self): response = self.app.post(url(controller='login', action='register'), {'username':'xxxaxn', @@ -170,7 +166,6 @@ self.assertEqual(response.status , '200 OK') self.assertTrue('Invalid characters in password' in response.body) - def test_register_password_mismatch(self): response = self.app.post(url(controller='login', action='register'), {'username':'xs', @@ -180,8 +175,8 @@ 'name':'test', 'lastname':'test'}) - self.assertEqual(response.status , '200 OK') - assert 'Passwords do not match' in response.body + self.assertEqual(response.status, '200 OK') + response.mustcontain('Passwords do not match') def test_register_ok(self): username = 'test_regular4' @@ -196,28 +191,32 @@ 'password_confirmation':password, 'email':email, 'name':name, - 'lastname':lastname}) - self.assertEqual(response.status , '302 Found') - assert 'You have successfully registered into rhodecode' in response.session['flash'][0], 'No flash message about user registration' + 'lastname':lastname, + 'admin':True}) # This should be overriden + self.assertEqual(response.status, '302 Found') + self.checkSessionFlash(response, 'You have successfully registered into rhodecode') ret = self.Session.query(User).filter(User.username == 'test_regular4').one() - assert ret.username == username , 'field mismatch %s %s' % (ret.username, username) - assert check_password(password, ret.password) == True , 'password mismatch' - assert ret.email == email , 'field mismatch %s %s' % (ret.email, email) - assert ret.name == name , 'field mismatch %s %s' % (ret.name, name) - assert ret.lastname == lastname , 'field mismatch %s %s' % (ret.lastname, lastname) - + self.assertEqual(ret.username, username) + self.assertEqual(check_password(password, ret.password), True) + self.assertEqual(ret.email, email) + self.assertEqual(ret.name, name) + self.assertEqual(ret.lastname, lastname) + self.assertNotEqual(ret.api_key, None) + self.assertEqual(ret.admin, False) def test_forgot_password_wrong_mail(self): - response = self.app.post(url(controller='login', action='password_reset'), - {'email':'marcin@wrongmail.org', }) + response = self.app.post( + url(controller='login', action='password_reset'), + {'email': 'marcin@wrongmail.org',} + ) - assert "This e-mail address doesn't exist" in response.body, 'Missing error message about wrong email' + response.mustcontain("This e-mail address doesn't exist") def test_forgot_password(self): response = self.app.get(url(controller='login', action='password_reset')) - self.assertEqual(response.status , '200 OK') + self.assertEqual(response.status, '200 OK') username = 'test_password_reset_1' password = 'qweqwe'