aboutsummaryrefslogtreecommitdiff
path: root/rhodecode/tests/scripts/test_vcs_operations.py
diff options
context:
space:
mode:
Diffstat (limited to 'rhodecode/tests/scripts/test_vcs_operations.py')
-rwxr-xr-xrhodecode/tests/scripts/test_vcs_operations.py50
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 == ''