##// END OF EJS Templates
Fixed #161 form saves the create repository permission....
Fixed #161 form saves the create repository permission. routing update for users to support second form posting. models updates

File last commit:

r1203:6832ef66 beta
r1266:a1bcfe58 beta
Show More
test_hg_operations.py
330 lines | 9.3 KiB | text/x-python | PythonLexer
/ rhodecode / tests / test_hg_operations.py
changed mercurial test operations script
r896 # -*- coding: utf-8 -*-
"""
rhodecode.tests.test_hg_operations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Test suite for making push/pull operations
source code cleanup: remove trailing white space, normalize file endings
r1203
changed mercurial test operations script
r896 :created_on: Dec 30, 2010
:copyright: (c) 2010 by marcink.
:license: LICENSE_NAME, see LICENSE_FILE for more details.
"""
import os
import shutil
import logging
Added sql session into test hg script...
r930 from os.path import join as jn
changed mercurial test operations script
r896
Added sql session into test hg script...
r930 from tempfile import _RandomNameSequence
changed mercurial test operations script
r896 from subprocess import Popen, PIPE
Added sql session into test hg script...
r930 from paste.deploy import appconfig
from pylons import config
from sqlalchemy import engine_from_config
from rhodecode.lib.utils import add_cache
from rhodecode.model import init_model
from rhodecode.model import meta
updated testing script for hg operations
r1008 from rhodecode.model.db import User, Repository
Added sql session into test hg script...
r930 from rhodecode.lib.auth import get_crypt_password
changed mercurial test operations script
r896
from rhodecode.tests import TESTS_TMP_PATH, NEW_HG_REPO, HG_REPO
Added sql session into test hg script...
r930 from rhodecode.config.environment import load_environment
conf = appconfig('config:development.ini', relative_to='./../../')
load_environment(conf.global_conf, conf.local_conf)
add_cache(conf)
changed mercurial test operations script
r896
USER = 'test_admin'
PASS = 'test12'
HOST = '127.0.0.1:5000'
Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users....
r910 DEBUG = True
changed mercurial test operations script
r896 log = logging.getLogger(__name__)
fixed hg operations test script
r909
class Command(object):
def __init__(self, cwd):
self.cwd = cwd
changed mercurial test operations script
r896
fixed hg operations test script
r909 def execute(self, cmd, *args):
"""Runs command on the system with given ``args``.
"""
command = cmd + ' ' + ' '.join(args)
log.debug('Executing %s' % command)
Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users....
r910 if DEBUG:
print command
fixed hg operations test script
r909 p = Popen(command, shell=True, stdout=PIPE, stderr=PIPE, cwd=self.cwd)
stdout, stderr = p.communicate()
Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users....
r910 if DEBUG:
print stdout, stderr
fixed hg operations test script
r909 return stdout, stderr
changed mercurial test operations script
r896
Added sql session into test hg script...
r930 def get_session():
engine = engine_from_config(conf, 'sqlalchemy.db1.')
init_model(engine)
sa = meta.Session()
return sa
def create_test_user(force=True):
updated testing script for hg operations
r1008 print 'creating test user'
Added sql session into test hg script...
r930 sa = get_session()
user = sa.query(User).filter(User.username == USER).scalar()
fixed test hg operations script
r988
updated testing script for hg operations
r1008 if force and user is not None:
print 'removing current user'
tests update
r1047 for repo in sa.query(Repository).filter(Repository.user == user).all():
sa.delete(repo)
Added sql session into test hg script...
r930 sa.delete(user)
sa.commit()
if user is None or force:
updated testing script for hg operations
r1008 print 'creating new one'
Added sql session into test hg script...
r930 new_usr = User()
new_usr.username = USER
new_usr.password = get_crypt_password(PASS)
fixed test hg operations script
r988 new_usr.email = 'mail@mail.com'
new_usr.name = 'test'
new_usr.lastname = 'lasttestname'
Added sql session into test hg script...
r930 new_usr.active = True
updated testing script for hg operations
r1008 new_usr.admin = True
Added sql session into test hg script...
r930 sa.add(new_usr)
sa.commit()
updated testing script for hg operations
r1008 print 'done'
def create_test_repo(force=True):
from rhodecode.model.repo import RepoModel
sa = get_session()
user = sa.query(User).filter(User.username == USER).scalar()
if user is None:
raise Exception('user not found')
Added sql session into test hg script...
r930
updated testing script for hg operations
r1008 repo = sa.query(Repository).filter(Repository.repo_name == HG_REPO).scalar()
if repo is None:
print 'repo not found creating'
form_data = {'repo_name':HG_REPO,
'repo_type':'hg',
'private':False, }
rm = RepoModel(sa)
rm.base_path = '/home/hg'
rm.create(form_data, user)
changed mercurial test operations script
r896
tests update
r1047
def set_anonymous_access(enable=True):
sa = get_session()
user = sa.query(User).filter(User.username == 'default').one()
user.active = enable
sa.add(user)
sa.commit()
def get_anonymous_access():
sa = get_session()
return sa.query(User).filter(User.username == 'default').one().active
Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users....
r910 #==============================================================================
changed mercurial test operations script
r896 # TESTS
Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users....
r910 #==============================================================================
updated testing script for hg operations
r1008 def test_clone(no_errors=False):
fixed hg operations test script
r909 cwd = path = jn(TESTS_TMP_PATH, HG_REPO)
changed mercurial test operations script
r896 try:
fixed hg operations test script
r909 shutil.rmtree(path, ignore_errors=True)
os.makedirs(path)
#print 'made dirs %s' % jn(path)
changed mercurial test operations script
r896 except OSError:
fixed hg operations test script
r909 raise
changed mercurial test operations script
r896
clone_url = 'http://%(user)s:%(pass)s@%(host)s/%(cloned_repo)s %(dest)s' % \
{'user':USER,
'pass':PASS,
'host':HOST,
'cloned_repo':HG_REPO,
fixed hg operations test script
r909 'dest':path}
stdout, stderr = Command(cwd).execute('hg clone', clone_url)
updated testing script for hg operations
r1008 if no_errors is False:
assert """adding file changes""" in stdout, 'no messages about cloning'
assert """abort""" not in stderr , 'got error from clone'
fixed hg operations test script
r909
def test_clone_anonymous_ok():
cwd = path = jn(TESTS_TMP_PATH, HG_REPO)
try:
shutil.rmtree(path, ignore_errors=True)
os.makedirs(path)
#print 'made dirs %s' % jn(path)
except OSError:
raise
tests update
r1047 print 'checking if anonymous access is enabled'
anonymous_access = get_anonymous_access()
if not anonymous_access:
print 'not enabled, enabling it '
set_anonymous_access(enable=True)
fixed hg operations test script
r909 clone_url = 'http://%(host)s/%(cloned_repo)s %(dest)s' % \
{'user':USER,
'pass':PASS,
'host':HOST,
'cloned_repo':HG_REPO,
'dest':path}
changed mercurial test operations script
r896
fixed hg operations test script
r909 stdout, stderr = Command(cwd).execute('hg clone', clone_url)
print stdout, stderr
tests update
r1047
fixed hg operations test script
r909 assert """adding file changes""" in stdout, 'no messages about cloning'
assert """abort""" not in stderr , 'got error from clone'
tests update
r1047 #disable if it was enabled
if not anonymous_access:
print 'disabling anonymous access'
set_anonymous_access(enable=False)
fixed hg operations test script
r909 def test_clone_wrong_credentials():
cwd = path = jn(TESTS_TMP_PATH, HG_REPO)
try:
shutil.rmtree(path, ignore_errors=True)
os.makedirs(path)
#print 'made dirs %s' % jn(path)
except OSError:
raise
clone_url = 'http://%(user)s:%(pass)s@%(host)s/%(cloned_repo)s %(dest)s' % \
{'user':USER + 'error',
'pass':PASS,
'host':HOST,
'cloned_repo':HG_REPO,
'dest':path}
stdout, stderr = Command(cwd).execute('hg clone', clone_url)
assert """abort: authorization failed""" in stderr , 'no error from wrong credentials'
changed mercurial test operations script
r896
def test_pull():
pass
updated testing script for hg operations
r1008 def test_push_modify_file(f_name='setup.py'):
cwd = path = jn(TESTS_TMP_PATH, HG_REPO)
modified_file = jn(TESTS_TMP_PATH, HG_REPO, f_name)
changed mercurial test operations script
r896 for i in xrange(5):
cmd = """echo 'added_line%s' >> %s""" % (i, modified_file)
fixed hg operations test script
r909 Command(cwd).execute(cmd)
changed mercurial test operations script
r896
cmd = """hg ci -m 'changed file %s' %s """ % (i, modified_file)
fixed hg operations test script
r909 Command(cwd).execute(cmd)
changed mercurial test operations script
r896
fixed hg operations test script
r909 Command(cwd).execute('hg push %s' % jn(TESTS_TMP_PATH, HG_REPO))
changed mercurial test operations script
r896
Added sql session into test hg script...
r930 def test_push_new_file(commits=15):
fixed hg operations test script
r909
updated testing script for hg operations
r1008 test_clone(no_errors=True)
changed mercurial test operations script
r896
fixed hg operations test script
r909 cwd = path = jn(TESTS_TMP_PATH, HG_REPO)
fixed unicode problems with file paths....
r1087 added_file = jn(path, '%ssetupążźć.py' % _RandomNameSequence().next())
changed mercurial test operations script
r896
fixed hg operations test script
r909 Command(cwd).execute('touch %s' % added_file)
Command(cwd).execute('hg add %s' % added_file)
changed mercurial test operations script
r896
Added sql session into test hg script...
r930 for i in xrange(commits):
changed mercurial test operations script
r896 cmd = """echo 'added_line%s' >> %s""" % (i, added_file)
fixed hg operations test script
r909 Command(cwd).execute(cmd)
changed mercurial test operations script
r896
cmd = """hg ci -m 'commited new %s' %s """ % (i, added_file)
fixed hg operations test script
r909 Command(cwd).execute(cmd)
changed mercurial test operations script
r896
fixed hg operations test script
r909 push_url = 'http://%(user)s:%(pass)s@%(host)s/%(cloned_repo)s' % \
{'user':USER,
'pass':PASS,
'host':HOST,
'cloned_repo':HG_REPO,
'dest':jn(TESTS_TMP_PATH, HG_REPO)}
Added sql session into test hg script...
r930 Command(cwd).execute('hg push --verbose --debug %s' % push_url)
changed mercurial test operations script
r896
def test_push_wrong_credentials():
updated testing script for hg operations
r1008 cwd = path = jn(TESTS_TMP_PATH, HG_REPO)
changed mercurial test operations script
r896 clone_url = 'http://%(user)s:%(pass)s@%(host)s/%(cloned_repo)s' % \
{'user':USER + 'xxx',
'pass':PASS,
'host':HOST,
'cloned_repo':HG_REPO,
'dest':jn(TESTS_TMP_PATH, HG_REPO)}
modified_file = jn(TESTS_TMP_PATH, HG_REPO, 'setup.py')
for i in xrange(5):
cmd = """echo 'added_line%s' >> %s""" % (i, modified_file)
fixed hg operations test script
r909 Command(cwd).execute(cmd)
changed mercurial test operations script
r896
cmd = """hg ci -m 'commited %s' %s """ % (i, modified_file)
fixed hg operations test script
r909 Command(cwd).execute(cmd)
changed mercurial test operations script
r896
fixed hg operations test script
r909 Command(cwd).execute('hg push %s' % clone_url)
changed mercurial test operations script
r896
updated mercurial test operations script
r897 def test_push_wrong_path():
fixed hg operations test script
r909 cwd = path = jn(TESTS_TMP_PATH, HG_REPO)
added_file = jn(path, 'somefile.py')
changed mercurial test operations script
r896
updated mercurial test operations script
r897 try:
fixed hg operations test script
r909 shutil.rmtree(path, ignore_errors=True)
os.makedirs(path)
print 'made dirs %s' % jn(path)
updated mercurial test operations script
r897 except OSError:
fixed hg operations test script
r909 raise
updated mercurial test operations script
r897
fixed hg operations test script
r909 Command(cwd).execute("""echo '' > %s""" % added_file)
Command(cwd).execute("""hg init %s""" % path)
Command(cwd).execute("""hg add %s""" % added_file)
updated mercurial test operations script
r897
for i in xrange(2):
cmd = """echo 'added_line%s' >> %s""" % (i, added_file)
fixed hg operations test script
r909 Command(cwd).execute(cmd)
updated mercurial test operations script
r897
cmd = """hg ci -m 'commited new %s' %s """ % (i, added_file)
fixed hg operations test script
r909 Command(cwd).execute(cmd)
updated mercurial test operations script
r897
fixed hg operations test script
r909 clone_url = 'http://%(user)s:%(pass)s@%(host)s/%(cloned_repo)s' % \
{'user':USER,
'pass':PASS,
'host':HOST,
'cloned_repo':HG_REPO + '_error',
'dest':jn(TESTS_TMP_PATH, HG_REPO)}
stdout, stderr = Command(cwd).execute('hg push %s' % clone_url)
assert """abort: HTTP Error 403: Forbidden""" in stderr
changed mercurial test operations script
r896
if __name__ == '__main__':
updated testing script for hg operations
r1008 create_test_user(force=False)
create_test_repo()
#test_push_modify_file()
#test_clone()
#test_clone_anonymous_ok()
Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users....
r910
#test_clone_wrong_credentials()
fixed test hg operations script
r988
Added sql session into test hg script...
r930 #test_pull()
fixed unicode problems with file paths....
r1087 test_push_new_file(commits=15)
fixed hg operations test script
r909 #test_push_wrong_path()
#test_push_wrong_credentials()