diff --git a/rhodecode/tests/models/test_users.py b/rhodecode/tests/models/test_users.py new file mode 100644 --- /dev/null +++ b/rhodecode/tests/models/test_users.py @@ -0,0 +1,124 @@ +import unittest +from rhodecode.tests import * + +from rhodecode.model.db import User, UsersGroup, UsersGroupMember, UserEmailMap,\ + Permission +from rhodecode.model.user import UserModel + +from rhodecode.model.meta import Session +from rhodecode.model.users_group import UsersGroupModel + + +class TestUser(unittest.TestCase): + def __init__(self, methodName='runTest'): + Session.remove() + super(TestUser, self).__init__(methodName=methodName) + + def test_create_and_remove(self): + usr = UserModel().create_or_update(username=u'test_user', + password=u'qweqwe', + email=u'u232@rhodecode.org', + firstname=u'u1', lastname=u'u1') + Session().commit() + self.assertEqual(User.get_by_username(u'test_user'), usr) + + # make users group + users_group = UsersGroupModel().create('some_example_group') + Session().commit() + + UsersGroupModel().add_user_to_group(users_group, usr) + Session().commit() + + self.assertEqual(UsersGroup.get(users_group.users_group_id), users_group) + self.assertEqual(UsersGroupMember.query().count(), 1) + UserModel().delete(usr.user_id) + Session().commit() + + self.assertEqual(UsersGroupMember.query().all(), []) + + def test_additonal_email_as_main(self): + usr = UserModel().create_or_update(username=u'test_user', + password=u'qweqwe', + email=u'main_email@rhodecode.org', + firstname=u'u1', lastname=u'u1') + Session().commit() + + def do(): + m = UserEmailMap() + m.email = u'main_email@rhodecode.org' + m.user = usr + Session().add(m) + Session().commit() + self.assertRaises(AttributeError, do) + + UserModel().delete(usr.user_id) + Session().commit() + + def test_extra_email_map(self): + usr = UserModel().create_or_update(username=u'test_user', + password=u'qweqwe', + email=u'main_email@rhodecode.org', + firstname=u'u1', lastname=u'u1') + Session().commit() + + m = UserEmailMap() + m.email = u'main_email2@rhodecode.org' + m.user = usr + Session().add(m) + Session().commit() + + u = User.get_by_email(email='main_email@rhodecode.org') + self.assertEqual(usr.user_id, u.user_id) + self.assertEqual(usr.username, u.username) + + u = User.get_by_email(email='main_email2@rhodecode.org') + self.assertEqual(usr.user_id, u.user_id) + self.assertEqual(usr.username, u.username) + u = User.get_by_email(email='main_email3@rhodecode.org') + self.assertEqual(None, u) + + UserModel().delete(usr.user_id) + Session().commit() + + +class TestUsers(unittest.TestCase): + + def __init__(self, methodName='runTest'): + super(TestUsers, self).__init__(methodName=methodName) + + def setUp(self): + self.u1 = UserModel().create_or_update(username=u'u1', + password=u'qweqwe', + email=u'u1@rhodecode.org', + firstname=u'u1', lastname=u'u1') + + def tearDown(self): + perm = Permission.query().all() + for p in perm: + UserModel().revoke_perm(self.u1, p) + + UserModel().delete(self.u1) + Session().commit() + + def test_add_perm(self): + perm = Permission.query().all()[0] + UserModel().grant_perm(self.u1, perm) + Session().commit() + self.assertEqual(UserModel().has_perm(self.u1, perm), True) + + def test_has_perm(self): + perm = Permission.query().all() + for p in perm: + has_p = UserModel().has_perm(self.u1, p) + self.assertEqual(False, has_p) + + def test_revoke_perm(self): + perm = Permission.query().all()[0] + UserModel().grant_perm(self.u1, perm) + Session().commit() + self.assertEqual(UserModel().has_perm(self.u1, perm), True) + + #revoke + UserModel().revoke_perm(self.u1, perm) + Session().commit() + self.assertEqual(UserModel().has_perm(self.u1, perm), False)