diff options
Diffstat (limited to 'rhodecode/tests/scripts/test_vcs_operations.py')
-rwxr-xr-x | rhodecode/tests/scripts/test_vcs_operations.py | 50 |
1 files changed, 49 insertions, 1 deletions
diff --git a/rhodecode/tests/scripts/test_vcs_operations.py b/rhodecode/tests/scripts/test_vcs_operations.py index 2e9ca726..1ff86130 100755 --- a/rhodecode/tests/scripts/test_vcs_operations.py +++ b/rhodecode/tests/scripts/test_vcs_operations.py @@ -29,6 +29,7 @@ import os import tempfile import unittest +import time from os.path import join as jn from os.path import dirname as dn @@ -36,9 +37,10 @@ from tempfile import _RandomNameSequence from subprocess import Popen, PIPE from rhodecode.tests import * -from rhodecode.model.db import User, Repository, UserLog +from rhodecode.model.db import User, Repository, UserLog, UserIpMap from rhodecode.model.meta import Session from rhodecode.model.repo import RepoModel +from rhodecode.model.user import UserModel DEBUG = True HOST = '127.0.0.1:5000' # test host @@ -420,3 +422,49 @@ class TestVCSOperations(unittest.TestCase): # Session.remove() # r = Repository.get_by_repo_name(GIT_REPO) # assert r.locked == [None, None] + + def test_ip_restriction_hg(self): + user_model = UserModel() + try: + user_model.add_extra_ip(TEST_USER_ADMIN_LOGIN, '10.10.10.10/32') + Session().commit() + clone_url = _construct_url(HG_REPO) + stdout, stderr = Command('/tmp').execute('hg clone', clone_url) + assert 'abort: HTTP Error 403: Forbidden' in stderr + finally: + #release IP restrictions + for ip in UserIpMap.getAll(): + UserIpMap.delete(ip.ip_id) + Session().commit() + + time.sleep(2) + clone_url = _construct_url(HG_REPO) + stdout, stderr = Command('/tmp').execute('hg clone', clone_url) + + assert 'requesting all changes' in stdout + assert 'adding changesets' in stdout + assert 'adding manifests' in stdout + assert 'adding file changes' in stdout + + assert stderr == '' + + def test_ip_restriction_git(self): + user_model = UserModel() + try: + user_model.add_extra_ip(TEST_USER_ADMIN_LOGIN, '10.10.10.10/32') + Session().commit() + clone_url = _construct_url(GIT_REPO) + stdout, stderr = Command('/tmp').execute('git clone', clone_url) + assert 'error: The requested URL returned error: 403 Forbidden' in stderr + finally: + #release IP restrictions + for ip in UserIpMap.getAll(): + UserIpMap.delete(ip.ip_id) + Session().commit() + + time.sleep(2) + clone_url = _construct_url(GIT_REPO) + stdout, stderr = Command('/tmp').execute('git clone', clone_url) + + assert 'Cloning into' in stdout + assert stderr == '' |