##// END OF EJS Templates
Implement all CRUD API operation for repo
Implement all CRUD API operation for repo

File last commit:

r1532:2afe9320 beta
r1587:8898a79a beta
Show More
test_hg_operations.py
378 lines | 10.6 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
updated test_hg_operation script
r1498 import time
import sys
changed mercurial test operations script
r896 import shutil
import logging
updated test_hg_operation script
r1498
Added sql session into test hg script...
r930 from os.path import join as jn
fixed path for .ini file in test hg operations
r1277 from os.path import dirname as dn
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
fixed path for .ini file in test hg operations
r1277 rel_path = dn(dn(dn(os.path.abspath(__file__))))
conf = appconfig('config:development.ini', relative_to=rel_path)
Added sql session into test hg script...
r930 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'
updated test_hg_operation script
r1498 DEBUG = bool(int(sys.argv[1]))
print 'DEBUG:',DEBUG
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
updated test_hg_operation script
r1498
def test_wrapp(func):
def __wrapp(*args,**kwargs):
print '###%s###' %func.__name__
try:
res = func(*args,**kwargs)
except:
print '--%s failed--' % func.__name__
return
print 'ok'
return res
return __wrapp
Added sql session into test hg script...
r930 def get_session():
engine = engine_from_config(conf, 'sqlalchemy.db1.')
init_model(engine)
updated test_hg_operation script
r1498 sa = meta.Session
Added sql session into test hg script...
r930 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',
small fixes to test_hg_operations script
r1296 'private':False,
'clone_uri':'' }
updated testing script for hg operations
r1008 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()
updated test_hg_operation script
r1498 sa.remove()
print 'anonymous access is now:',enable
tests update
r1047
def get_anonymous_access():
sa = get_session()
updated test_hg_operation script
r1498 obj1 = sa.query(User).filter(User.username == 'default').one()
sa.expire(obj1)
return obj1.active
tests update
r1047
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 test_hg_operation script
r1498 @test_wrapp
def test_clone_with_credentials(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
updated test_hg_operation script
r1498 print 'checking if anonymous access is enabled'
anonymous_access = get_anonymous_access()
if anonymous_access:
print 'enabled, disabling it '
set_anonymous_access(enable=False)
time.sleep(1)
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
updated test_hg_operation script
r1498 @test_wrapp
def test_clone_anonymous():
fixed hg operations test script
r909 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)
updated test_hg_operation script
r1498 time.sleep(1)
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)
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)
updated test_hg_operation script
r1498 @test_wrapp
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
updated test_hg_operation script
r1498 print 'checking if anonymous access is enabled'
anonymous_access = get_anonymous_access()
if anonymous_access:
print 'enabled, disabling it '
set_anonymous_access(enable=False)
fixed hg operations test script
r909 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)
updated test_hg_operation script
r1498 if not """abort: authorization failed""" in stderr:
raise Exception('Failure')
fixed hg operations test script
r909
updated test_hg_operation script
r1498 @test_wrapp
changed mercurial test operations script
r896 def test_pull():
pass
updated test_hg_operation script
r1498 @test_wrapp
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
updated test_hg_operation script
r1498 @test_wrapp
small fixes to test_hg_operations script
r1296 def test_push_new_file(commits=15, with_clone=True):
fixed hg operations test script
r909
small fixes to test_hg_operations script
r1296 if with_clone:
updated test_hg_operation script
r1498 test_clone_with_credentials(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
small fixes to test_hg_operations script
r1296 cmd = """hg ci -m 'commited new %s' -u '%s' %s """ % (i,
'Marcin Kuźminski <marcin@python-blog.com>',
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
updated test_hg_operation script
r1498 @test_wrapp
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 test_hg_operation script
r1498 @test_wrapp
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)
updated test_hg_operation script
r1498 if not """abort: HTTP Error 403: Forbidden""" in stderr:
raise Exception('Failure')
fixed hg operations test script
r909
changed mercurial test operations script
r896
if __name__ == '__main__':
updated testing script for hg operations
r1008 create_test_user(force=False)
create_test_repo()
updated test_hg_operation script
r1498
# test_push_modify_file()
test_clone_with_credentials()
test_clone_wrong_credentials()
Rewrite simehg for enabling cloning with raw url for anonymous access + some optimizations for making less queries when authenticating users....
r910
fixed test hg operations script
r988
small fixes to test_hg_operations script
r1296 test_push_new_file(commits=2, with_clone=True)
updated test_hg_operation script
r1498 #
test_push_wrong_path()
test_clone_anonymous()
test_push_wrong_credentials()