Commit 81933cfd authored by Rémy Coutable's avatar Rémy Coutable

Merge branch '32300__expose_more_attributes' into 'master'

Expose more attributes to unauthenticated GET /projects/:id

See merge request !13283
parents 95b232f2 3c8b2ae1
...@@ -66,13 +66,6 @@ module API ...@@ -66,13 +66,6 @@ module API
expose :job_events expose :job_events
end end
class BasicProjectDetails < Grape::Entity
expose :id
expose :http_url_to_repo, :web_url
expose :name, :name_with_namespace
expose :path, :path_with_namespace
end
class SharedGroup < Grape::Entity class SharedGroup < Grape::Entity
expose :group_id expose :group_id
expose :group_name do |group_link, options| expose :group_name do |group_link, options|
...@@ -81,7 +74,16 @@ module API ...@@ -81,7 +74,16 @@ module API
expose :group_access, as: :group_access_level expose :group_access, as: :group_access_level
end end
class Project < Grape::Entity class BasicProjectDetails < Grape::Entity
expose :id, :description, :default_branch, :tag_list
expose :ssh_url_to_repo, :http_url_to_repo, :web_url
expose :name, :name_with_namespace
expose :path, :path_with_namespace
expose :star_count, :forks_count
expose :created_at, :last_activity_at
end
class Project < BasicProjectDetails
include ::API::Helpers::RelatedResourcesHelpers include ::API::Helpers::RelatedResourcesHelpers
expose :_links do expose :_links do
...@@ -114,12 +116,9 @@ module API ...@@ -114,12 +116,9 @@ module API
end end
end end
expose :id, :description, :default_branch, :tag_list
expose :archived?, as: :archived expose :archived?, as: :archived
expose :visibility, :ssh_url_to_repo, :http_url_to_repo, :web_url expose :visibility
expose :owner, using: Entities::UserBasic, unless: ->(project, options) { project.group } expose :owner, using: Entities::UserBasic, unless: ->(project, options) { project.group }
expose :name, :name_with_namespace
expose :path, :path_with_namespace
expose :container_registry_enabled expose :container_registry_enabled
# Expose old field names with the new permissions methods to keep API compatible # Expose old field names with the new permissions methods to keep API compatible
...@@ -129,7 +128,6 @@ module API ...@@ -129,7 +128,6 @@ module API
expose(:jobs_enabled) { |project, options| project.feature_available?(:builds, options[:current_user]) } expose(:jobs_enabled) { |project, options| project.feature_available?(:builds, options[:current_user]) }
expose(:snippets_enabled) { |project, options| project.feature_available?(:snippets, options[:current_user]) } expose(:snippets_enabled) { |project, options| project.feature_available?(:snippets, options[:current_user]) }
expose :created_at, :last_activity_at
expose :shared_runners_enabled expose :shared_runners_enabled
expose :lfs_enabled?, as: :lfs_enabled expose :lfs_enabled?, as: :lfs_enabled
expose :creator_id expose :creator_id
...@@ -140,7 +138,6 @@ module API ...@@ -140,7 +138,6 @@ module API
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
expose :star_count, :forks_count
expose :open_issues_count, if: lambda { |project, options| project.feature_available?(:issues, options[:current_user]) } expose :open_issues_count, if: lambda { |project, options| project.feature_available?(:issues, options[:current_user]) }
expose :runners_token, if: lambda { |_project, options| options[:user_can_admin_project] } expose :runners_token, if: lambda { |_project, options| options[:user_can_admin_project] }
expose :public_builds, as: :public_jobs expose :public_builds, as: :public_jobs
......
...@@ -13,7 +13,14 @@ describe API::Environments do ...@@ -13,7 +13,14 @@ describe API::Environments do
describe 'GET /projects/:id/environments' do describe 'GET /projects/:id/environments' do
context 'as member of the project' do context 'as member of the project' do
it 'returns project environments' do it 'returns project environments' do
project_data_keys = %w(id http_url_to_repo web_url name name_with_namespace path path_with_namespace) project_data_keys = %w(
id description default_branch tag_list
ssh_url_to_repo http_url_to_repo web_url
name name_with_namespace
path path_with_namespace
star_count forks_count
created_at last_activity_at
)
get api("/projects/#{project.id}/environments", user) get api("/projects/#{project.id}/environments", user)
......
...@@ -186,7 +186,14 @@ describe API::Projects do ...@@ -186,7 +186,14 @@ describe API::Projects do
context 'and with simple=true' do context 'and with simple=true' do
it 'returns a simplified version of all the projects' do it 'returns a simplified version of all the projects' do
expected_keys = %w(id http_url_to_repo web_url name name_with_namespace path path_with_namespace) expected_keys = %w(
id description default_branch tag_list
ssh_url_to_repo http_url_to_repo web_url
name name_with_namespace
path path_with_namespace
star_count forks_count
created_at last_activity_at
)
get api('/projects?simple=true', user) get api('/projects?simple=true', user)
...@@ -689,6 +696,7 @@ describe API::Projects do ...@@ -689,6 +696,7 @@ describe API::Projects do
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
expect(json_response['id']).to eq(public_project.id) expect(json_response['id']).to eq(public_project.id)
expect(json_response['description']).to eq(public_project.description) expect(json_response['description']).to eq(public_project.description)
expect(json_response['default_branch']).to eq(public_project.default_branch)
expect(json_response.keys).not_to include('permissions') expect(json_response.keys).not_to include('permissions')
end end
end end
......
...@@ -82,7 +82,14 @@ describe API::V3::Projects do ...@@ -82,7 +82,14 @@ describe API::V3::Projects do
context 'GET /projects?simple=true' do context 'GET /projects?simple=true' do
it 'returns a simplified version of all the projects' do it 'returns a simplified version of all the projects' do
expected_keys = %w(id http_url_to_repo web_url name name_with_namespace path path_with_namespace) expected_keys = %w(
id description default_branch tag_list
ssh_url_to_repo http_url_to_repo web_url
name name_with_namespace
path path_with_namespace
star_count forks_count
created_at last_activity_at
)
get v3_api('/projects?simple=true', user) get v3_api('/projects?simple=true', user)
...@@ -644,6 +651,7 @@ describe API::V3::Projects do ...@@ -644,6 +651,7 @@ describe API::V3::Projects do
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
expect(json_response['id']).to eq(public_project.id) expect(json_response['id']).to eq(public_project.id)
expect(json_response['description']).to eq(public_project.description) expect(json_response['description']).to eq(public_project.description)
expect(json_response['default_branch']).to eq(public_project.default_branch)
expect(json_response.keys).not_to include('permissions') expect(json_response.keys).not_to include('permissions')
end end
end end
......
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