Expose import_status in Projects API
This commit is contained in:
parent
0218a0bd23
commit
c2516115e3
4 changed files with 37 additions and 0 deletions
4
changelogs/unreleased/projects-api-import-status.yml
Normal file
4
changelogs/unreleased/projects-api-import-status.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: Expose import_status in Projects API
|
||||
merge_request: 11851
|
||||
author: Robin Bobbitt
|
|
@ -81,6 +81,7 @@ Parameters:
|
|||
"kind": "group",
|
||||
"full_path": "diaspora"
|
||||
},
|
||||
"import_status": "none",
|
||||
"archived": false,
|
||||
"avatar_url": "http://example.com/uploads/project/avatar/4/uploads/avatar.png",
|
||||
"shared_runners_enabled": true,
|
||||
|
@ -138,6 +139,8 @@ Parameters:
|
|||
"kind": "group",
|
||||
"full_path": "brightbox"
|
||||
},
|
||||
"import_status": "none",
|
||||
"import_error": null,
|
||||
"permissions": {
|
||||
"project_access": {
|
||||
"access_level": 10,
|
||||
|
@ -225,6 +228,8 @@ Parameters:
|
|||
"kind": "group",
|
||||
"full_path": "diaspora"
|
||||
},
|
||||
"import_status": "none",
|
||||
"import_error": null,
|
||||
"permissions": {
|
||||
"project_access": {
|
||||
"access_level": 10,
|
||||
|
@ -611,6 +616,7 @@ Example response:
|
|||
"kind": "group",
|
||||
"full_path": "diaspora"
|
||||
},
|
||||
"import_status": "none",
|
||||
"archived": true,
|
||||
"avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
|
||||
"shared_runners_enabled": true,
|
||||
|
@ -676,6 +682,7 @@ Example response:
|
|||
"kind": "group",
|
||||
"full_path": "diaspora"
|
||||
},
|
||||
"import_status": "none",
|
||||
"archived": true,
|
||||
"avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
|
||||
"shared_runners_enabled": true,
|
||||
|
@ -747,6 +754,8 @@ Example response:
|
|||
"kind": "group",
|
||||
"full_path": "diaspora"
|
||||
},
|
||||
"import_status": "none",
|
||||
"import_error": null,
|
||||
"permissions": {
|
||||
"project_access": {
|
||||
"access_level": 10,
|
||||
|
@ -829,6 +838,8 @@ Example response:
|
|||
"kind": "group",
|
||||
"full_path": "diaspora"
|
||||
},
|
||||
"import_status": "none",
|
||||
"import_error": null,
|
||||
"permissions": {
|
||||
"project_access": {
|
||||
"access_level": 10,
|
||||
|
|
|
@ -100,6 +100,8 @@ module API
|
|||
expose :creator_id
|
||||
expose :namespace, using: 'API::Entities::Namespace'
|
||||
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|
|
||||
user.avatar_url(only_path: false)
|
||||
end
|
||||
|
|
|
@ -619,6 +619,8 @@ describe API::Projects do
|
|||
expect(json_response['shared_runners_enabled']).to be_present
|
||||
expect(json_response['creator_id']).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['star_count']).to be_present
|
||||
expect(json_response['forks_count']).to be_present
|
||||
|
@ -686,6 +688,20 @@ describe API::Projects do
|
|||
expect(json_response).to include 'statistics'
|
||||
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
|
||||
context 'all projects' do
|
||||
before { project.team << [user, :master] }
|
||||
|
@ -1448,6 +1464,8 @@ describe API::Projects do
|
|||
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('started')
|
||||
expect(json_response).to include("import_error")
|
||||
end
|
||||
|
||||
it 'forks if user is admin' do
|
||||
|
@ -1459,6 +1477,8 @@ describe API::Projects do
|
|||
expect(json_response['owner']['id']).to eq(admin.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['import_status']).to eq('started')
|
||||
expect(json_response).to include("import_error")
|
||||
end
|
||||
|
||||
it 'fails on missing project access for the project to fork' do
|
||||
|
|
Loading…
Reference in a new issue