mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-23 11:36:09 +10:00
Add some fixes after review
This commit is contained in:
@@ -40,23 +40,14 @@ Parameters:
|
||||
"user": {
|
||||
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
|
||||
"bio": null,
|
||||
"can_create_group": true,
|
||||
"can_create_project": true,
|
||||
"color_scheme_id": 2,
|
||||
"created_at": "2015-12-21T13:14:24.077Z",
|
||||
"current_sign_in_at": "2016-01-11T09:31:40.472Z",
|
||||
"email": "admin@example.com",
|
||||
"id": 1,
|
||||
"identities": [],
|
||||
"is_admin": true,
|
||||
"linkedin": "",
|
||||
"name": "Administrator",
|
||||
"projects_limit": 100,
|
||||
"skype": "",
|
||||
"state": "active",
|
||||
"theme_id": 3,
|
||||
"twitter": "",
|
||||
"two_factor_enabled": false,
|
||||
"username": "root",
|
||||
"web_url": "http://gitlab.dev/u/root",
|
||||
"website_url": ""
|
||||
@@ -87,23 +78,14 @@ Parameters:
|
||||
"user": {
|
||||
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
|
||||
"bio": null,
|
||||
"can_create_group": true,
|
||||
"can_create_project": true,
|
||||
"color_scheme_id": 2,
|
||||
"created_at": "2015-12-21T13:14:24.077Z",
|
||||
"current_sign_in_at": "2016-01-11T09:31:40.472Z",
|
||||
"email": "admin@example.com",
|
||||
"id": 1,
|
||||
"identities": [],
|
||||
"is_admin": true,
|
||||
"linkedin": "",
|
||||
"name": "Administrator",
|
||||
"projects_limit": 100,
|
||||
"skype": "",
|
||||
"state": "active",
|
||||
"theme_id": 3,
|
||||
"twitter": "",
|
||||
"two_factor_enabled": false,
|
||||
"username": "root",
|
||||
"web_url": "http://gitlab.dev/u/root",
|
||||
"website_url": ""
|
||||
@@ -177,23 +159,14 @@ Parameters:
|
||||
"user": {
|
||||
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
|
||||
"bio": null,
|
||||
"can_create_group": true,
|
||||
"can_create_project": true,
|
||||
"color_scheme_id": 2,
|
||||
"created_at": "2015-12-21T13:14:24.077Z",
|
||||
"current_sign_in_at": "2016-01-12T10:30:48.315Z",
|
||||
"email": "admin@example.com",
|
||||
"id": 1,
|
||||
"identities": [],
|
||||
"is_admin": true,
|
||||
"linkedin": "",
|
||||
"name": "Administrator",
|
||||
"projects_limit": 100,
|
||||
"skype": "",
|
||||
"state": "active",
|
||||
"theme_id": 3,
|
||||
"twitter": "",
|
||||
"two_factor_enabled": false,
|
||||
"username": "root",
|
||||
"web_url": "http://gitlab.dev/u/root",
|
||||
"website_url": ""
|
||||
@@ -241,23 +214,14 @@ Parameters:
|
||||
"user": {
|
||||
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
|
||||
"bio": null,
|
||||
"can_create_group": true,
|
||||
"can_create_project": true,
|
||||
"color_scheme_id": 2,
|
||||
"created_at": "2015-12-21T13:14:24.077Z",
|
||||
"current_sign_in_at": "2016-01-11T09:31:40.472Z",
|
||||
"email": "admin@example.com",
|
||||
"id": 1,
|
||||
"identities": [],
|
||||
"is_admin": true,
|
||||
"linkedin": "",
|
||||
"name": "Administrator",
|
||||
"projects_limit": 100,
|
||||
"skype": "",
|
||||
"state": "active",
|
||||
"theme_id": 3,
|
||||
"twitter": "",
|
||||
"two_factor_enabled": false,
|
||||
"username": "root",
|
||||
"web_url": "http://gitlab.dev/u/root",
|
||||
"website_url": ""
|
||||
|
||||
+13
-11
@@ -35,6 +35,7 @@ module API
|
||||
|
||||
builds = commit.builds.order('id DESC')
|
||||
builds = filter_builds(builds, params[:scope])
|
||||
|
||||
present paginate(builds), with: Entities::Build,
|
||||
user_can_download_artifacts: can?(current_user, :download_build_artifacts, user_project)
|
||||
end
|
||||
@@ -118,25 +119,26 @@ module API
|
||||
|
||||
helpers do
|
||||
def get_build(id)
|
||||
user_project.builds.where(id: id).first
|
||||
user_project.builds.find_by(id: id.to_i)
|
||||
end
|
||||
|
||||
def filter_builds(builds, scope)
|
||||
available_scopes = Ci::Build.available_statuses
|
||||
return builds if scope.nil? || scope.empty?
|
||||
|
||||
available_statuses = Ci::Build.available_statuses
|
||||
scope =
|
||||
if scope.is_a?(String) || scope.is_a?(Symbol)
|
||||
available_scopes & [scope.to_s]
|
||||
elsif scope.is_a?(Array)
|
||||
available_scopes & scope
|
||||
elsif scope.respond_to?(:to_h)
|
||||
available_scopes & scope.to_h.values
|
||||
if scope.is_a?(String)
|
||||
[scope]
|
||||
elsif scope.is_a?(Hashie::Mash)
|
||||
scope.values
|
||||
else
|
||||
[]
|
||||
['unknown']
|
||||
end
|
||||
|
||||
return builds if scope.empty?
|
||||
unknown = scope - available_statuses
|
||||
render_api_error!('Scope contains invalid value(s)', 400) unless unknown.empty?
|
||||
|
||||
builds.where(status: scope)
|
||||
builds.where(status: available_statuses && scope)
|
||||
end
|
||||
|
||||
def authorize_manage_builds!
|
||||
|
||||
+2
-4
@@ -378,18 +378,16 @@ module API
|
||||
expose :id, :status, :stage, :name, :ref, :tag, :coverage
|
||||
expose :created_at, :started_at, :finished_at
|
||||
expose :user, with: User
|
||||
# TODO: download_url in Ci:Build model is an GitLab Web Interface URL, not API URL. We should think on some API
|
||||
# for downloading of artifacts (see: https://gitlab.com/gitlab-org/gitlab-ce/issues/4255)
|
||||
expose :download_url do |repo_obj, options|
|
||||
if options[:user_can_download_artifacts]
|
||||
repo_obj.download_url
|
||||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
expose :commit, with: RepoCommit do |repo_obj, _options|
|
||||
if repo_obj.respond_to?(:commit)
|
||||
repo_obj.commit.commit_data
|
||||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
expose :runner, with: Runner
|
||||
|
||||
@@ -35,6 +35,12 @@ describe API::API, api: true do
|
||||
expect(response.status).to eq(200)
|
||||
expect(json_response).to be_an Array
|
||||
end
|
||||
|
||||
it 'should respond 400 when scope contains invalid state' do
|
||||
get api("/projects/#{project.id}/builds?scope[0]=pending&scope[1]=unknown_status", user)
|
||||
|
||||
expect(response.status).to eq(400)
|
||||
end
|
||||
end
|
||||
|
||||
context 'unauthorized user' do
|
||||
|
||||
Reference in New Issue
Block a user