Commit 70b927a5 authored by Douwe Maan's avatar Douwe Maan

Merge branch 'projects-api-import-status' into 'master'

Expose import_status in Projects API

Closes #19646

See merge request !11851
parents 8f7fc44b c2516115
---
title: Expose import_status in Projects API
merge_request: 11851
author: Robin Bobbitt
...@@ -81,6 +81,7 @@ Parameters: ...@@ -81,6 +81,7 @@ Parameters:
"kind": "group", "kind": "group",
"full_path": "diaspora" "full_path": "diaspora"
}, },
"import_status": "none",
"archived": false, "archived": false,
"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png", "avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",
"shared_runners_enabled": true, "shared_runners_enabled": true,
...@@ -138,6 +139,8 @@ Parameters: ...@@ -138,6 +139,8 @@ Parameters:
"kind": "group", "kind": "group",
"full_path": "brightbox" "full_path": "brightbox"
}, },
"import_status": "none",
"import_error": null,
"permissions": { "permissions": {
"project_access": { "project_access": {
"access_level": 10, "access_level": 10,
...@@ -225,6 +228,8 @@ Parameters: ...@@ -225,6 +228,8 @@ Parameters:
"kind": "group", "kind": "group",
"full_path": "diaspora" "full_path": "diaspora"
}, },
"import_status": "none",
"import_error": null,
"permissions": { "permissions": {
"project_access": { "project_access": {
"access_level": 10, "access_level": 10,
...@@ -611,6 +616,7 @@ Example response: ...@@ -611,6 +616,7 @@ Example response:
"kind": "group", "kind": "group",
"full_path": "diaspora" "full_path": "diaspora"
}, },
"import_status": "none",
"archived": true, "archived": true,
"avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png", "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
"shared_runners_enabled": true, "shared_runners_enabled": true,
...@@ -676,6 +682,7 @@ Example response: ...@@ -676,6 +682,7 @@ Example response:
"kind": "group", "kind": "group",
"full_path": "diaspora" "full_path": "diaspora"
}, },
"import_status": "none",
"archived": true, "archived": true,
"avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png", "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
"shared_runners_enabled": true, "shared_runners_enabled": true,
...@@ -747,6 +754,8 @@ Example response: ...@@ -747,6 +754,8 @@ Example response:
"kind": "group", "kind": "group",
"full_path": "diaspora" "full_path": "diaspora"
}, },
"import_status": "none",
"import_error": null,
"permissions": { "permissions": {
"project_access": { "project_access": {
"access_level": 10, "access_level": 10,
...@@ -829,6 +838,8 @@ Example response: ...@@ -829,6 +838,8 @@ Example response:
"kind": "group", "kind": "group",
"full_path": "diaspora" "full_path": "diaspora"
}, },
"import_status": "none",
"import_error": null,
"permissions": { "permissions": {
"project_access": { "project_access": {
"access_level": 10, "access_level": 10,
......
...@@ -100,6 +100,8 @@ module API ...@@ -100,6 +100,8 @@ module API
expose :creator_id expose :creator_id
expose :namespace, using: 'API::Entities::Namespace' expose :namespace, using: 'API::Entities::Namespace'
expose :forked_from_project, using: Entities::BasicProjectDetails, if: lambda{ |project, options| project.forked? } expose :forked_from_project, using: Entities::BasicProjectDetails, if: lambda{ |project, options| project.forked? }
expose :import_status
expose :import_error, if: lambda { |_project, options| options[:user_can_admin_project] }
expose :avatar_url do |user, options| expose :avatar_url do |user, options|
user.avatar_url(only_path: false) user.avatar_url(only_path: false)
end end
......
...@@ -635,6 +635,8 @@ describe API::Projects do ...@@ -635,6 +635,8 @@ describe API::Projects do
expect(json_response['shared_runners_enabled']).to be_present expect(json_response['shared_runners_enabled']).to be_present
expect(json_response['creator_id']).to be_present expect(json_response['creator_id']).to be_present
expect(json_response['namespace']).to be_present expect(json_response['namespace']).to be_present
expect(json_response['import_status']).to be_present
expect(json_response).to include("import_error")
expect(json_response['avatar_url']).to be_nil expect(json_response['avatar_url']).to be_nil
expect(json_response['star_count']).to be_present expect(json_response['star_count']).to be_present
expect(json_response['forks_count']).to be_present expect(json_response['forks_count']).to be_present
...@@ -702,6 +704,20 @@ describe API::Projects do ...@@ -702,6 +704,20 @@ describe API::Projects do
expect(json_response).to include 'statistics' expect(json_response).to include 'statistics'
end end
it "includes import_error if user can admin project" do
get api("/projects/#{project.id}", user)
expect(response).to have_http_status(200)
expect(json_response).to include("import_error")
end
it "does not include import_error if user cannot admin project" do
get api("/projects/#{project.id}", user3)
expect(response).to have_http_status(200)
expect(json_response).not_to include("import_error")
end
describe 'permissions' do describe 'permissions' do
context 'all projects' do context 'all projects' do
before { project.team << [user, :master] } before { project.team << [user, :master] }
...@@ -1464,6 +1480,8 @@ describe API::Projects do ...@@ -1464,6 +1480,8 @@ describe API::Projects do
expect(json_response['owner']['id']).to eq(user2.id) expect(json_response['owner']['id']).to eq(user2.id)
expect(json_response['namespace']['id']).to eq(user2.namespace.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['forked_from_project']['id']).to eq(project.id)
expect(json_response['import_status']).to eq('started')
expect(json_response).to include("import_error")
end end
it 'forks if user is admin' do it 'forks if user is admin' do
...@@ -1475,6 +1493,8 @@ describe API::Projects do ...@@ -1475,6 +1493,8 @@ describe API::Projects do
expect(json_response['owner']['id']).to eq(admin.id) expect(json_response['owner']['id']).to eq(admin.id)
expect(json_response['namespace']['id']).to eq(admin.namespace.id) expect(json_response['namespace']['id']).to eq(admin.namespace.id)
expect(json_response['forked_from_project']['id']).to eq(project.id) expect(json_response['forked_from_project']['id']).to eq(project.id)
expect(json_response['import_status']).to eq('started')
expect(json_response).to include("import_error")
end end
it 'fails on missing project access for the project to fork' do it 'fails on missing project access for the project to fork' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment