${em.email} |
+ + ${h.form(url('user_emails_delete', id=c.user.user_id),method='delete')} + ${h.hidden('del_email',em.email_id)} + ${h.submit('remove_',_('delete'),id="remove_email_%s" % em.email_id, + class_="delete_icon action_button", onclick="return confirm('"+_('Confirm to delete this email: %s') % em.email+"');")} + ${h.end_form()} + | +
${_('Compare View')}
+${subject}
${body} + +% if status_change is not None: +${_('Pull request reviewers')}
++
${_('Create new pull request')}
+ +${_('Title')}: ${c.pull_request.title}
+%s
""" % new_title in response.body) - def test_my_account(self): self.log_user() response = self.app.get(url('admin_settings_my_account')) @@ -132,12 +131,11 @@ class TestAdminSettingsController(TestCo new_lastname = 'NewLastname' new_password = 'test123' - response = self.app.post(url('admin_settings_my_account_update'), params=dict(_method='put', username='test_admin', new_password=new_password, - password_confirmation = new_password, + password_confirmation=new_password, password='', name=new_name, lastname=new_lastname, @@ -146,7 +144,7 @@ class TestAdminSettingsController(TestCo assert 'Your account was updated successfully' in response.session['flash'][0][1], 'no flash message about success of change' user = self.Session.query(User).filter(User.username == 'test_admin').one() - assert user.email == new_email , 'incorrect user email after update got %s vs %s' % (user.email, new_email) + assert user.email == new_email, 'incorrect user email after update got %s vs %s' % (user.email, new_email) assert user.name == new_name, 'updated field mismatch %s vs %s' % (user.name, new_name) assert user.lastname == new_lastname, 'updated field mismatch %s vs %s' % (user.lastname, new_lastname) assert check_password(new_password, user.password) is True, 'password field mismatch %s vs %s' % (user.password, new_password) @@ -161,7 +159,7 @@ class TestAdminSettingsController(TestCo _method='put', username='test_admin', new_password=old_password, - password_confirmation = old_password, + password_confirmation=old_password, password='', name=old_name, lastname=old_lastname, @@ -172,41 +170,46 @@ class TestAdminSettingsController(TestCo 'Your account was updated successfully') user = self.Session.query(User).filter(User.username == 'test_admin').one() - assert user.email == old_email , 'incorrect user email after update got %s vs %s' % (user.email, old_email) + assert user.email == old_email, 'incorrect user email after update got %s vs %s' % (user.email, old_email) - assert user.email == old_email , 'incorrect user email after update got %s vs %s' % (user.email, old_email) + assert user.email == old_email, 'incorrect user email after update got %s vs %s' % (user.email, old_email) assert user.name == old_name, 'updated field mismatch %s vs %s' % (user.name, old_name) assert user.lastname == old_lastname, 'updated field mismatch %s vs %s' % (user.lastname, old_lastname) - assert check_password(old_password, user.password) is True , 'password updated field mismatch %s vs %s' % (user.password, old_password) - + assert check_password(old_password, user.password) is True, 'password updated field mismatch %s vs %s' % (user.password, old_password) def test_my_account_update_err_email_exists(self): self.log_user() - new_email = 'test_regular@mail.com'#already exisitn email + new_email = 'test_regular@mail.com' # already exisitn email response = self.app.post(url('admin_settings_my_account_update'), params=dict( _method='put', username='test_admin', new_password='test12', - password_confirmation = 'test122', + password_confirmation='test122', name='NewName', lastname='NewLastname', email=new_email,)) assert 'This e-mail address is already taken' in response.body, 'Missing error message about existing email' - def test_my_account_update_err(self): self.log_user('test_regular2', 'test12') new_email = 'newmail.pl' - response = self.app.post(url('admin_settings_my_account_update'), params=dict( - _method='put', - username='test_admin', - new_password='test12', - password_confirmation = 'test122', - name='NewName', - lastname='NewLastname', - email=new_email,)) - assert 'An email address must contain a single @' in response.body, 'Missing error message about wrong email' - assert 'This username already exists' in response.body, 'Missing error message about existing user' + response = self.app.post(url('admin_settings_my_account_update'), + params=dict( + _method='put', + username='test_admin', + new_password='test12', + password_confirmation='test122', + name='NewName', + lastname='NewLastname', + email=new_email,) + ) + + response.mustcontain('An email address must contain a single @') + from rhodecode.model import validators + msg = validators.ValidUsername(edit=False, + old_data={})._messages['username_exists'] + msg = h.html_escape(msg % {'username': 'test_admin'}) + response.mustcontain(u"%s" % msg) diff --git a/rhodecode/tests/functional/test_admin_users.py b/rhodecode/tests/functional/test_admin_users.py --- a/rhodecode/tests/functional/test_admin_users.py +++ b/rhodecode/tests/functional/test_admin_users.py @@ -1,8 +1,12 @@ +from sqlalchemy.orm.exc import NoResultFound + from rhodecode.tests import * from rhodecode.model.db import User, Permission from rhodecode.lib.auth import check_password -from sqlalchemy.orm.exc import NoResultFound from rhodecode.model.user import UserModel +from rhodecode.model import validators +from rhodecode.lib import helpers as h + class TestAdminUsersController(TestController): @@ -24,26 +28,25 @@ class TestAdminUsersController(TestContr email = 'mail@mail.com' response = self.app.post(url('users'), - {'username':username, - 'password':password, - 'password_confirmation':password_confirmation, - 'name':name, - 'active':True, - 'lastname':lastname, - 'email':email}) + {'username': username, + 'password': password, + 'password_confirmation': password_confirmation, + 'name': name, + 'active': True, + 'lastname': lastname, + 'email': email}) + self.checkSessionFlash(response, '''created user %s''' % (username)) - self.assertTrue('''created user %s''' % (username) in - response.session['flash'][0]) new_user = self.Session.query(User).\ filter(User.username == username).one() - self.assertEqual(new_user.username,username) - self.assertEqual(check_password(password, new_user.password),True) - self.assertEqual(new_user.name,name) - self.assertEqual(new_user.lastname,lastname) - self.assertEqual(new_user.email,email) + self.assertEqual(new_user.username, username) + self.assertEqual(check_password(password, new_user.password), True) + self.assertEqual(new_user.name, name) + self.assertEqual(new_user.lastname, lastname) + self.assertEqual(new_user.email, email) response.follow() response = response.follow() @@ -57,16 +60,18 @@ class TestAdminUsersController(TestContr lastname = 'lastname' email = 'errmail.com' - response = self.app.post(url('users'), {'username':username, - 'password':password, - 'name':name, - 'active':False, - 'lastname':lastname, - 'email':email}) + response = self.app.post(url('users'), {'username': username, + 'password': password, + 'name': name, + 'active': False, + 'lastname': lastname, + 'email': email}) - self.assertTrue("""""" in response.body) - self.assertTrue("""""" in response.body) - self.assertTrue("""""" in response.body) + msg = validators.ValidUsername(False, {})._messages['system_invalid_username'] + msg = h.html_escape(msg % {'username': 'new_user'}) + response.mustcontain("""""" % msg) + response.mustcontain("""""") + response.mustcontain("""""") def get_user(): self.Session.query(User).filter(User.username == username).one() @@ -94,13 +99,13 @@ class TestAdminUsersController(TestContr lastname = 'lastname' email = 'todeletemail@mail.com' - response = self.app.post(url('users'), {'username':username, - 'password':password, - 'password_confirmation':password, - 'name':name, - 'active':True, - 'lastname':lastname, - 'email':email}) + response = self.app.post(url('users'), {'username': username, + 'password': password, + 'password_confirmation': password, + 'name': name, + 'active': True, + 'lastname': lastname, + 'email': email}) response = response.follow() @@ -111,7 +116,6 @@ class TestAdminUsersController(TestContr self.assertTrue("""successfully deleted user""" in response.session['flash'][0]) - def test_delete_browser_fakeout(self): response = self.app.post(url('user', id=1), params=dict(_method='delete')) @@ -127,7 +131,6 @@ class TestAdminUsersController(TestContr user = User.get_by_username(TEST_USER_ADMIN_LOGIN) response = self.app.get(url('edit_user', id=user.user_id)) - def test_add_perm_create_repo(self): self.log_user() perm_none = Permission.get_by_key('hg.create.none') @@ -135,7 +138,6 @@ class TestAdminUsersController(TestContr user = User.get_by_username(TEST_USER_REGULAR_LOGIN) - #User should have None permission on creation repository self.assertEqual(UserModel().has_perm(user, perm_none), False) self.assertEqual(UserModel().has_perm(user, perm_create), False) @@ -159,7 +161,6 @@ class TestAdminUsersController(TestContr user = User.get_by_username(TEST_USER_REGULAR2_LOGIN) - #User should have None permission on creation repository self.assertEqual(UserModel().has_perm(user, perm_none), False) self.assertEqual(UserModel().has_perm(user, perm_create), False) diff --git a/rhodecode/tests/functional/test_compare.py b/rhodecode/tests/functional/test_compare.py new file mode 100644 --- /dev/null +++ b/rhodecode/tests/functional/test_compare.py @@ -0,0 +1,52 @@ +from rhodecode.tests import * + + +class TestCompareController(TestController): + + def test_index_tag(self): + self.log_user() + tag1='0.1.3' + tag2='0.1.2' + response = self.app.get(url(controller='compare', action='index', + repo_name=HG_REPO, + org_ref_type="tag", + org_ref=tag1, + other_ref_type="tag", + other_ref=tag2, + )) + response.mustcontain('%s@%s -> %s@%s' % (HG_REPO, tag1, HG_REPO, tag2)) + ## outgoing changesets between tags + response.mustcontain('''r120:17544fbfcd33''' % HG_REPO) + response.mustcontain('''r119:36e0fc9d2808''' % HG_REPO) + response.mustcontain('''r118:bb1a3ab98cc4''' % HG_REPO) + response.mustcontain('''r117:41fda979f02f''' % HG_REPO) + response.mustcontain('''r116:9749bfbfc0d2''' % HG_REPO) + response.mustcontain('''r115:70d4cef8a376''' % HG_REPO) + response.mustcontain('''r112:c5ddebc06eaa''' % HG_REPO) + + ## files diff + response.mustcontain('''