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,11 +1,13 @@
from rhodecode.tests import *
-from rhodecode.model.db import User
+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
class TestAdminUsersController(TestController):
def test_index(self):
+ self.log_user()
response = self.app.get(url('users'))
# Test response...
@@ -21,30 +23,31 @@ class TestAdminUsersController(TestContr
lastname = 'lastname'
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})
+ response = self.app.post(url('users'),
+ {'username':username,
+ 'password':password,
+ 'password_confirmation':password_confirmation,
+ 'name':name,
+ 'active':True,
+ 'lastname':lastname,
+ 'email':email})
- assert '''created user %s''' % (username) in response.session['flash'][0], 'No flash message about new user'
+ self.assertTrue('''created user %s''' % (username) in
+ response.session['flash'][0])
- new_user = self.Session.query(User).filter(User.username == username).one()
-
+ new_user = self.Session.query(User).\
+ filter(User.username == username).one()
- assert new_user.username == username, 'wrong info about username'
- assert check_password(password, new_user.password) == True , 'wrong info about password'
- assert new_user.name == name, 'wrong info about name'
- assert new_user.lastname == lastname, 'wrong info about lastname'
- assert new_user.email == email, 'wrong info about 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()
- assert """edit">newtestuser""" in response.body
+ self.assertTrue("""edit">newtestuser""" in response.body)
def test_create_err(self):
self.log_user()
@@ -61,9 +64,9 @@ class TestAdminUsersController(TestContr
'lastname':lastname,
'email':email})
- assert """Invalid username""" in response.body
- assert """Please enter a value""" in response.body
- assert """An email address must contain a single @""" in response.body
+ self.assertTrue("""Invalid username""" in response.body)
+ self.assertTrue("""Please enter a value""" in response.body)
+ self.assertTrue("""An email address must contain a single @""" in response.body)
def get_user():
self.Session.query(User).filter(User.username == username).one()
@@ -71,6 +74,7 @@ class TestAdminUsersController(TestContr
self.assertRaises(NoResultFound, get_user), 'found user in database'
def test_new(self):
+ self.log_user()
response = self.app.get(url('new_user'))
def test_new_as_xml(self):
@@ -100,14 +104,17 @@ class TestAdminUsersController(TestContr
response = response.follow()
- new_user = self.Session.query(User).filter(User.username == username).one()
+ new_user = self.Session.query(User)\
+ .filter(User.username == username).one()
response = self.app.delete(url('user', id=new_user.user_id))
- assert """successfully deleted user""" in response.session['flash'][0], 'No info about user deletion'
+ 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'))
+ response = self.app.post(url('user', id=1),
+ params=dict(_method='delete'))
def test_show(self):
response = self.app.get(url('user', id=1))
@@ -116,7 +123,57 @@ class TestAdminUsersController(TestContr
response = self.app.get(url('formatted_user', id=1, format='xml'))
def test_edit(self):
- response = self.app.get(url('edit_user', id=1))
+ self.log_user()
+ 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')
+ perm_create = Permission.get_by_key('hg.create.repository')
+
+ 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)
+
+ response = self.app.post(url('user_perm', id=user.user_id),
+ params=dict(_method='put',
+ create_repo_perm=True))
+
+ perm_none = Permission.get_by_key('hg.create.none')
+ perm_create = Permission.get_by_key('hg.create.repository')
+
+ 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), True)
+
+ def test_revoke_perm_create_repo(self):
+ self.log_user()
+ perm_none = Permission.get_by_key('hg.create.none')
+ perm_create = Permission.get_by_key('hg.create.repository')
+
+ 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)
+
+ response = self.app.post(url('user_perm', id=user.user_id),
+ params=dict(_method='put'))
+
+ perm_none = Permission.get_by_key('hg.create.none')
+ perm_create = Permission.get_by_key('hg.create.repository')
+
+ 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), True)
+ self.assertEqual(UserModel().has_perm(user, perm_create), False)
def test_edit_as_xml(self):
response = self.app.get(url('formatted_edit_user', id=1, format='xml'))