# HG changeset patch # User Marcin Kuzminski # Date 1290547868 -3600 # Node ID c366b237c91dcb01b23c9cf168443b02bf3344ba # Parent 3389f272ece1a12bd2cbd1d939d68d5d16a164d1 added test for username and email case senstitive validators, fixed valid username to take underscores diff -r 3389f272ece1 -r c366b237c91d rhodecode/model/forms.py --- a/rhodecode/model/forms.py Tue Nov 23 22:05:30 2010 +0100 +++ b/rhodecode/model/forms.py Tue Nov 23 22:31:08 2010 +0100 @@ -72,16 +72,17 @@ case_insensitive=True): raise formencode.Invalid(_('This username already exists') , value, state) - - - if re.match(r'^[a-zA-Z0-9]{1}[a-zA-Z0-9\-]+$', value) is None: + + + if re.match(r'^[a-zA-Z0-9]{1}[a-zA-Z0-9\-\_]+$', value) is None: raise formencode.Invalid(_('Username may only contain ' - 'alphanumeric characters ' - 'or dashes and cannot begin with a dash'), + 'alphanumeric characters underscores ' + 'or dashes and must begin with ' + 'alphanumeric character'), value, state) - - - + + + return _ValidUsername class ValidPassword(formencode.validators.FancyValidator): @@ -258,7 +259,6 @@ class _UniqSystemEmail(formencode.validators.FancyValidator): def to_python(self, value, state): value = value.lower() - #TODO:write test for MixedCase scenarios if old_data.get('email') != value: sa = meta.Session() try: diff -r 3389f272ece1 -r c366b237c91d rhodecode/tests/functional/test_login.py --- a/rhodecode/tests/functional/test_login.py Tue Nov 23 22:05:30 2010 +0100 +++ b/rhodecode/tests/functional/test_login.py Tue Nov 23 22:31:08 2010 +0100 @@ -79,6 +79,29 @@ assert response.status == '200 OK', 'Wrong response from register page got %s' % response.status assert 'This username already exists' in response.body + def test_register_err_same_email(self): + response = self.app.post(url(controller='login', action='register'), + {'username':'test_admin_0', + 'password':'test12', + 'password_confirmation':'test12', + 'email':'test_admin@mail.com', + 'name':'test', + 'lastname':'test'}) + + assert response.status == '200 OK', 'Wrong response from register page got %s' % response.status + assert 'That e-mail address is already taken' in response.body + + def test_register_err_same_email_case_sensitive(self): + response = self.app.post(url(controller='login', action='register'), + {'username':'test_admin_1', + 'password':'test12', + 'password_confirmation':'test12', + 'email':'TesT_Admin@mail.COM', + 'name':'test', + 'lastname':'test'}) + assert response.status == '200 OK', 'Wrong response from register page got %s' % response.status + assert 'That e-mail address is already taken' in response.body + def test_register_err_wrong_data(self): response = self.app.post(url(controller='login', action='register'), {'username':'xs', @@ -92,6 +115,35 @@ assert 'Enter a value 6 characters long or more' in response.body + def test_register_err_username(self): + response = self.app.post(url(controller='login', action='register'), + {'username':'error user', + 'password':'test12', + 'password_confirmation':'test12', + 'email':'goodmailm', + 'name':'test', + 'lastname':'test'}) + + print response.body + assert response.status == '200 OK', 'Wrong response from register page got %s' % response.status + assert 'An email address must contain a single @' in response.body + assert 'Username may only contain alphanumeric characters underscores or dashes and must begin with alphanumeric character' in response.body + + def test_register_err_case_sensitive(self): + response = self.app.post(url(controller='login', action='register'), + {'username':'Test_Admin', + 'password':'test12', + 'password_confirmation':'test12', + 'email':'goodmailm', + 'name':'test', + 'lastname':'test'}) + + assert response.status == '200 OK', 'Wrong response from register page got %s' % response.status + assert 'An email address must contain a single @' in response.body + assert 'This username already exists' in response.body + + + def test_register_special_chars(self): response = self.app.post(url(controller='login', action='register'), {'username':'xxxaxn',