changeset 745:c366b237c91d beta

added test for username and email case senstitive validators, fixed valid username to take underscores
author Marcin Kuzminski <marcin@python-works.com>
date Tue, 23 Nov 2010 22:31:08 +0100
parents 3389f272ece1
children 18a3ca35d501
files rhodecode/model/forms.py rhodecode/tests/functional/test_login.py
diffstat 2 files changed, 61 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- 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:
--- 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',