changeset 3131:21307b019ad4 beta

added integration tests for IP restriction option
author Marcin Kuzminski <marcin@python-works.com>
date Thu, 03 Jan 2013 00:44:06 +0100
parents e054a6685b17
children 5ba6249a7afe
files rhodecode/tests/scripts/test_vcs_operations.py
diffstat 1 files changed, 39 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/tests/scripts/test_vcs_operations.py	Wed Jan 02 13:45:10 2013 +0100
+++ b/rhodecode/tests/scripts/test_vcs_operations.py	Thu Jan 03 00:44:06 2013 +0100
@@ -39,6 +39,7 @@
 from rhodecode.model.db import User, Repository, UserLog
 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 +421,41 @@
 #        Session.remove()
 #        r = Repository.get_by_repo_name(GIT_REPO)
 #        assert r.locked == [None, None]
+
+    def test_ip_restriction_hg(self):
+        user_model = UserModel()
+        new_ip = 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
+
+        #release IP restrictions
+        clone_url = _construct_url(HG_REPO)
+        user_model.delete_extra_ip(TEST_USER_ADMIN_LOGIN, new_ip.ip_id)
+        Session().commit()
+        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()
+        new_ip = 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
+
+        #release IP restrictions
+        clone_url = _construct_url(GIT_REPO)
+        user_model.delete_extra_ip(TEST_USER_ADMIN_LOGIN, new_ip.ip_id)
+        Session().commit()
+        stdout, stderr = Command('/tmp').execute('git clone', clone_url)
+
+        assert 'Cloning into' in stdout
+        assert stderr == ''