diff --git a/rhodecode/tests/functional/test_forks.py b/rhodecode/tests/functional/test_forks.py
--- a/rhodecode/tests/functional/test_forks.py
+++ b/rhodecode/tests/functional/test_forks.py
@@ -1,20 +1,39 @@
+# -*- coding: utf-8 -*-
from rhodecode.tests import *
+from rhodecode.tests.fixture import Fixture
from rhodecode.model.db import Repository
from rhodecode.model.repo import RepoModel
from rhodecode.model.user import UserModel
from rhodecode.model.meta import Session
+fixture = Fixture()
-class TestForksController(TestController):
+from rhodecode.tests import *
+
+
+class _BaseTest(TestController):
+ """
+ Write all tests here
+ """
+ REPO = None
+ REPO_TYPE = None
+ NEW_REPO = None
+ REPO_FORK = None
+
+ @classmethod
+ def setup_class(cls):
+ pass
+
+ @classmethod
+ def teardown_class(cls):
+ pass
def setUp(self):
self.username = u'forkuser'
self.password = u'qweqwe'
- self.u1 = UserModel().create_or_update(
- username=self.username, password=self.password,
- email=u'fork_king@rhodecode.org', firstname=u'u1', lastname=u'u1'
- )
+ self.u1 = fixture.create_user(self.username, password=self.password,
+ email=u'fork_king@rhodecode.org')
Session().commit()
def tearDown(self):
@@ -23,7 +42,7 @@ class TestForksController(TestController
def test_index(self):
self.log_user()
- repo_name = HG_REPO
+ repo_name = self.REPO
response = self.app.get(url(controller='forks', action='forks',
repo_name=repo_name))
@@ -39,28 +58,29 @@ class TestForksController(TestController
u.inherit_default_permissions = False
Session().commit()
# try create a fork
- repo_name = HG_REPO
+ repo_name = self.REPO
self.app.post(url(controller='forks', action='fork_create',
repo_name=repo_name), {}, status=403)
- def test_index_with_fork_hg(self):
+ def test_index_with_fork(self):
self.log_user()
# create a fork
- fork_name = HG_FORK
+ fork_name = self.REPO_FORK
description = 'fork of vcs test'
- repo_name = HG_REPO
+ repo_name = self.REPO
org_repo = Repository.get_by_repo_name(repo_name)
- response = self.app.post(url(controller='forks',
- action='fork_create',
- repo_name=repo_name),
- {'repo_name': fork_name,
- 'repo_group': '',
- 'fork_parent_id': org_repo.repo_id,
- 'repo_type': 'hg',
- 'description': description,
- 'private': 'False',
- 'landing_rev': 'tip'})
+ creation_args = {
+ 'repo_name': fork_name,
+ 'repo_group': '',
+ 'fork_parent_id': org_repo.repo_id,
+ 'repo_type': self.REPO_TYPE,
+ 'description': description,
+ 'private': 'False',
+ 'landing_rev': 'rev:tip'}
+
+ self.app.post(url(controller='forks', action='fork_create',
+ repo_name=repo_name), creation_args)
response = self.app.get(url(controller='forks', action='forks',
repo_name=repo_name))
@@ -69,54 +89,75 @@ class TestForksController(TestController
"""%s""" % (fork_name, fork_name)
)
- #remove this fork
+ # remove this fork
response = self.app.delete(url('repo', repo_name=fork_name))
- def test_index_with_fork_git(self):
+ def test_fork_create_into_group(self):
self.log_user()
-
- # create a fork
- fork_name = GIT_FORK
+ group = fixture.create_repo_group('vc')
+ group_id = group.group_id
+ fork_name = self.REPO_FORK
+ fork_name_full = 'vc/%s' % fork_name
description = 'fork of vcs test'
- repo_name = GIT_REPO
+ repo_name = self.REPO
org_repo = Repository.get_by_repo_name(repo_name)
- response = self.app.post(url(controller='forks',
- action='fork_create',
- repo_name=repo_name),
- {'repo_name': fork_name,
- 'repo_group': '',
- 'fork_parent_id': org_repo.repo_id,
- 'repo_type': 'git',
- 'description': description,
- 'private': 'False',
- 'landing_rev': 'tip'})
+ creation_args = {
+ 'repo_name': fork_name,
+ 'repo_group': group_id,
+ 'fork_parent_id': org_repo.repo_id,
+ 'repo_type': self.REPO_TYPE,
+ 'description': description,
+ 'private': 'False',
+ 'landing_rev': 'rev:tip'}
+ self.app.post(url(controller='forks', action='fork_create',
+ repo_name=repo_name), creation_args)
+ repo = Repository.get_by_repo_name(fork_name_full)
+ assert repo.fork.repo_name == self.REPO
- response = self.app.get(url(controller='forks', action='forks',
- repo_name=repo_name))
+ ## run the check page that triggers the flash message
+ response = self.app.get(url('repo_check_home', repo_name=fork_name_full))
+ #test if we have a message that fork is ok
+ self.checkSessionFlash(response,
+ 'Forked repository %s as %s'
+ % (repo_name, fork_name_full, fork_name_full))
+
+ #test if the fork was created in the database
+ fork_repo = Session().query(Repository)\
+ .filter(Repository.repo_name == fork_name_full).one()
- response.mustcontain(
- """%s""" % (fork_name, fork_name)
- )
+ self.assertEqual(fork_repo.repo_name, fork_name_full)
+ self.assertEqual(fork_repo.fork.repo_name, repo_name)
- #remove this fork
- response = self.app.delete(url('repo', repo_name=fork_name))
+ # test if the repository is visible in the list ?
+ response = self.app.get(url('summary_home', repo_name=fork_name_full))
+ response.mustcontain(fork_name_full)
+ response.mustcontain(self.REPO_TYPE)
+ response.mustcontain('Fork of "%s"' % (repo_name, repo_name))
+
+ fixture.destroy_repo(fork_name_full)
+ fixture.destroy_repo_group(group_id)
def test_z_fork_create(self):
self.log_user()
- fork_name = HG_FORK
+ fork_name = self.REPO_FORK
description = 'fork of vcs test'
- repo_name = HG_REPO
+ repo_name = self.REPO
org_repo = Repository.get_by_repo_name(repo_name)
- response = self.app.post(url(controller='forks', action='fork_create',
- repo_name=repo_name),
- {'repo_name': fork_name,
- 'repo_group':'',
- 'fork_parent_id':org_repo.repo_id,
- 'repo_type':'hg',
- 'description':description,
- 'private':'False',
- 'landing_rev': 'tip'})
+ creation_args = {
+ 'repo_name': fork_name,
+ 'repo_group': '',
+ 'fork_parent_id': org_repo.repo_id,
+ 'repo_type': self.REPO_TYPE,
+ 'description': description,
+ 'private': 'False',
+ 'landing_rev': 'rev:tip'}
+ self.app.post(url(controller='forks', action='fork_create',
+ repo_name=repo_name), creation_args)
+ repo = Repository.get_by_repo_name(self.REPO_FORK)
+ assert repo.fork.repo_name == self.REPO
+ ## run the check page that triggers the flash message
+ response = self.app.get(url('repo_check_home', repo_name=fork_name))
#test if we have a message that fork is ok
self.checkSessionFlash(response,
'Forked repository %s as %s'
@@ -129,21 +170,19 @@ class TestForksController(TestController
self.assertEqual(fork_repo.repo_name, fork_name)
self.assertEqual(fork_repo.fork.repo_name, repo_name)
- #test if fork is visible in the list ?
- response = response.follow()
-
- response = self.app.get(url(controller='summary', action='index',
- repo_name=fork_name))
-
- response.mustcontain('Fork of %s' % repo_name)
+ # test if the repository is visible in the list ?
+ response = self.app.get(url('summary_home', repo_name=fork_name))
+ response.mustcontain(fork_name)
+ response.mustcontain(self.REPO_TYPE)
+ response.mustcontain('Fork of "%s"' % (repo_name, repo_name))
def test_zz_fork_permission_page(self):
usr = self.log_user(self.username, self.password)['user_id']
- repo_name = HG_REPO
+ repo_name = self.REPO
- forks = Session().query(Repository)\
- .filter(Repository.fork_id != None)\
- .all()
+ forks = Repository.query()\
+ .filter(Repository.repo_type == self.REPO_TYPE)\
+ .filter(Repository.fork_id != None).all()
self.assertEqual(1, len(forks))
# set read permissions for this
@@ -159,11 +198,11 @@ class TestForksController(TestController
def test_zzz_fork_permission_page(self):
usr = self.log_user(self.username, self.password)['user_id']
- repo_name = HG_REPO
+ repo_name = self.REPO
- forks = Session().query(Repository)\
- .filter(Repository.fork_id != None)\
- .all()
+ forks = Repository.query()\
+ .filter(Repository.repo_type == self.REPO_TYPE)\
+ .filter(Repository.fork_id != None).all()
self.assertEqual(1, len(forks))
# set none
@@ -174,3 +213,17 @@ class TestForksController(TestController
response = self.app.get(url(controller='forks', action='forks',
repo_name=repo_name))
response.mustcontain('There are no forks yet')
+
+
+class TestGIT(_BaseTest):
+ REPO = GIT_REPO
+ NEW_REPO = NEW_GIT_REPO
+ REPO_TYPE = 'git'
+ REPO_FORK = GIT_FORK
+
+
+class TestHG(_BaseTest):
+ REPO = HG_REPO
+ NEW_REPO = NEW_HG_REPO
+ REPO_TYPE = 'hg'
+ REPO_FORK = HG_FORK