##// END OF EJS Templates
Implemented #738 Giving a user WRITE+ permissions on folder should not allow repo creation in root folder....
Implemented #738 Giving a user WRITE+ permissions on folder should not allow repo creation in root folder. user can create repos only if he got explicitly permission for creating repos globally, or have WRITE+ permission on a group. Then he can create repositories inside this group

File last commit:

r3222:b4daef4c beta
r3333:06988438 beta
Show More
test_admin_repos.py
326 lines | 11.9 KiB | text/x-python | PythonLexer
added test for non ascii repositories and fixed users_groups test
r1398 # -*- coding: utf-8 -*-
added repo creation filesystem test
r1037 import os
Added VCS into rhodecode core for faster and easier deployments of new versions
r2007 from rhodecode.lib import vcs
added repo creation filesystem test
r1037
Added functional test create repo with a group...
r2529 from rhodecode.model.db import Repository, RepoGroup
Refactor codes for scm model...
r691 from rhodecode.tests import *
Added functional test create repo with a group...
r2529 from rhodecode.model.repos_group import ReposGroupModel
from rhodecode.model.repo import RepoModel
Refactor codes for scm model...
r691
Initial version of landing revisions ref #483...
r2459
Refactor codes for scm model...
r691 class TestAdminReposController(TestController):
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached...
r1366 def __make_repo(self):
pass
Refactor codes for scm model...
r691 def test_index(self):
self.log_user()
response = self.app.get(url('repos'))
# Test response...
def test_index_as_xml(self):
response = self.app.get(url('formatted_repos', format='xml'))
def test_create_hg(self):
self.log_user()
repo_name = NEW_HG_REPO
description = 'description for newly created repo'
whitespace and formatting
r3057 response = self.app.post(url('repos'),
Implemented #379 defaults settings page for creation of repositories...
r3056 _get_repo_create_params(repo_private=False,
repo_name=repo_name,
repo_description=description))
Initial version of landing revisions ref #483...
r2459 self.checkSessionFlash(response,
'created repository %s' % (repo_name))
Refactor codes for scm model...
r691
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached...
r1366 #test if the repo was created in the database
Added functional test create repo with a group...
r2529 new_repo = self.Session().query(Repository)\
Initial version of landing revisions ref #483...
r2459 .filter(Repository.repo_name == repo_name).one()
Refactor codes for scm model...
r691
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached...
r1366 self.assertEqual(new_repo.repo_name, repo_name)
self.assertEqual(new_repo.description, description)
Refactor codes for scm model...
r691
#test if repository is visible in the list ?
response = response.follow()
Initial version of landing revisions ref #483...
r2459 response.mustcontain(repo_name)
added repo creation filesystem test
r1037
#test if repository was created on filesystem
try:
vcs.get_repo(os.path.join(TESTS_TMP_PATH, repo_name))
except:
Initial version of landing revisions ref #483...
r2459 self.fail('no repo %s in filesystem' % repo_name)
added repo creation filesystem test
r1037
added test for non ascii repositories and fixed users_groups test
r1398 def test_create_hg_non_ascii(self):
self.log_user()
non_ascii = "ąęł"
repo_name = "%s%s" % (NEW_HG_REPO, non_ascii)
repo_name_unicode = repo_name.decode('utf8')
description = 'description for newly created repo' + non_ascii
description_unicode = description.decode('utf8')
private = False
Implemented #379 defaults settings page for creation of repositories...
r3056 response = self.app.post(url('repos'),
_get_repo_create_params(repo_private=False,
repo_name=repo_name,
repo_description=description))
added test for non ascii repositories and fixed users_groups test
r1398 self.checkSessionFlash(response,
'created repository %s' % (repo_name_unicode))
#test if the repo was created in the database
Added functional test create repo with a group...
r2529 new_repo = self.Session().query(Repository)\
Initial version of landing revisions ref #483...
r2459 .filter(Repository.repo_name == repo_name_unicode).one()
added test for non ascii repositories and fixed users_groups test
r1398
self.assertEqual(new_repo.repo_name, repo_name_unicode)
self.assertEqual(new_repo.description, description_unicode)
#test if repository is visible in the list ?
response = response.follow()
Initial version of landing revisions ref #483...
r2459 response.mustcontain(repo_name)
added test for non ascii repositories and fixed users_groups test
r1398
#test if repository was created on filesystem
try:
vcs.get_repo(os.path.join(TESTS_TMP_PATH, repo_name))
except:
Initial version of landing revisions ref #483...
r2459 self.fail('no repo %s in filesystem' % repo_name)
added test for non ascii repositories and fixed users_groups test
r1398
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached...
r1366 def test_create_hg_in_group(self):
Added functional test create repo with a group...
r2529 self.log_user()
## create GROUP
group_name = 'sometest'
gr = ReposGroupModel().create(group_name=group_name,
Group management delegation:...
r3222 group_description='test',
owner=TEST_USER_ADMIN_LOGIN)
Added functional test create repo with a group...
r2529 self.Session().commit()
repo_name = 'ingroup'
repo_name_full = RepoGroup.url_sep().join([group_name, repo_name])
description = 'description for newly created repo'
Implemented #379 defaults settings page for creation of repositories...
r3056 response = self.app.post(url('repos'),
_get_repo_create_params(repo_private=False,
repo_name=repo_name,
repo_description=description,
repo_group=gr.group_id,))
Added functional test create repo with a group...
r2529 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()
added repo creation filesystem test
r1037
Refactor codes for scm model...
r691 def test_create_git(self):
self.log_user()
repo_name = NEW_GIT_REPO
description = 'description for newly created repo'
Implemented #379 defaults settings page for creation of repositories...
r3056
response = self.app.post(url('repos'),
_get_repo_create_params(repo_private=False,
repo_type='git',
repo_name=repo_name,
repo_description=description))
Initial version of landing revisions ref #483...
r2459 self.checkSessionFlash(response,
'created repository %s' % (repo_name))
Refactor codes for scm model...
r691
Initial version of landing revisions ref #483...
r2459 #test if the repo was created in the database
Added functional test create repo with a group...
r2529 new_repo = self.Session().query(Repository)\
Initial version of landing revisions ref #483...
r2459 .filter(Repository.repo_name == repo_name).one()
Refactor codes for scm model...
r691
Initial version of landing revisions ref #483...
r2459 self.assertEqual(new_repo.repo_name, repo_name)
self.assertEqual(new_repo.description, description)
Refactor codes for scm model...
r691
#test if repository is visible in the list ?
response = response.follow()
Initial version of landing revisions ref #483...
r2459 response.mustcontain(repo_name)
Refactor codes for scm model...
r691
added repo creation filesystem test
r1037 #test if repository was created on filesystem
try:
vcs.get_repo(os.path.join(TESTS_TMP_PATH, repo_name))
except:
Initial version of landing revisions ref #483...
r2459 self.fail('no repo %s in filesystem' % repo_name)
def test_create_git_non_ascii(self):
self.log_user()
non_ascii = "ąęł"
repo_name = "%s%s" % (NEW_GIT_REPO, non_ascii)
repo_name_unicode = repo_name.decode('utf8')
description = 'description for newly created repo' + non_ascii
description_unicode = description.decode('utf8')
private = False
Implemented #379 defaults settings page for creation of repositories...
r3056 response = self.app.post(url('repos'),
_get_repo_create_params(repo_private=False,
repo_type='git',
repo_name=repo_name,
repo_description=description))
Initial version of landing revisions ref #483...
r2459 self.checkSessionFlash(response,
'created repository %s' % (repo_name_unicode))
#test if the repo was created in the database
Added functional test create repo with a group...
r2529 new_repo = self.Session().query(Repository)\
Initial version of landing revisions ref #483...
r2459 .filter(Repository.repo_name == repo_name_unicode).one()
self.assertEqual(new_repo.repo_name, repo_name_unicode)
self.assertEqual(new_repo.description, description_unicode)
#test if repository is visible in the list ?
response = response.follow()
response.mustcontain(repo_name)
#test if repository was created on filesystem
try:
vcs.get_repo(os.path.join(TESTS_TMP_PATH, repo_name))
except:
self.fail('no repo %s in filesystem' % repo_name)
Refactor codes for scm model...
r691
def test_new(self):
self.log_user()
response = self.app.get(url('new_repo'))
def test_new_as_xml(self):
response = self.app.get(url('formatted_new_repo', format='xml'))
def test_update(self):
response = self.app.put(url('repo', repo_name=HG_REPO))
def test_update_browser_fakeout(self):
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached...
r1366 response = self.app.post(url('repo', repo_name=HG_REPO),
params=dict(_method='put'))
Refactor codes for scm model...
r691
Initial version of landing revisions ref #483...
r2459 def test_delete_hg(self):
Refactor codes for scm model...
r691 self.log_user()
repo_name = 'vcs_test_new_to_delete'
description = 'description for newly created repo'
Implemented #379 defaults settings page for creation of repositories...
r3056 response = self.app.post(url('repos'),
_get_repo_create_params(repo_private=False,
repo_type='hg',
repo_name=repo_name,
repo_description=description))
Initial version of landing revisions ref #483...
r2459 self.checkSessionFlash(response,
'created repository %s' % (repo_name))
Refactor codes for scm model...
r691
#test if the repo was created in the database
Added functional test create repo with a group...
r2529 new_repo = self.Session().query(Repository)\
Initial version of landing revisions ref #483...
r2459 .filter(Repository.repo_name == repo_name).one()
Refactor codes for scm model...
r691
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached...
r1366 self.assertEqual(new_repo.repo_name, repo_name)
self.assertEqual(new_repo.description, description)
Refactor codes for scm model...
r691
#test if repository is visible in the list ?
response = response.follow()
Initial version of landing revisions ref #483...
r2459 response.mustcontain(repo_name)
Refactor codes for scm model...
r691
Initial version of landing revisions ref #483...
r2459 #test if repository was created on filesystem
try:
vcs.get_repo(os.path.join(TESTS_TMP_PATH, repo_name))
except:
self.fail('no repo %s in filesystem' % repo_name)
Refactor codes for scm model...
r691
response = self.app.delete(url('repo', repo_name=repo_name))
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached...
r1366 self.assertTrue('''deleted repository %s''' % (repo_name) in
response.session['flash'][0])
Refactor codes for scm model...
r691
response.follow()
#check if repo was deleted from db
Added functional test create repo with a group...
r2529 deleted_repo = self.Session().query(Repository)\
Initial version of landing revisions ref #483...
r2459 .filter(Repository.repo_name == repo_name).scalar()
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached...
r1366
self.assertEqual(deleted_repo, None)
Refactor codes for scm model...
r691
Initial version of landing revisions ref #483...
r2459 self.assertEqual(os.path.isdir(os.path.join(TESTS_TMP_PATH, repo_name)),
False)
def test_delete_git(self):
self.log_user()
repo_name = 'vcs_test_new_to_delete'
description = 'description for newly created repo'
private = False
whitespace and formatting
r3057 response = self.app.post(url('repos'),
Implemented #379 defaults settings page for creation of repositories...
r3056 _get_repo_create_params(repo_private=False,
repo_type='git',
repo_name=repo_name,
repo_description=description))
Initial version of landing revisions ref #483...
r2459 self.checkSessionFlash(response,
'created repository %s' % (repo_name))
#test if the repo was created in the database
Added functional test create repo with a group...
r2529 new_repo = self.Session().query(Repository)\
Initial version of landing revisions ref #483...
r2459 .filter(Repository.repo_name == repo_name).one()
self.assertEqual(new_repo.repo_name, repo_name)
self.assertEqual(new_repo.description, description)
#test if repository is visible in the list ?
response = response.follow()
response.mustcontain(repo_name)
#test if repository was created on filesystem
try:
vcs.get_repo(os.path.join(TESTS_TMP_PATH, repo_name))
except:
self.fail('no repo %s in filesystem' % repo_name)
response = self.app.delete(url('repo', repo_name=repo_name))
self.assertTrue('''deleted repository %s''' % (repo_name) in
response.session['flash'][0])
response.follow()
#check if repo was deleted from db
Added functional test create repo with a group...
r2529 deleted_repo = self.Session().query(Repository)\
Initial version of landing revisions ref #483...
r2459 .filter(Repository.repo_name == repo_name).scalar()
self.assertEqual(deleted_repo, None)
self.assertEqual(os.path.isdir(os.path.join(TESTS_TMP_PATH, repo_name)),
False)
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached...
r1366
def test_delete_repo_with_group(self):
#TODO:
pass
Refactor codes for scm model...
r691
def test_delete_browser_fakeout(self):
fixes #200, rewrote the whole caching mechanism to get rid of such problems. Now cached instances are attached...
r1366 response = self.app.post(url('repo', repo_name=HG_REPO),
params=dict(_method='delete'))
Refactor codes for scm model...
r691
Initial version of landing revisions ref #483...
r2459 def test_show_hg(self):
Refactor codes for scm model...
r691 self.log_user()
response = self.app.get(url('repo', repo_name=HG_REPO))
Initial version of landing revisions ref #483...
r2459 def test_show_git(self):
self.log_user()
response = self.app.get(url('repo', repo_name=GIT_REPO))
Refactor codes for scm model...
r691
def test_edit(self):
response = self.app.get(url('edit_repo', repo_name=HG_REPO))