Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlaf Tomalka <olaf.tomalka@gmail.com>2016-09-06 11:52:42 +0300
committerOlaf Tomalka <olaf.tomalka@gmail.com>2016-09-06 11:52:42 +0300
commit3aa40153e08c959878ba5430d9700935a5195e48 (patch)
treeaea38ea12c10dfdbfe27a1eb1811c598ac11f1c8 /spec/requests/api/fork_spec.rb
parentbad3fb895cad46c52575aa91b02f7e7786634a47 (diff)
Improved code quality on API fork namespace feature
Diffstat (limited to 'spec/requests/api/fork_spec.rb')
-rw-r--r--spec/requests/api/fork_spec.rb30
1 files changed, 22 insertions, 8 deletions
diff --git a/spec/requests/api/fork_spec.rb b/spec/requests/api/fork_spec.rb
index 97f17efc053..91b69384aad 100644
--- a/spec/requests/api/fork_spec.rb
+++ b/spec/requests/api/fork_spec.rb
@@ -28,6 +28,7 @@ describe API::API, api: true do
context 'when authenticated' do
it 'forks if user has sufficient access to project' do
post api("/projects/fork/#{project.id}", user2)
+
expect(response).to have_http_status(201)
expect(json_response['name']).to eq(project.name)
expect(json_response['path']).to eq(project.path)
@@ -38,6 +39,7 @@ describe API::API, api: true do
it 'forks if user is admin' do
post api("/projects/fork/#{project.id}", admin)
+
expect(response).to have_http_status(201)
expect(json_response['name']).to eq(project.name)
expect(json_response['path']).to eq(project.path)
@@ -48,12 +50,14 @@ describe API::API, api: true do
it 'fails on missing project access for the project to fork' do
post api("/projects/fork/#{project.id}", user3)
+
expect(response).to have_http_status(404)
expect(json_response['message']).to eq('404 Project Not Found')
end
it 'fails if forked project exists in the user namespace' do
post api("/projects/fork/#{project.id}", user)
+
expect(response).to have_http_status(409)
expect(json_response['message']['name']).to eq(['has already been taken'])
expect(json_response['message']['path']).to eq(['has already been taken'])
@@ -61,52 +65,61 @@ describe API::API, api: true do
it 'fails if project to fork from does not exist' do
post api('/projects/fork/424242', user)
+
expect(response).to have_http_status(404)
expect(json_response['message']).to eq('404 Project Not Found')
end
it 'forks with explicit own user namespace id' do
- post api("/projects/fork/#{project.id}?namespace=#{user2.namespace.id}", user2)
+ post api("/projects/fork/#{project.id}", user2), namespace: user2.namespace.id
+
expect(response).to have_http_status(201)
expect(json_response['owner']['id']).to eq(user2.id)
end
it 'forks with explicit own user name as namespace' do
- post api("/projects/fork/#{project.id}?namespace=#{user2.username}", user2)
+ post api("/projects/fork/#{project.id}", user2), namespace: user2.username
+
expect(response).to have_http_status(201)
expect(json_response['owner']['id']).to eq(user2.id)
end
it 'forks to another user when admin' do
- post api("/projects/fork/#{project.id}?namespace=#{user2.username}", admin)
+ post api("/projects/fork/#{project.id}", admin), namespace: user2.username
+
expect(response).to have_http_status(201)
expect(json_response['owner']['id']).to eq(user2.id)
end
it 'fails if trying to fork to another user when not admin' do
- post api("/projects/fork/#{project.id}?namespace=#{admin.namespace.id}", user2)
+ post api("/projects/fork/#{project.id}", user2), namespace: admin.namespace.id
+
expect(response).to have_http_status(403)
end
it 'fails if trying to fork to non-existent namespace' do
- post api("/projects/fork/#{project.id}?namespace=42424242", user2)
+ post api("/projects/fork/#{project.id}", user2), namespace: 42424242
+
expect(response).to have_http_status(404)
expect(json_response['message']).to eq('404 Target Namespace Not Found')
end
it 'forks to owned group' do
- post api("/projects/fork/#{project.id}?namespace=#{group2.name}", user2)
+ post api("/projects/fork/#{project.id}", user2), namespace: group2.name
+
expect(response).to have_http_status(201)
expect(json_response['namespace']['name']).to eq(group2.name)
end
it 'fails to fork to not owned group' do
- post api("/projects/fork/#{project.id}?namespace=#{group.name}", user2)
+ post api("/projects/fork/#{project.id}", user2), namespace: group.name
+
expect(response).to have_http_status(403)
end
it 'forks to not owned group when admin' do
- post api("/projects/fork/#{project.id}?namespace=#{group.name}", admin)
+ post api("/projects/fork/#{project.id}", admin), namespace: group.name
+
expect(response).to have_http_status(201)
expect(json_response['namespace']['name']).to eq(group.name)
end
@@ -115,6 +128,7 @@ describe API::API, api: true do
context 'when unauthenticated' do
it 'returns authentication error' do
post api("/projects/fork/#{project.id}")
+
expect(response).to have_http_status(401)
expect(json_response['message']).to eq('401 Unauthorized')
end