Skip to content
Snippets Groups Projects
Commit 6e08f0d4 authored by Z.J. van de Weg's avatar Z.J. van de Weg
Browse files

Update tests to pass

Former-commit-id: b795e3a0
parent a37c6e7f
No related branches found
No related tags found
No related merge requests found
Showing
with 373 additions and 255 deletions
Loading
@@ -581,9 +581,9 @@ ActiveRecord::Schema.define(version: 20170217151947) do
Loading
@@ -581,9 +581,9 @@ ActiveRecord::Schema.define(version: 20170217151947) do
end end
   
add_index "labels", ["group_id", "project_id", "title"], name: "index_labels_on_group_id_and_project_id_and_title", unique: true, using: :btree add_index "labels", ["group_id", "project_id", "title"], name: "index_labels_on_group_id_and_project_id_and_title", unique: true, using: :btree
add_index "labels", ["type", "project_id"], name: "index_labels_on_type_and_project_id", using: :btree
add_index "labels", ["project_id"], name: "index_labels_on_project_id", using: :btree add_index "labels", ["project_id"], name: "index_labels_on_project_id", using: :btree
add_index "labels", ["title"], name: "index_labels_on_title", using: :btree add_index "labels", ["title"], name: "index_labels_on_title", using: :btree
add_index "labels", ["type", "project_id"], name: "index_labels_on_type_and_project_id", using: :btree
   
create_table "lfs_objects", force: :cascade do |t| create_table "lfs_objects", force: :cascade do |t|
t.string "oid", null: false t.string "oid", null: false
Loading
Loading
Loading
@@ -12,11 +12,13 @@ module API
Loading
@@ -12,11 +12,13 @@ module API
mount ::API::V3::Builds mount ::API::V3::Builds
mount ::API::V3::Commits mount ::API::V3::Commits
mount ::API::V3::DeployKeys mount ::API::V3::DeployKeys
mount ::API::V3::Deployments
mount ::API::V3::Environments mount ::API::V3::Environments
mount ::API::V3::Files mount ::API::V3::Files
mount ::API::V3::Groups mount ::API::V3::Groups
mount ::API::V3::Issues mount ::API::V3::Issues
mount ::API::V3::Labels mount ::API::V3::Labels
mount ::API::V3::Groups
mount ::API::V3::Members mount ::API::V3::Members
mount ::API::V3::MergeRequestDiffs mount ::API::V3::MergeRequestDiffs
mount ::API::V3::MergeRequests mount ::API::V3::MergeRequests
Loading
Loading
Loading
@@ -169,7 +169,7 @@ module API
Loading
@@ -169,7 +169,7 @@ module API
optional :should_remove_source_branch, type: Boolean, optional :should_remove_source_branch, type: Boolean,
desc: 'When true, the source branch will be deleted if possible' desc: 'When true, the source branch will be deleted if possible'
optional :merge_when_pipeline_succeeds, type: Boolean, optional :merge_when_pipeline_succeeds, type: Boolean,
desc: 'When true, this merge request will be merged when the pipeline succeeds' desc: 'When true, this merge request will be merged when the pipeline succeeds'
optional :sha, type: String, desc: 'When present, must have the HEAD SHA of the source branch' optional :sha, type: String, desc: 'When present, must have the HEAD SHA of the source branch'
end end
put ':id/merge_requests/:merge_request_id/merge' do put ':id/merge_requests/:merge_request_id/merge' do
Loading
Loading
Loading
@@ -98,6 +98,7 @@ module API
Loading
@@ -98,6 +98,7 @@ module API
end end
post do post do
attrs = declared_params(include_missing: false) attrs = declared_params(include_missing: false)
project = ::Projects::CreateService.new(current_user, attrs).execute project = ::Projects::CreateService.new(current_user, attrs).execute
   
if project.saved? if project.saved?
Loading
Loading
Loading
@@ -12,21 +12,21 @@ module API
Loading
@@ -12,21 +12,21 @@ module API
helpers do helpers do
params :optional_scope do params :optional_scope do
optional :scope, types: [String, Array[String]], desc: 'The scope of builds to show', optional :scope, types: [String, Array[String]], desc: 'The scope of builds to show',
values: ['pending', 'running', 'failed', 'success', 'canceled'], values: ['pending', 'running', 'failed', 'success', 'canceled'],
coerce_with: ->(scope) { coerce_with: ->(scope) {
if scope.is_a?(String) if scope.is_a?(String)
[scope] [scope]
elsif scope.is_a?(Hashie::Mash) elsif scope.is_a?(Hashie::Mash)
scope.values scope.values
else else
['unknown'] ['unknown']
end end
} }
end end
end end
   
desc 'Get a project builds' do desc 'Get a project builds' do
success V3::Entities::Build success ::API::V3::Entities::Build
end end
params do params do
use :optional_scope use :optional_scope
Loading
@@ -36,8 +36,8 @@ module API
Loading
@@ -36,8 +36,8 @@ module API
builds = user_project.builds.order('id DESC') builds = user_project.builds.order('id DESC')
builds = filter_builds(builds, params[:scope]) builds = filter_builds(builds, params[:scope])
   
present paginate(builds), with: Entities::Build, present paginate(builds), with: ::API::V3::Entities::Build,
user_can_download_artifacts: can?(current_user, :read_build, user_project) user_can_download_artifacts: can?(current_user, :read_build, user_project)
end end
   
desc 'Get builds for a specific commit of a project' do desc 'Get builds for a specific commit of a project' do
Loading
@@ -58,7 +58,7 @@ module API
Loading
@@ -58,7 +58,7 @@ module API
builds = filter_builds(builds, params[:scope]) builds = filter_builds(builds, params[:scope])
   
present paginate(builds), with: Entities::Build, present paginate(builds), with: Entities::Build,
user_can_download_artifacts: can?(current_user, :read_build, user_project) user_can_download_artifacts: can?(current_user, :read_build, user_project)
end end
   
desc 'Get a specific build of a project' do desc 'Get a specific build of a project' do
Loading
@@ -73,7 +73,7 @@ module API
Loading
@@ -73,7 +73,7 @@ module API
build = get_build!(params[:build_id]) build = get_build!(params[:build_id])
   
present build, with: Entities::Build, present build, with: Entities::Build,
user_can_download_artifacts: can?(current_user, :read_build, user_project) user_can_download_artifacts: can?(current_user, :read_build, user_project)
end end
   
desc 'Download the artifacts file from build' do desc 'Download the artifacts file from build' do
Loading
@@ -141,7 +141,7 @@ module API
Loading
@@ -141,7 +141,7 @@ module API
build.cancel build.cancel
   
present build, with: Entities::Build, present build, with: Entities::Build,
user_can_download_artifacts: can?(current_user, :read_build, user_project) user_can_download_artifacts: can?(current_user, :read_build, user_project)
end end
   
desc 'Retry a specific build of a project' do desc 'Retry a specific build of a project' do
Loading
@@ -159,7 +159,7 @@ module API
Loading
@@ -159,7 +159,7 @@ module API
build = Ci::Build.retry(build, current_user) build = Ci::Build.retry(build, current_user)
   
present build, with: Entities::Build, present build, with: Entities::Build,
user_can_download_artifacts: can?(current_user, :read_build, user_project) user_can_download_artifacts: can?(current_user, :read_build, user_project)
end end
   
desc 'Erase build (remove artifacts and build trace)' do desc 'Erase build (remove artifacts and build trace)' do
Loading
@@ -176,7 +176,7 @@ module API
Loading
@@ -176,7 +176,7 @@ module API
   
build.erase(erased_by: current_user) build.erase(erased_by: current_user)
present build, with: Entities::Build, present build, with: Entities::Build,
user_can_download_artifacts: can?(current_user, :download_build_artifacts, user_project) user_can_download_artifacts: can?(current_user, :download_build_artifacts, user_project)
end end
   
desc 'Keep the artifacts to prevent them from being deleted' do desc 'Keep the artifacts to prevent them from being deleted' do
Loading
@@ -195,7 +195,7 @@ module API
Loading
@@ -195,7 +195,7 @@ module API
   
status 200 status 200
present build, with: Entities::Build, present build, with: Entities::Build,
user_can_download_artifacts: can?(current_user, :read_build, user_project) user_can_download_artifacts: can?(current_user, :read_build, user_project)
end end
   
desc 'Trigger a manual build' do desc 'Trigger a manual build' do
Loading
@@ -216,7 +216,7 @@ module API
Loading
@@ -216,7 +216,7 @@ module API
   
status 200 status 200
present build, with: Entities::Build, present build, with: Entities::Build,
user_can_download_artifacts: can?(current_user, :read_build, user_project) user_can_download_artifacts: can?(current_user, :read_build, user_project)
end end
end end
   
Loading
Loading
module API module API
# Deployments RESTfull API endpoints module V3
class Deployments < Grape::API # Deployments RESTfull API endpoints
include PaginationParams class Deployments < Grape::API
include PaginationParams
   
before { authenticate! } before { authenticate! }
   
params do
requires :id, type: String, desc: 'The project ID'
end
resource :projects do
desc 'Get all deployments of the project' do
detail 'This feature was introduced in GitLab 8.11.'
success Entities::Deployment
end
params do params do
use :pagination requires :id, type: String, desc: 'The project ID'
end end
get ':id/deployments' do resource :projects do
authorize! :read_deployment, user_project desc 'Get all deployments of the project' do
detail 'This feature was introduced in GitLab 8.11.'
success Entities::Deployment
end
params do
use :pagination
end
get ':id/deployments' do
authorize! :read_deployment, user_project
   
present paginate(user_project.deployments), with: Entities::Deployment present paginate(user_project.deployments), with: Entities::Deployment
end end
   
desc 'Gets a specific deployment' do desc 'Gets a specific deployment' do
detail 'This feature was introduced in GitLab 8.11.' detail 'This feature was introduced in GitLab 8.11.'
success Entities::Deployment success Entities::Deployment
end end
params do params do
requires :deployment_id, type: Integer, desc: 'The deployment ID' requires :deployment_id, type: Integer, desc: 'The deployment ID'
end end
get ':id/deployments/:deployment_id' do get ':id/deployments/:deployment_id' do
authorize! :read_deployment, user_project authorize! :read_deployment, user_project
   
deployment = user_project.deployments.find(params[:deployment_id]) deployment = user_project.deployments.find(params[:deployment_id])
   
present deployment, with: Entities::Deployment present deployment, with: Entities::Deployment
end
end end
end end
end end
Loading
Loading
Loading
@@ -191,12 +191,47 @@ module API
Loading
@@ -191,12 +191,47 @@ module API
expose :id, :status, :stage, :name, :ref, :tag, :coverage expose :id, :status, :stage, :name, :ref, :tag, :coverage
expose :created_at, :started_at, :finished_at expose :created_at, :started_at, :finished_at
expose :user, with: ::API::Entities::User expose :user, with: ::API::Entities::User
expose :artifacts_file, using: ::API::Entities::JobArtifactFile, if: -> (build, opts) { build.artifacts? } expose :artifacts_file, using: ::API::Entities::JobArtifactFile, if: -> (build, _opts) { build.artifacts? }
expose :commit, with: ::API::Entities::RepoCommit expose :commit, with: ::API::Entities::RepoCommit
expose :runner, with: ::API::Entities::Runner expose :runner, with: ::API::Entities::Runner
expose :pipeline, with: ::API::Entities::PipelineBasic expose :pipeline, with: ::API::Entities::PipelineBasic
end end
   
class Project < Grape::Entity
expose :id, :description, :default_branch, :tag_list
expose :public?, as: :public
expose :archived?, as: :archived
expose :visibility_level, :ssh_url_to_repo, :http_url_to_repo, :web_url
expose :owner, using: ::API::Entities::UserBasic, unless: ->(project, options) { project.group }
expose :name, :name_with_namespace
expose :path, :path_with_namespace
expose :container_registry_enabled
# Expose old field names with the new permissions methods to keep API compatible
expose(:issues_enabled) { |project, options| project.feature_available?(:issues, options[:current_user]) }
expose(:merge_requests_enabled) { |project, options| project.feature_available?(:merge_requests, options[:current_user]) }
expose(:wiki_enabled) { |project, options| project.feature_available?(:wiki, options[:current_user]) }
expose(:builds_enabled) { |project, options| project.feature_available?(:builds, 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 :lfs_enabled?, as: :lfs_enabled
expose :creator_id
expose :namespace, using: ::API::Entities::Namespace
expose :forked_from_project, using: ::API::Entities::BasicProjectDetails, if: lambda{ |project, _options| project.forked? }
expose :avatar_url
expose :star_count, :forks_count
expose :open_issues_count, if: lambda { |project, options| project.feature_available?(:issues, options[:current_user]) && project.default_issues_tracker? }
expose :runners_token, if: lambda { |_project, options| options[:user_can_admin_project] }
expose :public_builds
expose :shared_with_groups do |project, options|
::API::Entities::SharedGroup.represent(project.project_group_links.all, options)
end
expose :only_allow_merge_if_build_succeeds
expose :request_access_enabled
expose :only_allow_merge_if_all_discussions_are_resolved
expose :statistics, using: ::API::V3::Entities::ProjectStatistics, if: :statistics
end
class BuildArtifactFile < Grape::Entity class BuildArtifactFile < Grape::Entity
expose :filename, :size expose :filename, :size
end end
Loading
@@ -206,14 +241,14 @@ module API
Loading
@@ -206,14 +241,14 @@ module API
end end
   
class Environment < EnvironmentBasic class Environment < EnvironmentBasic
expose :project, using: Entities::Project expose :project, using: ::API::V3::Entities::Project
end end
   
class Deployment < Grape::Entity class Deployment < Grape::Entity
expose :id, :iid, :ref, :sha, :created_at expose :id, :iid, :ref, :sha, :created_at
expose :user, using: Entities::UserBasic expose :user, using: ::API::Entities::UserBasic
expose :environment, using: Entities::EnvironmentBasic expose :environment, using: V3::Entities::EnvironmentBasic
expose :deployable, using: Entities::Build expose :deployable, using: V3::Entities::Build
end end
   
class Group < Grape::Entity class Group < Grape::Entity
Loading
@@ -237,14 +272,14 @@ module API
Loading
@@ -237,14 +272,14 @@ module API
expose :shared_projects, using: Entities::Project expose :shared_projects, using: Entities::Project
end end
   
class MergeRequest < ProjectEntity class MergeRequest < ::API::Entities::ProjectEntity
expose :target_branch, :source_branch expose :target_branch, :source_branch
expose :upvotes, :downvotes expose :upvotes, :downvotes
expose :author, :assignee, using: Entities::UserBasic expose :author, :assignee, using: ::API::Entities::UserBasic
expose :source_project_id, :target_project_id expose :source_project_id, :target_project_id
expose :label_names, as: :labels expose :label_names, as: :labels
expose :work_in_progress?, as: :work_in_progress expose :work_in_progress?, as: :work_in_progress
expose :milestone, using: Entities::Milestone expose :milestone, using: ::API::Entities::Milestone
expose :merge_when_build_succeeds expose :merge_when_build_succeeds
expose :merge_status expose :merge_status
expose :diff_head_sha, as: :sha expose :diff_head_sha, as: :sha
Loading
@@ -261,46 +296,11 @@ module API
Loading
@@ -261,46 +296,11 @@ module API
end end
   
class MergeRequestChanges < MergeRequest class MergeRequestChanges < MergeRequest
expose :diffs, as: :changes, using: Entities::RepoDiff do |compare, _| expose :diffs, as: :changes, using: ::API::Entities::RepoDiff do |compare, _|
compare.raw_diffs(all_diffs: true).to_a compare.raw_diffs(all_diffs: true).to_a
end end
end end
   
class Project < Grape::Entity
expose :id, :description, :default_branch, :tag_list
expose :public?, as: :public
expose :archived?, as: :archived
expose :visibility_level, :ssh_url_to_repo, :http_url_to_repo, :web_url
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 old field names with the new permissions methods to keep API compatible
expose(:issues_enabled) { |project, options| project.feature_available?(:issues, options[:current_user]) }
expose(:merge_requests_enabled) { |project, options| project.feature_available?(:merge_requests, options[:current_user]) }
expose(:wiki_enabled) { |project, options| project.feature_available?(:wiki, options[:current_user]) }
expose(:builds_enabled) { |project, options| project.feature_available?(:builds, 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 :lfs_enabled?, as: :lfs_enabled
expose :creator_id
expose :namespace, using: 'API::Entities::Namespace'
expose :forked_from_project, using: Entities::BasicProjectDetails, if: lambda{ |project, options| project.forked? }
expose :avatar_url
expose :star_count, :forks_count
expose :open_issues_count, if: lambda { |project, options| project.feature_available?(:issues, options[:current_user]) && project.default_issues_tracker? }
expose :runners_token, if: lambda { |_project, options| options[:user_can_admin_project] }
expose :public_builds
expose :shared_with_groups do |project, options|
SharedGroup.represent(project.project_group_links.all, options)
end
expose :only_allow_merge_if_build_succeeds
expose :request_access_enabled
expose :only_allow_merge_if_all_discussions_are_resolved
expose :statistics, using: 'API::Entities::ProjectStatistics', if: :statistics
end
class ProjectStatistics < Grape::Entity class ProjectStatistics < Grape::Entity
expose :commit_count expose :commit_count
expose :storage_size expose :storage_size
Loading
@@ -322,17 +322,17 @@ module API
Loading
@@ -322,17 +322,17 @@ module API
end end
end end
   
class ProjectHook < Hook class ProjectHook < ::API::Entities::Hook
expose :project_id, :issues_events, :merge_requests_events expose :project_id, :issues_events, :merge_requests_events
expose :note_events, :build_events, :pipeline_events, :wiki_page_events expose :note_events, :build_events, :pipeline_events, :wiki_page_events
end end
   
class ProjectWithAccess < Project class ProjectWithAccess < V3::Entities::Project
expose :permissions do expose :permissions do
expose :project_access, using: Entities::ProjectAccess do |project, options| expose :project_access, using: ::API::Entities::ProjectAccess do |project, options|
project.project_members.find_by(user_id: options[:current_user].id) project.project_members.find_by(user_id: options[:current_user].id)
end end
expose :group_access, using: Entities::GroupAccess do |project, options| expose :group_access, using: ::API::Entities::GroupAccess do |project, options|
if project.group if project.group
project.group.group_members.find_by(user_id: options[:current_user].id) project.group.group_members.find_by(user_id: options[:current_user].id)
end end
Loading
Loading
Loading
@@ -19,7 +19,7 @@ module API
Loading
@@ -19,7 +19,7 @@ module API
   
def present_groups(groups, options = {}) def present_groups(groups, options = {})
options = options.reverse_merge( options = options.reverse_merge(
with: Entities::Group, with: ::API::V3::Entities::Group,
current_user: current_user, current_user: current_user,
) )
   
Loading
@@ -30,7 +30,7 @@ module API
Loading
@@ -30,7 +30,7 @@ module API
   
resource :groups do resource :groups do
desc 'Get a groups list' do desc 'Get a groups list' do
success Entities::Group success ::API::V3::Entities::Group
end end
params do params do
use :statistics_params use :statistics_params
Loading
@@ -58,7 +58,7 @@ module API
Loading
@@ -58,7 +58,7 @@ module API
end end
   
desc 'Get list of owned groups for authenticated user' do desc 'Get list of owned groups for authenticated user' do
success Entities::Group success ::API::V3::Entities::Group
end end
params do params do
use :pagination use :pagination
Loading
@@ -69,7 +69,7 @@ module API
Loading
@@ -69,7 +69,7 @@ module API
end end
   
desc 'Create a group. Available only for users who can create groups.' do desc 'Create a group. Available only for users who can create groups.' do
success Entities::Group success ::API::V3::Entities::Group
end end
params do params do
requires :name, type: String, desc: 'The name of the group' requires :name, type: String, desc: 'The name of the group'
Loading
@@ -83,7 +83,7 @@ module API
Loading
@@ -83,7 +83,7 @@ module API
group = ::Groups::CreateService.new(current_user, declared_params(include_missing: false)).execute group = ::Groups::CreateService.new(current_user, declared_params(include_missing: false)).execute
   
if group.persisted? if group.persisted?
present group, with: Entities::Group, current_user: current_user present group, with: ::API::V3::Entities::Group, current_user: current_user
else else
render_api_error!("Failed to save group #{group.errors.messages}", 400) render_api_error!("Failed to save group #{group.errors.messages}", 400)
end end
Loading
@@ -95,7 +95,7 @@ module API
Loading
@@ -95,7 +95,7 @@ module API
end end
resource :groups do resource :groups do
desc 'Update a group. Available only for users who can administrate groups.' do desc 'Update a group. Available only for users who can administrate groups.' do
success Entities::Group success ::API::V3::Entities::Group
end end
params do params do
optional :name, type: String, desc: 'The name of the group' optional :name, type: String, desc: 'The name of the group'
Loading
@@ -109,29 +109,29 @@ module API
Loading
@@ -109,29 +109,29 @@ module API
authorize! :admin_group, group authorize! :admin_group, group
   
if ::Groups::UpdateService.new(group, current_user, declared_params(include_missing: false)).execute if ::Groups::UpdateService.new(group, current_user, declared_params(include_missing: false)).execute
present group, with: Entities::GroupDetail, current_user: current_user present group, with: ::API::V3::Entities::GroupDetail, current_user: current_user
else else
render_validation_error!(group) render_validation_error!(group)
end end
end end
   
desc 'Get a single group, with containing projects.' do desc 'Get a single group, with containing projects.' do
success Entities::GroupDetail success ::API::V3::Entities::GroupDetail
end end
get ":id" do get ":id" do
group = find_group!(params[:id]) group = find_group!(params[:id])
present group, with: Entities::GroupDetail, current_user: current_user present group, with: ::API::V3::Entities::GroupDetail, current_user: current_user
end end
   
desc 'Remove a group.' desc 'Remove a group.'
delete ":id" do delete ":id" do
group = find_group!(params[:id]) group = find_group!(params[:id])
authorize! :admin_group, group authorize! :admin_group, group
present ::Groups::DestroyService.new(group, current_user).execute, with: Entities::GroupDetail, current_user: current_user present ::Groups::DestroyService.new(group, current_user).execute, with: ::API::V3::Entities::GroupDetail, current_user: current_user
end end
   
desc 'Get a list of projects in this group.' do desc 'Get a list of projects in this group.' do
success Entities::Project success V3::Entities::Project
end end
params do params do
optional :archived, type: Boolean, default: false, desc: 'Limit by archived status' optional :archived, type: Boolean, default: false, desc: 'Limit by archived status'
Loading
@@ -153,12 +153,12 @@ module API
Loading
@@ -153,12 +153,12 @@ module API
group = find_group!(params[:id]) group = find_group!(params[:id])
projects = GroupProjectsFinder.new(group).execute(current_user) projects = GroupProjectsFinder.new(group).execute(current_user)
projects = filter_projects(projects) projects = filter_projects(projects)
entity = params[:simple] ? ::API::Entities::BasicProjectDetails : Entities::Project entity = params[:simple] ? ::API::Entities::BasicProjectDetails : ::API::V3::Entities::Project
present paginate(projects), with: entity, current_user: current_user present paginate(projects), with: entity, current_user: current_user
end end
   
desc 'Transfer a project to the group namespace. Available only for admin.' do desc 'Transfer a project to the group namespace. Available only for admin.' do
success Entities::GroupDetail success ::API::V3::Entities::GroupDetail
end end
params do params do
requires :project_id, type: String, desc: 'The ID or path of the project' requires :project_id, type: String, desc: 'The ID or path of the project'
Loading
@@ -170,7 +170,7 @@ module API
Loading
@@ -170,7 +170,7 @@ module API
result = ::Projects::TransferService.new(project, current_user).execute(group) result = ::Projects::TransferService.new(project, current_user).execute(group)
   
if result if result
present group, with: Entities::GroupDetail, current_user: current_user present group, with: ::API::V3::Entities::GroupDetail, current_user: current_user
else else
render_api_error!("Failed to transfer project #{project.errors.messages}", 400) render_api_error!("Failed to transfer project #{project.errors.messages}", 400)
end end
Loading
Loading
module API module API
# MergeRequestDiff API module V3
class MergeRequestDiffs < Grape::API # MergeRequestDiff API
before { authenticate! } class MergeRequestDiffs < Grape::API
before { authenticate! }
resource :projects do
desc 'Get a list of merge request diff versions' do resource :projects do
detail 'This feature was introduced in GitLab 8.12.' desc 'Get a list of merge request diff versions' do
success Entities::MergeRequestDiff detail 'This feature was introduced in GitLab 8.12.'
end success ::API::Entities::MergeRequestDiff
end
params do
requires :id, type: String, desc: 'The ID of a project' params do
requires :merge_request_id, type: Integer, desc: 'The ID of a merge request' requires :id, type: String, desc: 'The ID of a project'
end requires :merge_request_id, type: Integer, desc: 'The ID of a merge request'
end
get ":id/merge_requests/:merge_request_id/versions" do
merge_request = find_merge_request_with_access(params[:merge_request_id]) get ":id/merge_requests/:merge_request_id/versions" do
merge_request = find_merge_request_with_access(params[:merge_request_id])
present merge_request.merge_request_diffs, with: Entities::MergeRequestDiff
end present merge_request.merge_request_diffs, with: ::API::Entities::MergeRequestDiff
end
desc 'Get a single merge request diff version' do
detail 'This feature was introduced in GitLab 8.12.' desc 'Get a single merge request diff version' do
success Entities::MergeRequestDiffFull detail 'This feature was introduced in GitLab 8.12.'
end success ::API::Entities::MergeRequestDiffFull
end
params do
requires :id, type: String, desc: 'The ID of a project' params do
requires :merge_request_id, type: Integer, desc: 'The ID of a merge request' requires :id, type: String, desc: 'The ID of a project'
requires :version_id, type: Integer, desc: 'The ID of a merge request diff version' requires :merge_request_id, type: Integer, desc: 'The ID of a merge request'
end requires :version_id, type: Integer, desc: 'The ID of a merge request diff version'
end
get ":id/merge_requests/:merge_request_id/versions/:version_id" do
merge_request = find_merge_request_with_access(params[:merge_request_id]) get ":id/merge_requests/:merge_request_id/versions/:version_id" do
merge_request = find_merge_request_with_access(params[:merge_request_id])
present merge_request.merge_request_diffs.find(params[:version_id]), with: Entities::MergeRequestDiffFull
present merge_request.merge_request_diffs.find(params[:version_id]), with: ::API::Entities::MergeRequestDiffFull
end
end end
end end
end end
Loading
Loading
Loading
@@ -134,12 +134,12 @@ module API
Loading
@@ -134,12 +134,12 @@ module API
end end
   
desc 'Show the merge request changes' do desc 'Show the merge request changes' do
success ::API::Entities::MergeRequestChanges success ::API::V3::Entities::MergeRequestChanges
end end
get "#{path}/changes" do get "#{path}/changes" do
merge_request = find_merge_request_with_access(params[:merge_request_id]) merge_request = find_merge_request_with_access(params[:merge_request_id])
   
present merge_request, with: ::API::Entities::MergeRequestChanges, current_user: current_user present merge_request, with: ::API::V3::Entities::MergeRequestChanges, current_user: current_user
end end
   
desc 'Update a merge request' do desc 'Update a merge request' do
Loading
@@ -160,6 +160,7 @@ module API
Loading
@@ -160,6 +160,7 @@ module API
   
mr_params = declared_params(include_missing: false) mr_params = declared_params(include_missing: false)
mr_params[:force_remove_source_branch] = mr_params.delete(:remove_source_branch) if mr_params[:remove_source_branch].present? mr_params[:force_remove_source_branch] = mr_params.delete(:remove_source_branch) if mr_params[:remove_source_branch].present?
mr_params[:merge_when_pipeline_succeeds] = mr_params.delete(:merge_when_build_succeeds) if mr_params[:merge_when_build_succeeds].present?
   
merge_request = ::MergeRequests::UpdateService.new(user_project, current_user, mr_params).execute(merge_request) merge_request = ::MergeRequests::UpdateService.new(user_project, current_user, mr_params).execute(merge_request)
   
Loading
@@ -214,7 +215,7 @@ module API
Loading
@@ -214,7 +215,7 @@ module API
present merge_request, with: ::API::V3::Entities::MergeRequest, current_user: current_user, project: user_project present merge_request, with: ::API::V3::Entities::MergeRequest, current_user: current_user, project: user_project
end end
   
desc 'Cancel merge if "Merge When Build succeeds" is enabled' do desc 'Cancel merge if "Merge When Pipeline Succeeds" is enabled' do
success ::API::V3::Entities::MergeRequest success ::API::V3::Entities::MergeRequest
end end
post "#{path}/cancel_merge_when_build_succeeds" do post "#{path}/cancel_merge_when_build_succeeds" do
Loading
Loading
Loading
@@ -5,7 +5,11 @@ module API
Loading
@@ -5,7 +5,11 @@ module API
   
before { authenticate! } before { authenticate! }
   
<<<<<<< HEAD
NOTEABLE_TYPES = [Issue, MergeRequest, Snippet].freeze NOTEABLE_TYPES = [Issue, MergeRequest, Snippet].freeze
=======
NOTEABLE_TYPES = [Issue, MergeRequest, Snippet]
>>>>>>> 629355a06c... WIP
   
params do params do
requires :id, type: String, desc: 'The ID of a project' requires :id, type: String, desc: 'The ID of a project'
Loading
@@ -15,7 +19,11 @@ module API
Loading
@@ -15,7 +19,11 @@ module API
noteables_str = noteable_type.to_s.underscore.pluralize noteables_str = noteable_type.to_s.underscore.pluralize
   
desc 'Get a list of project +noteable+ notes' do desc 'Get a list of project +noteable+ notes' do
<<<<<<< HEAD
success ::API::V3::Entities::Note success ::API::V3::Entities::Note
=======
success ::API::Entities::Note
>>>>>>> 629355a06c... WIP
end end
params do params do
requires :noteable_id, type: Integer, desc: 'The ID of the noteable' requires :noteable_id, type: Integer, desc: 'The ID of the noteable'
Loading
@@ -36,14 +44,22 @@ module API
Loading
@@ -36,14 +44,22 @@ module API
# array returned, but this is really a edge-case. # array returned, but this is really a edge-case.
paginate(noteable.notes). paginate(noteable.notes).
reject { |n| n.cross_reference_not_visible_for?(current_user) } reject { |n| n.cross_reference_not_visible_for?(current_user) }
<<<<<<< HEAD
present notes, with: ::API::V3::Entities::Note present notes, with: ::API::V3::Entities::Note
=======
present notes, with: ::API::Entities::Note
>>>>>>> 629355a06c... WIP
else else
not_found!("Notes") not_found!("Notes")
end end
end end
   
desc 'Get a single +noteable+ note' do desc 'Get a single +noteable+ note' do
<<<<<<< HEAD
success ::API::V3::Entities::Note success ::API::V3::Entities::Note
=======
success ::API::Entities::Note
>>>>>>> 629355a06c... WIP
end end
params do params do
requires :note_id, type: Integer, desc: 'The ID of a note' requires :note_id, type: Integer, desc: 'The ID of a note'
Loading
@@ -55,14 +71,22 @@ module API
Loading
@@ -55,14 +71,22 @@ module API
can_read_note = can?(current_user, noteable_read_ability_name(noteable), noteable) && !note.cross_reference_not_visible_for?(current_user) can_read_note = can?(current_user, noteable_read_ability_name(noteable), noteable) && !note.cross_reference_not_visible_for?(current_user)
   
if can_read_note if can_read_note
<<<<<<< HEAD
present note, with: ::API::V3::Entities::Note present note, with: ::API::V3::Entities::Note
=======
present note, with: ::API::Entities::Note
>>>>>>> 629355a06c... WIP
else else
not_found!("Note") not_found!("Note")
end end
end end
   
desc 'Create a new +noteable+ note' do desc 'Create a new +noteable+ note' do
<<<<<<< HEAD
success ::API::V3::Entities::Note success ::API::V3::Entities::Note
=======
success ::API::Entities::Note
>>>>>>> 629355a06c... WIP
end end
params do params do
requires :noteable_id, type: Integer, desc: 'The ID of the noteable' requires :noteable_id, type: Integer, desc: 'The ID of the noteable'
Loading
@@ -84,8 +108,14 @@ module API
Loading
@@ -84,8 +108,14 @@ module API
end end
   
note = ::Notes::CreateService.new(user_project, current_user, opts).execute note = ::Notes::CreateService.new(user_project, current_user, opts).execute
<<<<<<< HEAD
if note.valid? if note.valid?
present note, with: ::API::V3::Entities.const_get(note.class.name) present note, with: ::API::V3::Entities.const_get(note.class.name)
=======
if note.valid?
present note, with: Entities::const_get(note.class.name)
>>>>>>> 629355a06c... WIP
else else
not_found!("Note #{note.errors.messages}") not_found!("Note #{note.errors.messages}")
end end
Loading
@@ -95,7 +125,11 @@ module API
Loading
@@ -95,7 +125,11 @@ module API
end end
   
desc 'Update an existing +noteable+ note' do desc 'Update an existing +noteable+ note' do
<<<<<<< HEAD
success ::API::V3::Entities::Note success ::API::V3::Entities::Note
=======
success ::API::Entities::Note
>>>>>>> 629355a06c... WIP
end end
params do params do
requires :noteable_id, type: Integer, desc: 'The ID of the noteable' requires :noteable_id, type: Integer, desc: 'The ID of the noteable'
Loading
@@ -114,14 +148,22 @@ module API
Loading
@@ -114,14 +148,22 @@ module API
note = ::Notes::UpdateService.new(user_project, current_user, opts).execute(note) note = ::Notes::UpdateService.new(user_project, current_user, opts).execute(note)
   
if note.valid? if note.valid?
<<<<<<< HEAD
present note, with: ::API::V3::Entities::Note present note, with: ::API::V3::Entities::Note
=======
present note, with: ::API::Entities::Note
>>>>>>> 629355a06c... WIP
else else
render_api_error!("Failed to save note #{note.errors.messages}", 400) render_api_error!("Failed to save note #{note.errors.messages}", 400)
end end
end end
   
desc 'Delete a +noteable+ note' do desc 'Delete a +noteable+ note' do
<<<<<<< HEAD
success ::API::V3::Entities::Note success ::API::V3::Entities::Note
=======
success ::API::Entities::Note
>>>>>>> 629355a06c... WIP
end end
params do params do
requires :noteable_id, type: Integer, desc: 'The ID of the noteable' requires :noteable_id, type: Integer, desc: 'The ID of the noteable'
Loading
@@ -131,9 +173,15 @@ module API
Loading
@@ -131,9 +173,15 @@ module API
note = user_project.notes.find(params[:note_id]) note = user_project.notes.find(params[:note_id])
authorize! :admin_note, note authorize! :admin_note, note
   
<<<<<<< HEAD
::Notes::DestroyService.new(user_project, current_user).execute(note) ::Notes::DestroyService.new(user_project, current_user).execute(note)
   
present note, with: ::API::V3::Entities::Note present note, with: ::API::V3::Entities::Note
=======
::Notes::DeleteService.new(user_project, current_user).execute(note)
present note, with: ::API::Entities::Note
>>>>>>> 629355a06c... WIP
end end
end end
end end
Loading
Loading
module API module API
class ProjectHooks < Grape::API module V3
include PaginationParams class ProjectHooks < Grape::API
include PaginationParams
   
before { authenticate! } before { authenticate! }
before { authorize_admin_project } before { authorize_admin_project }
   
helpers do helpers do
params :project_hook_properties do params :project_hook_properties do
requires :url, type: String, desc: "The URL to send the request to" requires :url, type: String, desc: "The URL to send the request to"
optional :push_events, type: Boolean, desc: "Trigger hook on push events" optional :push_events, type: Boolean, desc: "Trigger hook on push events"
optional :issues_events, type: Boolean, desc: "Trigger hook on issues events" optional :issues_events, type: Boolean, desc: "Trigger hook on issues events"
optional :merge_requests_events, type: Boolean, desc: "Trigger hook on merge request events" optional :merge_requests_events, type: Boolean, desc: "Trigger hook on merge request events"
optional :tag_push_events, type: Boolean, desc: "Trigger hook on tag push events" optional :tag_push_events, type: Boolean, desc: "Trigger hook on tag push events"
optional :note_events, type: Boolean, desc: "Trigger hook on note(comment) events" optional :note_events, type: Boolean, desc: "Trigger hook on note(comment) events"
optional :build_events, type: Boolean, desc: "Trigger hook on build events" optional :build_events, type: Boolean, desc: "Trigger hook on build events"
optional :pipeline_events, type: Boolean, desc: "Trigger hook on pipeline events" optional :pipeline_events, type: Boolean, desc: "Trigger hook on pipeline events"
optional :wiki_page_events, type: Boolean, desc: "Trigger hook on wiki events" optional :wiki_page_events, type: Boolean, desc: "Trigger hook on wiki events"
optional :enable_ssl_verification, type: Boolean, desc: "Do SSL verification when triggering the hook" optional :enable_ssl_verification, type: Boolean, desc: "Do SSL verification when triggering the hook"
optional :token, type: String, desc: "Secret token to validate received payloads; this will not be returned in the response" optional :token, type: String, desc: "Secret token to validate received payloads; this will not be returned in the response"
end
end end
end
   
params do
requires :id, type: String, desc: 'The ID of a project'
end
resource :projects do
desc 'Get project hooks' do
success Entities::ProjectHook
end
params do params do
use :pagination requires :id, type: String, desc: 'The ID of a project'
end end
get ":id/hooks" do resource :projects do
hooks = paginate user_project.hooks desc 'Get project hooks' do
success ::API::V3::Entities::ProjectHook
end
params do
use :pagination
end
get ":id/hooks" do
hooks = paginate user_project.hooks
   
present hooks, with: Entities::ProjectHook present hooks, with: ::API::V3::Entities::ProjectHook
end end
   
desc 'Get a project hook' do desc 'Get a project hook' do
success Entities::ProjectHook success ::API::V3::Entities::ProjectHook
end end
params do params do
requires :hook_id, type: Integer, desc: 'The ID of a project hook' requires :hook_id, type: Integer, desc: 'The ID of a project hook'
end end
get ":id/hooks/:hook_id" do get ":id/hooks/:hook_id" do
hook = user_project.hooks.find(params[:hook_id]) hook = user_project.hooks.find(params[:hook_id])
present hook, with: Entities::ProjectHook present hook, with: ::API::V3::Entities::ProjectHook
end end
   
desc 'Add hook to project' do desc 'Add hook to project' do
success Entities::ProjectHook success ::API::V3::Entities::ProjectHook
end end
params do params do
use :project_hook_properties use :project_hook_properties
end end
post ":id/hooks" do post ":id/hooks" do
hook = user_project.hooks.new(declared_params(include_missing: false)) hook = user_project.hooks.new(declared_params(include_missing: false))
   
if hook.save if hook.save
present hook, with: Entities::ProjectHook present hook, with: ::API::V3::Entities::ProjectHook
else else
error!("Invalid url given", 422) if hook.errors[:url].present? error!("Invalid url given", 422) if hook.errors[:url].present?
   
not_found!("Project hook #{hook.errors.messages}") not_found!("Project hook #{hook.errors.messages}")
end
end end
end
   
desc 'Update an existing project hook' do desc 'Update an existing project hook' do
success Entities::ProjectHook success ::API::V3::Entities::ProjectHook
end end
params do params do
requires :hook_id, type: Integer, desc: "The ID of the hook to update" requires :hook_id, type: Integer, desc: "The ID of the hook to update"
use :project_hook_properties use :project_hook_properties
end end
put ":id/hooks/:hook_id" do put ":id/hooks/:hook_id" do
hook = user_project.hooks.find(params.delete(:hook_id)) hook = user_project.hooks.find(params.delete(:hook_id))
   
if hook.update_attributes(declared_params(include_missing: false)) if hook.update_attributes(declared_params(include_missing: false))
present hook, with: Entities::ProjectHook present hook, with: ::API::V3::Entities::ProjectHook
else else
error!("Invalid url given", 422) if hook.errors[:url].present? error!("Invalid url given", 422) if hook.errors[:url].present?
   
not_found!("Project hook #{hook.errors.messages}") not_found!("Project hook #{hook.errors.messages}")
end
end end
end
   
desc 'Deletes project hook' do desc 'Deletes project hook' do
success Entities::ProjectHook success ::API::V3::Entities::ProjectHook
end end
params do params do
requires :hook_id, type: Integer, desc: 'The ID of the hook to delete' requires :hook_id, type: Integer, desc: 'The ID of the hook to delete'
end end
delete ":id/hooks/:hook_id" do delete ":id/hooks/:hook_id" do
begin begin
present user_project.hooks.destroy(params[:hook_id]), with: Entities::ProjectHook present user_project.hooks.destroy(params[:hook_id]), with: ::API::V3::Entities::ProjectHook
rescue rescue
# ProjectHook can raise Error if hook_id not found # ProjectHook can raise Error if hook_id not found
not_found!("Error deleting hook #{params[:hook_id]}") not_found!("Error deleting hook #{params[:hook_id]}")
end
end end
end end
end end
Loading
Loading
Loading
@@ -158,6 +158,7 @@ module API
Loading
@@ -158,6 +158,7 @@ module API
use :statistics_params use :statistics_params
end end
get '/all' do get '/all' do
byebug
authenticated_as_admin! authenticated_as_admin!
   
present_projects Project.all, with: ::API::V3::Entities::ProjectWithAccess, statistics: params[:statistics] present_projects Project.all, with: ::API::V3::Entities::ProjectWithAccess, statistics: params[:statistics]
Loading
Loading
Loading
@@ -146,7 +146,11 @@ module API
Loading
@@ -146,7 +146,11 @@ module API
name: :room, name: :room,
type: String, type: String,
desc: 'Campfire room' desc: 'Campfire room'
<<<<<<< HEAD
} }
=======
},
>>>>>>> 629355a06c... WIP
], ],
'custom-issue-tracker' => [ 'custom-issue-tracker' => [
{ {
Loading
@@ -535,8 +539,30 @@ module API
Loading
@@ -535,8 +539,30 @@ module API
desc: 'The password of the user' desc: 'The password of the user'
} }
] ]
<<<<<<< HEAD
} }
   
=======
}.freeze
trigger_services = {
'mattermost-slash-commands' => [
{
name: :token,
type: String,
desc: 'The Mattermost token'
}
],
'slack-slash-commands' => [
{
name: :token,
type: String,
desc: 'The Slack token'
}
]
}.freeze
>>>>>>> 629355a06c... WIP
resource :projects do resource :projects do
before { authenticate! } before { authenticate! }
before { authorize_admin_project } before { authorize_admin_project }
Loading
@@ -549,6 +575,38 @@ module API
Loading
@@ -549,6 +575,38 @@ module API
end end
end end
   
<<<<<<< HEAD
desc "Delete a service for project"
params do
requires :service_slug, type: String, values: services.keys, desc: 'The name of the service'
end
delete ":id/services/:service_slug" do
service = user_project.find_or_initialize_service(params[:service_slug].underscore)
=======
services.each do |service_slug, settings|
desc "Set #{service_slug} service for project"
params do
settings.each do |setting|
if setting[:required]
requires setting[:name], type: setting[:type], desc: setting[:desc]
else
optional setting[:name], type: setting[:type], desc: setting[:desc]
end
end
end
put ":id/services/#{service_slug}" do
service = user_project.find_or_initialize_service(service_slug.underscore)
service_params = declared_params(include_missing: false).merge(active: true)
if service.update_attributes(service_params)
true
else
render_api_error!('400 Bad Request', 400)
end
end
end
desc "Delete a service for project" desc "Delete a service for project"
params do params do
requires :service_slug, type: String, values: services.keys, desc: 'The name of the service' requires :service_slug, type: String, values: services.keys, desc: 'The name of the service'
Loading
@@ -556,6 +614,7 @@ module API
Loading
@@ -556,6 +614,7 @@ module API
delete ":id/services/:service_slug" do delete ":id/services/:service_slug" do
service = user_project.find_or_initialize_service(params[:service_slug].underscore) service = user_project.find_or_initialize_service(params[:service_slug].underscore)
   
>>>>>>> 629355a06c... WIP
attrs = service_attributes(service).inject({}) do |hash, key| attrs = service_attributes(service).inject({}) do |hash, key|
hash.merge!(key => nil) hash.merge!(key => nil)
end end
Loading
Loading
Loading
@@ -88,7 +88,7 @@ describe API::Groups, api: true do
Loading
@@ -88,7 +88,7 @@ describe API::Groups, api: true do
expect(response).to include_pagination_headers expect(response).to include_pagination_headers
expect(json_response).to be_an Array expect(json_response).to be_an Array
expect(json_response) expect(json_response)
.to satisfy_one { |group| group['statistics'] == attributes } .to satisfy_one { |group| group['statistics'] == exposed_attributes }
end end
end end
   
Loading
Loading
Loading
@@ -487,7 +487,7 @@ describe API::MergeRequests, api: true do
Loading
@@ -487,7 +487,7 @@ describe API::MergeRequests, api: true do
   
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
expect(json_response['title']).to eq('Test') expect(json_response['title']).to eq('Test')
expect(json_response['merge_when_pipeline_succeeds']).to eq(true) expect(json_response['merge_when_pipeline_succeeds']).to be_truthy
end end
end end
   
Loading
Loading
Loading
@@ -33,7 +33,7 @@ describe API::ProjectHooks, 'ProjectHooks', api: true do
Loading
@@ -33,7 +33,7 @@ describe API::ProjectHooks, 'ProjectHooks', api: true do
expect(json_response.first['merge_requests_events']).to eq(true) expect(json_response.first['merge_requests_events']).to eq(true)
expect(json_response.first['tag_push_events']).to eq(true) expect(json_response.first['tag_push_events']).to eq(true)
expect(json_response.first['note_events']).to eq(true) expect(json_response.first['note_events']).to eq(true)
expect(json_response.first['build_events']).to eq(true) expect(json_response.first['job_events']).to eq(true)
expect(json_response.first['pipeline_events']).to eq(true) expect(json_response.first['pipeline_events']).to eq(true)
expect(json_response.first['wiki_page_events']).to eq(true) expect(json_response.first['wiki_page_events']).to eq(true)
expect(json_response.first['enable_ssl_verification']).to eq(true) expect(json_response.first['enable_ssl_verification']).to eq(true)
Loading
@@ -52,6 +52,7 @@ describe API::ProjectHooks, 'ProjectHooks', api: true do
Loading
@@ -52,6 +52,7 @@ describe API::ProjectHooks, 'ProjectHooks', api: true do
context "authorized user" do context "authorized user" do
it "returns a project hook" do it "returns a project hook" do
get api("/projects/#{project.id}/hooks/#{hook.id}", user) get api("/projects/#{project.id}/hooks/#{hook.id}", user)
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
expect(json_response['url']).to eq(hook.url) expect(json_response['url']).to eq(hook.url)
expect(json_response['issues_events']).to eq(hook.issues_events) expect(json_response['issues_events']).to eq(hook.issues_events)
Loading
@@ -59,7 +60,7 @@ describe API::ProjectHooks, 'ProjectHooks', api: true do
Loading
@@ -59,7 +60,7 @@ describe API::ProjectHooks, 'ProjectHooks', api: true do
expect(json_response['merge_requests_events']).to eq(hook.merge_requests_events) expect(json_response['merge_requests_events']).to eq(hook.merge_requests_events)
expect(json_response['tag_push_events']).to eq(hook.tag_push_events) expect(json_response['tag_push_events']).to eq(hook.tag_push_events)
expect(json_response['note_events']).to eq(hook.note_events) expect(json_response['note_events']).to eq(hook.note_events)
expect(json_response['build_events']).to eq(hook.build_events) expect(json_response['job_events']).to eq(hook.build_events)
expect(json_response['pipeline_events']).to eq(hook.pipeline_events) expect(json_response['pipeline_events']).to eq(hook.pipeline_events)
expect(json_response['wiki_page_events']).to eq(hook.wiki_page_events) expect(json_response['wiki_page_events']).to eq(hook.wiki_page_events)
expect(json_response['enable_ssl_verification']).to eq(hook.enable_ssl_verification) expect(json_response['enable_ssl_verification']).to eq(hook.enable_ssl_verification)
Loading
@@ -98,7 +99,7 @@ describe API::ProjectHooks, 'ProjectHooks', api: true do
Loading
@@ -98,7 +99,7 @@ describe API::ProjectHooks, 'ProjectHooks', api: true do
expect(json_response['merge_requests_events']).to eq(false) expect(json_response['merge_requests_events']).to eq(false)
expect(json_response['tag_push_events']).to eq(false) expect(json_response['tag_push_events']).to eq(false)
expect(json_response['note_events']).to eq(false) expect(json_response['note_events']).to eq(false)
expect(json_response['build_events']).to eq(false) expect(json_response['job_events']).to eq(false)
expect(json_response['pipeline_events']).to eq(false) expect(json_response['pipeline_events']).to eq(false)
expect(json_response['wiki_page_events']).to eq(true) expect(json_response['wiki_page_events']).to eq(true)
expect(json_response['enable_ssl_verification']).to eq(true) expect(json_response['enable_ssl_verification']).to eq(true)
Loading
@@ -144,7 +145,7 @@ describe API::ProjectHooks, 'ProjectHooks', api: true do
Loading
@@ -144,7 +145,7 @@ describe API::ProjectHooks, 'ProjectHooks', api: true do
expect(json_response['merge_requests_events']).to eq(hook.merge_requests_events) expect(json_response['merge_requests_events']).to eq(hook.merge_requests_events)
expect(json_response['tag_push_events']).to eq(hook.tag_push_events) expect(json_response['tag_push_events']).to eq(hook.tag_push_events)
expect(json_response['note_events']).to eq(hook.note_events) expect(json_response['note_events']).to eq(hook.note_events)
expect(json_response['build_events']).to eq(hook.build_events) expect(json_response['job_events']).to eq(hook.build_events)
expect(json_response['pipeline_events']).to eq(hook.pipeline_events) expect(json_response['pipeline_events']).to eq(hook.pipeline_events)
expect(json_response['wiki_page_events']).to eq(hook.wiki_page_events) expect(json_response['wiki_page_events']).to eq(hook.wiki_page_events)
expect(json_response['enable_ssl_verification']).to eq(hook.enable_ssl_verification) expect(json_response['enable_ssl_verification']).to eq(hook.enable_ssl_verification)
Loading
Loading
Loading
@@ -490,9 +490,10 @@ describe API::Projects, api: true do
Loading
@@ -490,9 +490,10 @@ describe API::Projects, api: true do
expect(json_response['only_allow_merge_if_pipeline_succeeds']).to be_falsey expect(json_response['only_allow_merge_if_pipeline_succeeds']).to be_falsey
end end
   
it 'sets a project as allowing merge only if merge_when_pipeline_succeeds' do it 'sets a project as allowing merge only if build succeeds' do
project = attributes_for(:project, { only_allow_merge_if_pipeline_succeeds: true }) project = attributes_for(:project, { only_allow_merge_if_pipeline_succeeds: true })
post api("/projects/user/#{user.id}", admin), project post api("/projects/user/#{user.id}", admin), project
expect(json_response['only_allow_merge_if_pipeline_succeeds']).to be_truthy expect(json_response['only_allow_merge_if_pipeline_succeeds']).to be_truthy
end end
   
Loading
@@ -569,7 +570,7 @@ describe API::Projects, api: true do
Loading
@@ -569,7 +570,7 @@ describe API::Projects, api: true do
expect(json_response['issues_enabled']).to be_present expect(json_response['issues_enabled']).to be_present
expect(json_response['merge_requests_enabled']).to be_present expect(json_response['merge_requests_enabled']).to be_present
expect(json_response['wiki_enabled']).to be_present expect(json_response['wiki_enabled']).to be_present
expect(json_response['builds_enabled']).to be_present expect(json_response['jobs_enabled']).to be_present
expect(json_response['snippets_enabled']).to be_present expect(json_response['snippets_enabled']).to be_present
expect(json_response['container_registry_enabled']).to be_present expect(json_response['container_registry_enabled']).to be_present
expect(json_response['created_at']).to be_present expect(json_response['created_at']).to be_present
Loading
@@ -580,7 +581,7 @@ describe API::Projects, api: true do
Loading
@@ -580,7 +581,7 @@ describe API::Projects, api: true do
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
expect(json_response['public_builds']).to be_present expect(json_response['public_jobs']).to be_present
expect(json_response['shared_with_groups']).to be_an Array expect(json_response['shared_with_groups']).to be_an Array
expect(json_response['shared_with_groups'].length).to eq(1) expect(json_response['shared_with_groups'].length).to eq(1)
expect(json_response['shared_with_groups'][0]['group_id']).to eq(group.id) expect(json_response['shared_with_groups'][0]['group_id']).to eq(group.id)
Loading
Loading
require 'spec_helper' require 'spec_helper'
   
describe API::Deployments, api: true do describe API::V3::Deployments, api: true do
include ApiHelpers include ApiHelpers
   
let(:user) { create(:user) } let(:user) { create(:user) }
Loading
@@ -14,12 +14,8 @@ describe API::Deployments, api: true do
Loading
@@ -14,12 +14,8 @@ describe API::Deployments, api: true do
   
describe 'GET /projects/:id/deployments' do describe 'GET /projects/:id/deployments' do
context 'as member of the project' do context 'as member of the project' do
it_behaves_like 'a paginated resources' do
let(:request) { get api("/projects/#{project.id}/deployments", user) }
end
it 'returns projects deployments' do it 'returns projects deployments' do
get api("/projects/#{project.id}/deployments", user) get v3_api("/projects/#{project.id}/deployments", user)
   
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
expect(json_response).to be_an Array expect(json_response).to be_an Array
Loading
@@ -31,7 +27,7 @@ describe API::Deployments, api: true do
Loading
@@ -31,7 +27,7 @@ describe API::Deployments, api: true do
   
context 'as non member' do context 'as non member' do
it 'returns a 404 status code' do it 'returns a 404 status code' do
get api("/projects/#{project.id}/deployments", non_member) get v3_api("/projects/#{project.id}/deployments", non_member)
   
expect(response).to have_http_status(404) expect(response).to have_http_status(404)
end end
Loading
@@ -41,7 +37,7 @@ describe API::Deployments, api: true do
Loading
@@ -41,7 +37,7 @@ describe API::Deployments, api: true do
describe 'GET /projects/:id/deployments/:deployment_id' do describe 'GET /projects/:id/deployments/:deployment_id' do
context 'as a member of the project' do context 'as a member of the project' do
it 'returns the projects deployment' do it 'returns the projects deployment' do
get api("/projects/#{project.id}/deployments/#{deployment.id}", user) get v3_api("/projects/#{project.id}/deployments/#{deployment.id}", user)
   
expect(response).to have_http_status(200) expect(response).to have_http_status(200)
expect(json_response['sha']).to match /\A\h{40}\z/ expect(json_response['sha']).to match /\A\h{40}\z/
Loading
@@ -51,7 +47,7 @@ describe API::Deployments, api: true do
Loading
@@ -51,7 +47,7 @@ describe API::Deployments, api: true do
   
context 'as non member' do context 'as non member' do
it 'returns a 404 status code' do it 'returns a 404 status code' do
get api("/projects/#{project.id}/deployments/#{deployment.id}", non_member) get v3_api("/projects/#{project.id}/deployments/#{deployment.id}", non_member)
   
expect(response).to have_http_status(404) expect(response).to have_http_status(404)
end end
Loading
Loading
require "spec_helper" require "spec_helper"
   
describe API::MergeRequestDiffs, 'MergeRequestDiffs', api: true do describe API::V3::MergeRequestDiffs, 'MergeRequestDiffs', api: true do
include ApiHelpers include ApiHelpers
   
let!(:user) { create(:user) } let!(:user) { create(:user) }
Loading
@@ -15,7 +15,7 @@ describe API::MergeRequestDiffs, 'MergeRequestDiffs', api: true do
Loading
@@ -15,7 +15,7 @@ describe API::MergeRequestDiffs, 'MergeRequestDiffs', api: true do
   
describe 'GET /projects/:id/merge_requests/:merge_request_id/versions' do describe 'GET /projects/:id/merge_requests/:merge_request_id/versions' do
it 'returns 200 for a valid merge request' do it 'returns 200 for a valid merge request' do
get api("/projects/#{project.id}/merge_requests/#{merge_request.id}/versions", user) get v3_api("/projects/#{project.id}/merge_requests/#{merge_request.id}/versions", user)
merge_request_diff = merge_request.merge_request_diffs.first merge_request_diff = merge_request.merge_request_diffs.first
   
expect(response.status).to eq 200 expect(response.status).to eq 200
Loading
@@ -25,7 +25,8 @@ describe API::MergeRequestDiffs, 'MergeRequestDiffs', api: true do
Loading
@@ -25,7 +25,8 @@ describe API::MergeRequestDiffs, 'MergeRequestDiffs', api: true do
end end
   
it 'returns a 404 when merge_request_id not found' do it 'returns a 404 when merge_request_id not found' do
get api("/projects/#{project.id}/merge_requests/999/versions", user) get v3_api("/projects/#{project.id}/merge_requests/999/versions", user)
expect(response).to have_http_status(404) expect(response).to have_http_status(404)
end end
end end
Loading
@@ -33,7 +34,7 @@ describe API::MergeRequestDiffs, 'MergeRequestDiffs', api: true do
Loading
@@ -33,7 +34,7 @@ describe API::MergeRequestDiffs, 'MergeRequestDiffs', api: true do
describe 'GET /projects/:id/merge_requests/:merge_request_id/versions/:version_id' do describe 'GET /projects/:id/merge_requests/:merge_request_id/versions/:version_id' do
it 'returns a 200 for a valid merge request' do it 'returns a 200 for a valid merge request' do
merge_request_diff = merge_request.merge_request_diffs.first merge_request_diff = merge_request.merge_request_diffs.first
get api("/projects/#{project.id}/merge_requests/#{merge_request.id}/versions/#{merge_request_diff.id}", user) get v3_api("/projects/#{project.id}/merge_requests/#{merge_request.id}/versions/#{merge_request_diff.id}", user)
   
expect(response.status).to eq 200 expect(response.status).to eq 200
expect(json_response['id']).to eq(merge_request_diff.id) expect(json_response['id']).to eq(merge_request_diff.id)
Loading
@@ -42,7 +43,8 @@ describe API::MergeRequestDiffs, 'MergeRequestDiffs', api: true do
Loading
@@ -42,7 +43,8 @@ describe API::MergeRequestDiffs, 'MergeRequestDiffs', api: true do
end end
   
it 'returns a 404 when merge_request_id not found' do it 'returns a 404 when merge_request_id not found' do
get api("/projects/#{project.id}/merge_requests/#{merge_request.id}/versions/999", user) get v3_api("/projects/#{project.id}/merge_requests/#{merge_request.id}/versions/999", user)
expect(response).to have_http_status(404) expect(response).to have_http_status(404)
end end
end end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment