Mercurial > kallithea
view rhodecode/tests/models/test_users.py @ 3733:af049a957506 beta
fixed default permissions population during upgrades
- it often happen that introducing new permission
caused default permission to reset it's state to installation
default.
new version makes sure that only missing permissions are
created while leaving old defaults
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Wed, 10 Apr 2013 02:55:21 +0200 |
parents | 7e3d89d9d3a2 |
children | 5067d6e826a5 |
line wrap: on
line source
import unittest from rhodecode.tests import * from rhodecode.model.db import User, UserGroup, UserGroupMember, UserEmailMap,\ Permission from rhodecode.model.user import UserModel from rhodecode.model.meta import Session from rhodecode.model.users_group import UserGroupModel from rhodecode.tests.fixture import Fixture fixture = Fixture() class TestUser(unittest.TestCase): def __init__(self, methodName='runTest'): Session.remove() super(TestUser, self).__init__(methodName=methodName) def tearDown(self): Session.remove() 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 user group users_group = fixture.create_user_group('some_example_group') Session().commit() UserGroupModel().add_user_to_group(users_group, usr) Session().commit() self.assertEqual(UserGroup.get(users_group.users_group_id), users_group) self.assertEqual(UserGroupMember.query().count(), 1) UserModel().delete(usr.user_id) Session().commit() self.assertEqual(UserGroupMember.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() Session.remove() 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)