@@ -1666,27 +1666,28 @@ class ApiController(JSONRPCController):
raise JSONRPCError('no permission to create repositories')
else:
raise JSONRPCError('repository `%s` does not exist' % (repoid,))
if isinstance(owner, Optional):
owner = apiuser.user_id
owner = get_user_or_error(owner)
try:
# create structure of groups and return the last group
group = map_groups(fork_name)
fork_base_name = fork_name.rsplit('/', 1)[-1]
form_data = dict(
repo_name=fork_name,
repo_name=fork_base_name,
repo_name_full=fork_name,
repo_group=group,
repo_type=repo.repo_type,
description=Optional.extract(description),
private=Optional.extract(private),
copy_permissions=Optional.extract(copy_permissions),
landing_rev=Optional.extract(landing_rev),
update_after_clone=False,
fork_parent_id=repo.repo_id,
)
task = RepoModel().create_fork(form_data, cur_user=owner)
# no commit, it's done in RepoModel, or async via celery
@@ -1382,26 +1382,29 @@ class _BaseTestApi(object):
response = api_call(self, params)
ret = {
'msg': 'Created fork of `%s` as `%s`' % (self.REPO,
fork_name),
'success': True,
'task': None,
}
expected = ret
self._compare_ok(id_, expected, given=response.body)
fixture.destroy_repo(fork_name)
def test_api_fork_repo_non_admin(self):
fork_name = 'api-repo-fork'
@parameterized.expand([
(u'api-repo-fork',),
(u'%s/api-repo-fork' % TEST_REPO_GROUP,),
])
def test_api_fork_repo_non_admin(self, fork_name):
id_, params = _build_data(self.apikey_regular, 'fork_repo',
repoid=self.REPO,
fork_name=fork_name,
Status change: