changeset 7295:d314edb04d11

tests: tweak test coverage of repo creation API - prepare for other changes
author Mads Kiilerich <mads@kiilerich.com>
date Tue, 29 May 2018 12:25:40 +0200
parents a569b523f86a
children caa482f8fb5f
files kallithea/tests/api/api_base.py
diffstat 1 files changed, 26 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/tests/api/api_base.py	Mon May 07 11:38:40 2018 +0200
+++ b/kallithea/tests/api/api_base.py	Tue May 29 12:25:40 2018 +0200
@@ -35,7 +35,7 @@
 from kallithea.model.scm import ScmModel
 from kallithea.model.gist import GistModel
 from kallithea.model.changeset_status import ChangesetStatusModel
-from kallithea.model.db import Repository, User, Setting, Ui, PullRequest, ChangesetStatus
+from kallithea.model.db import Repository, User, Setting, Ui, PullRequest, ChangesetStatus, RepoGroup
 from kallithea.lib.utils2 import time_to_datetime
 
 
@@ -1062,24 +1062,25 @@
         fixture.destroy_repo(repo_name)
 
     def test_api_create_repo_and_repo_group(self):
-        repo_name = u'my_gr/api-repo'
+        repo_group_name = u'my_gr'
+        repo_name = u'%s/api-repo' % repo_group_name
+
         id_, params = _build_data(self.apikey, 'create_repo',
                                   repo_name=repo_name,
                                   owner=TEST_USER_ADMIN_LOGIN,
                                   repo_type=self.REPO_TYPE,)
         response = api_call(self, params)
-        print params
-        repo = RepoModel().get_by_repo_name(repo_name)
-        assert repo is not None
-        ret = {
+        expected = {
             'msg': 'Created new repository `%s`' % repo_name,
             'success': True,
             'task': None,
         }
-        expected = ret
         self._compare_ok(id_, expected, given=response.body)
+        repo = RepoModel().get_by_repo_name(repo_name)
+        assert repo is not None
+
         fixture.destroy_repo(repo_name)
-        fixture.destroy_repo_group(u'my_gr')
+        fixture.destroy_repo_group(repo_group_name)
 
     def test_api_create_repo_in_repo_group_without_permission(self):
         repo_group_name = u'%s/api-repo-repo' % TEST_REPO_GROUP
@@ -1189,6 +1190,23 @@
         expected = "repo `%s` already exist" % repo_name
         self._compare_error(id_, expected, given=response.body)
 
+    def test_api_create_repo_dot_dot(self):
+        # FIXME: it should only be possible to create repositories in existing repo groups - and '..' can't be used
+        group_name = '%s/..' % TEST_REPO_GROUP
+        repo_name = '%s/%s' % (group_name, 'could-be-outside')
+        id_, params = _build_data(self.apikey, 'create_repo',
+                                  repo_name=repo_name,
+                                  owner=TEST_USER_ADMIN_LOGIN,
+                                  repo_type=self.REPO_TYPE,)
+        response = api_call(self, params)
+        expected = {
+            u'msg': u"Created new repository `%s`" % repo_name,
+            u'success': True,
+            u'task': None,
+        }
+        self._compare_ok(id_, expected, given=response.body)
+        fixture.destroy_repo(repo_name)
+
     @mock.patch.object(RepoModel, 'create', crash)
     def test_api_create_repo_exception_occurred(self):
         repo_name = u'api-repo'