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'))