diff options
author | Douwe Maan <douwe@gitlab.com> | 2019-02-25 14:24:13 +0300 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2019-02-25 14:24:13 +0300 |
commit | 8cb236908f03cba6f6a1ad5660ce8fbdfa32a50d (patch) | |
tree | 9b4b4215780394c2b4c4f339b154250be6ae3eeb /spec/requests | |
parent | e5c7027faffb75f1d2f7221fa11609741010d82f (diff) | |
parent | 99633a8fa387037697cb0faa04da40972dcc58cc (diff) |
Merge branch '40795-set-project-name-on-fork-api' into 'master'
Add ability to set project path and name on fork using API
Closes #40795
See merge request gitlab-org/gitlab-ce!25363
Diffstat (limited to 'spec/requests')
-rw-r--r-- | spec/requests/api/projects_spec.rb | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index cfa7a1a31a3..494808e399f 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -1995,6 +1995,11 @@ describe API::Projects do let(:project) do create(:project, :repository, creator: user, namespace: user.namespace) end + + let(:project2) do + create(:project, :repository, creator: user, namespace: user.namespace) + end + let(:group) { create(:group) } let(:group2) do group = create(:group, name: 'group2_name') @@ -2010,6 +2015,7 @@ describe API::Projects do before do project.add_reporter(user2) + project2.add_reporter(user2) end context 'when authenticated' do @@ -2124,6 +2130,48 @@ describe API::Projects do expect(response).to have_gitlab_http_status(201) expect(json_response['namespace']['name']).to eq(group.name) end + + it 'accepts a path for the target project' do + post api("/projects/#{project.id}/fork", user2), params: { path: 'foobar' } + + expect(response).to have_gitlab_http_status(201) + expect(json_response['name']).to eq(project.name) + expect(json_response['path']).to eq('foobar') + expect(json_response['owner']['id']).to eq(user2.id) + expect(json_response['namespace']['id']).to eq(user2.namespace.id) + expect(json_response['forked_from_project']['id']).to eq(project.id) + expect(json_response['import_status']).to eq('scheduled') + expect(json_response).to include("import_error") + end + + it 'fails to fork if path is already taken' do + post api("/projects/#{project.id}/fork", user2), params: { path: 'foobar' } + post api("/projects/#{project2.id}/fork", user2), params: { path: 'foobar' } + + expect(response).to have_gitlab_http_status(409) + expect(json_response['message']['path']).to eq(['has already been taken']) + end + + it 'accepts a name for the target project' do + post api("/projects/#{project.id}/fork", user2), params: { name: 'My Random Project' } + + expect(response).to have_gitlab_http_status(201) + expect(json_response['name']).to eq('My Random Project') + expect(json_response['path']).to eq(project.path) + expect(json_response['owner']['id']).to eq(user2.id) + expect(json_response['namespace']['id']).to eq(user2.namespace.id) + expect(json_response['forked_from_project']['id']).to eq(project.id) + expect(json_response['import_status']).to eq('scheduled') + expect(json_response).to include("import_error") + end + + it 'fails to fork if name is already taken' do + post api("/projects/#{project.id}/fork", user2), params: { name: 'My Random Project' } + post api("/projects/#{project2.id}/fork", user2), params: { name: 'My Random Project' } + + expect(response).to have_gitlab_http_status(409) + expect(json_response['message']['name']).to eq(['has already been taken']) + end end context 'when unauthenticated' do |