Mercurial > public > src > rhodecode
changeset 2631:40b3a54391f9 beta
Added functional test create repo with a group
- unified calling Session in tests
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sun, 01 Jul 2012 18:06:34 +0200 |
parents | 5c8b1eaafe77 |
children | f17e001cc6cc |
files | rhodecode/lib/utils.py rhodecode/model/repo.py rhodecode/model/repos_group.py rhodecode/tests/api/api_base.py rhodecode/tests/functional/test_admin_notifications.py rhodecode/tests/functional/test_admin_repos.py rhodecode/tests/functional/test_login.py rhodecode/tests/models/test_permissions.py |
diffstat | 8 files changed, 111 insertions(+), 71 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/lib/utils.py Sun Jul 01 17:49:42 2012 +0200 +++ b/rhodecode/lib/utils.py Sun Jul 01 18:06:34 2012 +0200 @@ -51,8 +51,7 @@ from rhodecode.model import meta from rhodecode.model.db import Repository, User, RhodeCodeUi, \ - UserLog, RepoGroup, RhodeCodeSetting, UserRepoGroupToPerm,\ - CacheInvalidation + UserLog, RepoGroup, RhodeCodeSetting, CacheInvalidation from rhodecode.model.meta import Session from rhodecode.model.repos_group import ReposGroupModel from rhodecode.lib.utils2 import safe_str, safe_unicode @@ -129,7 +128,7 @@ """ if not sa: - sa = meta.Session + sa = meta.Session() try: if hasattr(user, 'user_id'): @@ -306,7 +305,7 @@ baseui.setconfig(section, k, v) elif read_from == 'db': - sa = meta.Session + sa = meta.Session() ret = sa.query(RhodeCodeUi)\ .options(FromCache("sql_cache_short", "get_hg_ui_settings"))\ .all() @@ -399,7 +398,7 @@ :param paths: full path to repository """ - sa = meta.Session + sa = meta.Session() groups = path.split(Repository.url_sep()) parent = None group = None @@ -438,7 +437,7 @@ :param remove_obsolete: check for obsolete entries in database """ from rhodecode.model.repo import RepoModel - sa = meta.Session + sa = meta.Session() rm = RepoModel() user = sa.query(User).filter(User.admin == True).first() if user is None: @@ -447,22 +446,20 @@ for name, repo in initial_repo_list.items(): group = map_groups(name) - if not rm.get_by_repo_name(name, cache=False): - log.info('repository %s not found creating default' % name) + if not rm.get_by_repo_name(name): + log.info('repository %s not found creating now' % name) added.append(name) - form_data = { - 'repo_name': name, - 'repo_name_full': name, - 'repo_type': repo.alias, - 'description': repo.description \ - if repo.description != 'unknown' else '%s repository' % name, - 'private': False, - 'group_id': getattr(group, 'group_id', None), - 'landing_rev': 'tip', - 'clone_uri': None, - 'repo_group': None, - } - rm.create(form_data, user, just_db=True) + desc = (repo.description + if repo.description != 'unknown' + else '%s repository' % name) + rm.create_repo( + repo_name=name, + repo_type=repo.alias, + description=desc, + repos_group=getattr(group, 'group_id', None), + owner=user, + just_db=True + ) sa.commit() removed = [] if remove_obsolete: @@ -589,7 +586,7 @@ dbmanage.admin_prompt() dbmanage.create_permissions() dbmanage.populate_default_permissions() - Session.commit() + Session().commit() # PART TWO make test repo log.debug('making test vcs repositories')
--- a/rhodecode/model/repo.py Sun Jul 01 17:49:42 2012 +0200 +++ b/rhodecode/model/repo.py Sun Jul 01 18:06:34 2012 +0200 @@ -212,21 +212,21 @@ owner = self._get_user(owner) fork_of = self._get_repo(fork_of) - repo_group = self.__get_repos_group(repos_group) + repos_group = self.__get_repos_group(repos_group) try: # repo name is just a name of repository # while repo_name_full is a full qualified name that is combined # with name and path of group + repo_name_full = repo_name repo_name = repo_name.split(self.URL_SEPARATOR)[-1] - repo_name_full = repo_name new_repo = Repository() new_repo.enable_statistics = False new_repo.repo_name = repo_name_full new_repo.repo_type = repo_type new_repo.user = owner - new_repo.group = repo_group + new_repo.group = repos_group new_repo.description = description or repo_name new_repo.private = private new_repo.clone_uri = clone_uri @@ -280,7 +280,7 @@ if not just_db: self.__create_repo(repo_name, repo_type, - repo_group, + repos_group, clone_uri) log_create_repository(new_repo.get_dict(), created_by=owner.username) @@ -290,6 +290,7 @@ owner.user_id) return new_repo except: + print traceback.format_exc() log.error(traceback.format_exc()) raise @@ -435,7 +436,7 @@ log.error(traceback.format_exc()) raise - def __create_repo(self, repo_name, alias, new_parent_id, clone_uri=False): + def __create_repo(self, repo_name, alias, parent, clone_uri=False): """ makes repository on filesystem. It's group aware means it'll create a repository within a group, and alter the paths accordingly of @@ -448,10 +449,8 @@ """ from rhodecode.lib.utils import is_valid_repo, is_valid_repos_group - if new_parent_id: - paths = RepoGroup.get(new_parent_id)\ - .full_path.split(RepoGroup.url_sep()) - new_parent_path = os.sep.join(paths) + if parent: + new_parent_path = os.sep.join(parent.full_path_splitted) else: new_parent_path = ''
--- a/rhodecode/model/repos_group.py Sun Jul 01 17:49:42 2012 +0200 +++ b/rhodecode/model/repos_group.py Sun Jul 01 18:06:34 2012 +0200 @@ -129,7 +129,7 @@ # delete only if that path really exists os.rmdir(rm_path) - def create(self, group_name, group_description, parent, just_db=False): + def create(self, group_name, group_description, parent=None, just_db=False): try: new_repos_group = RepoGroup() new_repos_group.group_description = group_description
--- a/rhodecode/tests/api/api_base.py Sun Jul 01 17:49:42 2012 +0200 +++ b/rhodecode/tests/api/api_base.py Sun Jul 01 18:06:34 2012 +0200 @@ -1,14 +1,14 @@ +from __future__ import with_statement import random import mock from rhodecode.tests import * -from rhodecode.model.meta import Session from rhodecode.lib.compat import json from rhodecode.lib.auth import AuthUser from rhodecode.model.user import UserModel from rhodecode.model.users_group import UsersGroupModel from rhodecode.model.repo import RepoModel -from nose.tools import with_setup +from rhodecode.model.meta import Session API_URL = '/_admin/api' @@ -249,7 +249,7 @@ self._compare_ok(id_, expected, given=response.body) UserModel().delete(usr.user_id) - Session().commit() + self.Session().commit() @mock.patch.object(UserModel, 'create_or_update', crash) def test_api_create_user_when_exception_happened(self): @@ -271,7 +271,7 @@ password=u'qweqwe', email=u'u232@rhodecode.org', firstname=u'u1', lastname=u'u1') - Session().commit() + self.Session().commit() username = usr.username email = usr.email usr_id = usr.user_id @@ -293,7 +293,7 @@ password=u'qweqwe', email=u'u232@rhodecode.org', firstname=u'u1', lastname=u'u1') - Session().commit() + self.Session().commit() username = usr.username id_, params = _build_data(self.apikey, 'delete_user', @@ -384,7 +384,7 @@ RepoModel().grant_users_group_permission(repo=self.REPO, group_name=new_group, perm='repository.read') - Session().commit() + self.Session().commit() id_, params = _build_data(self.apikey, 'get_repo', repoid=self.REPO) response = self.app.post(API_URL, content_type='application/json', @@ -617,7 +617,7 @@ self._compare_ok(id_, expected, given=response.body) UsersGroupModel().delete(users_group='test_users_group2') - Session().commit() + self.Session().commit() def test_api_create_users_group(self): group_name = 'some_new_group' @@ -660,7 +660,7 @@ def test_api_add_user_to_users_group(self): gr_name = 'test_group' UsersGroupModel().create(gr_name) - Session().commit() + self.Session().commit() id_, params = _build_data(self.apikey, 'add_user_to_users_group', usersgroupid=gr_name, userid=TEST_USER_ADMIN_LOGIN) @@ -675,7 +675,7 @@ self._compare_ok(id_, expected, given=response.body) UsersGroupModel().delete(users_group=gr_name) - Session().commit() + self.Session().commit() def test_api_add_user_to_users_group_that_doesnt_exist(self): id_, params = _build_data(self.apikey, 'add_user_to_users_group', @@ -691,7 +691,7 @@ def test_api_add_user_to_users_group_exception_occurred(self): gr_name = 'test_group' UsersGroupModel().create(gr_name) - Session().commit() + self.Session().commit() id_, params = _build_data(self.apikey, 'add_user_to_users_group', usersgroupid=gr_name, userid=TEST_USER_ADMIN_LOGIN) @@ -702,13 +702,13 @@ self._compare_error(id_, expected, given=response.body) UsersGroupModel().delete(users_group=gr_name) - Session().commit() + self.Session().commit() def test_api_remove_user_from_users_group(self): gr_name = 'test_group_3' gr = UsersGroupModel().create(gr_name) UsersGroupModel().add_user_to_group(gr, user=TEST_USER_ADMIN_LOGIN) - Session().commit() + self.Session().commit() id_, params = _build_data(self.apikey, 'remove_user_from_users_group', usersgroupid=gr_name, userid=TEST_USER_ADMIN_LOGIN) @@ -723,14 +723,14 @@ self._compare_ok(id_, expected, given=response.body) UsersGroupModel().delete(users_group=gr_name) - Session().commit() + self.Session().commit() @mock.patch.object(UsersGroupModel, 'remove_user_from_group', crash) def test_api_remove_user_from_users_group_exception_occurred(self): gr_name = 'test_group_3' gr = UsersGroupModel().create(gr_name) UsersGroupModel().add_user_to_group(gr, user=TEST_USER_ADMIN_LOGIN) - Session().commit() + self.Session().commit() id_, params = _build_data(self.apikey, 'remove_user_from_users_group', usersgroupid=gr_name, userid=TEST_USER_ADMIN_LOGIN) @@ -741,7 +741,7 @@ self._compare_error(id_, expected, given=response.body) UsersGroupModel().delete(users_group=gr_name) - Session().commit() + self.Session().commit() @parameterized.expand([('none', 'repository.none'), ('read', 'repository.read'), @@ -871,7 +871,7 @@ RepoModel().grant_users_group_permission(repo=self.REPO, group_name=TEST_USERS_GROUP, perm='repository.read') - Session().commit() + self.Session().commit() id_, params = _build_data(self.apikey, 'revoke_users_group_permission', repoid=self.REPO, usersgroupid=TEST_USERS_GROUP,)
--- a/rhodecode/tests/functional/test_admin_notifications.py Sun Jul 01 17:49:42 2012 +0200 +++ b/rhodecode/tests/functional/test_admin_notifications.py Sun Jul 01 18:06:34 2012 +0200 @@ -1,9 +1,8 @@ from rhodecode.tests import * -from rhodecode.model.db import Notification, User, UserNotification +from rhodecode.model.db import Notification, User from rhodecode.model.user import UserModel from rhodecode.model.notification import NotificationModel -from rhodecode.model.meta import Session class TestNotificationsController(TestController): @@ -11,8 +10,8 @@ def tearDown(self): for n in Notification.query().all(): inst = Notification.get(n.notification_id) - Session.delete(inst) - Session.commit() + self.Session().delete(inst) + self.Session().commit() def test_index(self): self.log_user() @@ -31,7 +30,7 @@ NotificationModel().create(created_by=u1, subject=u'test_notification_1', body=u'notification_1', recipients=[cur_user]) - Session.commit() + self.Session().commit() response = self.app.get(url('notifications')) self.assertTrue(u'test_notification_1' in response.body) @@ -69,7 +68,7 @@ subject=u'test', body=u'hi there', recipients=[cur_user, u1, u2]) - Session.commit() + self.Session().commit() u1 = User.get(u1.user_id) u2 = User.get(u2.user_id)
--- a/rhodecode/tests/functional/test_admin_repos.py Sun Jul 01 17:49:42 2012 +0200 +++ b/rhodecode/tests/functional/test_admin_repos.py Sun Jul 01 18:06:34 2012 +0200 @@ -3,8 +3,10 @@ import os from rhodecode.lib import vcs -from rhodecode.model.db import Repository +from rhodecode.model.db import Repository, RepoGroup from rhodecode.tests import * +from rhodecode.model.repos_group import ReposGroupModel +from rhodecode.model.repo import RepoModel class TestAdminReposController(TestController): @@ -36,7 +38,7 @@ 'created repository %s' % (repo_name)) #test if the repo was created in the database - new_repo = self.Session.query(Repository)\ + new_repo = self.Session().query(Repository)\ .filter(Repository.repo_name == repo_name).one() self.assertEqual(new_repo.repo_name, repo_name) @@ -72,7 +74,7 @@ 'created repository %s' % (repo_name_unicode)) #test if the repo was created in the database - new_repo = self.Session.query(Repository)\ + new_repo = self.Session().query(Repository)\ .filter(Repository.repo_name == repo_name_unicode).one() self.assertEqual(new_repo.repo_name, repo_name_unicode) @@ -90,8 +92,51 @@ self.fail('no repo %s in filesystem' % repo_name) def test_create_hg_in_group(self): - #TODO: write test ! - pass + self.log_user() + + ## create GROUP + group_name = 'sometest' + gr = ReposGroupModel().create(group_name=group_name, + group_description='test',) + self.Session().commit() + + repo_name = 'ingroup' + repo_name_full = RepoGroup.url_sep().join([group_name, repo_name]) + description = 'description for newly created repo' + private = False + response = self.app.post(url('repos'), {'repo_name': repo_name, + 'repo_type': 'hg', + 'clone_uri': '', + 'repo_group': gr.group_id, + 'description': description, + 'private': private, + 'landing_rev': 'tip'}) + self.checkSessionFlash(response, + 'created repository %s' % (repo_name)) + + #test if the repo was created in the database + new_repo = self.Session().query(Repository)\ + .filter(Repository.repo_name == repo_name_full).one() + + self.assertEqual(new_repo.repo_name, repo_name_full) + self.assertEqual(new_repo.description, description) + + #test if repository is visible in the list ? + response = response.follow() + + response.mustcontain(repo_name_full) + + #test if repository was created on filesystem + try: + vcs.get_repo(os.path.join(TESTS_TMP_PATH, repo_name_full)) + except: + ReposGroupModel().delete(group_name) + self.Session().commit() + self.fail('no repo %s in filesystem' % repo_name) + + RepoModel().delete(repo_name_full) + ReposGroupModel().delete(group_name) + self.Session().commit() def test_create_git(self): self.log_user() @@ -109,7 +154,7 @@ 'created repository %s' % (repo_name)) #test if the repo was created in the database - new_repo = self.Session.query(Repository)\ + new_repo = self.Session().query(Repository)\ .filter(Repository.repo_name == repo_name).one() self.assertEqual(new_repo.repo_name, repo_name) @@ -145,7 +190,7 @@ 'created repository %s' % (repo_name_unicode)) #test if the repo was created in the database - new_repo = self.Session.query(Repository)\ + new_repo = self.Session().query(Repository)\ .filter(Repository.repo_name == repo_name_unicode).one() self.assertEqual(new_repo.repo_name, repo_name_unicode) @@ -192,7 +237,7 @@ 'created repository %s' % (repo_name)) #test if the repo was created in the database - new_repo = self.Session.query(Repository)\ + new_repo = self.Session().query(Repository)\ .filter(Repository.repo_name == repo_name).one() self.assertEqual(new_repo.repo_name, repo_name) @@ -217,7 +262,7 @@ response.follow() #check if repo was deleted from db - deleted_repo = self.Session.query(Repository)\ + deleted_repo = self.Session().query(Repository)\ .filter(Repository.repo_name == repo_name).scalar() self.assertEqual(deleted_repo, None) @@ -241,7 +286,7 @@ 'created repository %s' % (repo_name)) #test if the repo was created in the database - new_repo = self.Session.query(Repository)\ + new_repo = self.Session().query(Repository)\ .filter(Repository.repo_name == repo_name).one() self.assertEqual(new_repo.repo_name, repo_name) @@ -266,7 +311,7 @@ response.follow() #check if repo was deleted from db - deleted_repo = self.Session.query(Repository)\ + deleted_repo = self.Session().query(Repository)\ .filter(Repository.repo_name == repo_name).scalar() self.assertEqual(deleted_repo, None)
--- a/rhodecode/tests/functional/test_login.py Sun Jul 01 17:49:42 2012 +0200 +++ b/rhodecode/tests/functional/test_login.py Sun Jul 01 18:06:34 2012 +0200 @@ -3,7 +3,6 @@ from rhodecode.model.db import User, Notification from rhodecode.lib.utils2 import generate_api_key from rhodecode.lib.auth import check_password -from rhodecode.model.meta import Session from rhodecode.lib import helpers as h from rhodecode.model import validators @@ -12,9 +11,9 @@ def tearDown(self): for n in Notification.query().all(): - Session.delete(n) + self.Session().delete(n) - Session.commit() + self.Session().commit() self.assertEqual(Notification.query().all(), []) def test_index(self): @@ -199,7 +198,7 @@ self.assertEqual(response.status, '302 Found') self.checkSessionFlash(response, 'You have successfully registered into rhodecode') - ret = self.Session.query(User).filter(User.username == 'test_regular4').one() + ret = self.Session().query(User).filter(User.username == 'test_regular4').one() self.assertEqual(ret.username, username) self.assertEqual(check_password(password, ret.password), True) self.assertEqual(ret.email, email) @@ -237,8 +236,8 @@ new.name = name new.lastname = lastname new.api_key = generate_api_key(username) - self.Session.add(new) - self.Session.commit() + self.Session().add(new) + self.Session().commit() response = self.app.post(url(controller='login', action='password_reset'),