1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
# frozen_string_literal: true
module Integrations
module ProjectTestData
NoDataError = Class.new(ArgumentError)
private
def no_data_error(msg)
raise NoDataError, msg
end
def push_events_data
Gitlab::DataBuilder::Push.build_sample(project, current_user)
end
def tag_push_events_data
Gitlab::DataBuilder::Push.build_sample(project, current_user, is_tag: true)
end
def note_events_data
note = NotesFinder.new(current_user, project: project, target: project, sort: 'id_desc').execute.first
no_data_error(s_('TestHooks|Ensure the project has notes.')) unless note.present?
Gitlab::DataBuilder::Note.build(note, current_user, :create)
end
def issues_events_data
issue = IssuesFinder.new(current_user, project_id: project.id, sort: 'created_desc').execute.first
no_data_error(s_('TestHooks|Ensure the project has issues.')) unless issue.present?
issue.to_hook_data(current_user, action: 'open')
end
def merge_requests_events_data
merge_request = MergeRequestsFinder.new(current_user, project_id: project.id, sort: 'created_desc').execute.first
no_data_error(s_('TestHooks|Ensure the project has merge requests.')) unless merge_request.present?
merge_request.to_hook_data(current_user, action: 'open')
end
def job_events_data
build = Ci::JobsFinder.new(current_user: current_user, project: project).execute.first
no_data_error(s_('TestHooks|Ensure the project has CI jobs.')) unless build.present?
Gitlab::DataBuilder::Build.build(build)
end
def pipeline_events_data
pipeline = Ci::PipelinesFinder.new(project, current_user, order_by: 'id', sort: 'desc').execute.first
no_data_error(s_('TestHooks|Ensure the project has CI pipelines.')) unless pipeline.present?
Gitlab::DataBuilder::Pipeline.build(pipeline)
end
def wiki_page_events_data
page = project.wiki.list_pages(limit: 1).first
no_data_error(s_('TestHooks|Ensure the wiki is enabled and has pages.')) if !project.wiki_enabled? || page.blank?
Gitlab::DataBuilder::WikiPage.build(page, current_user, 'create')
end
def deployment_events_data
deployment = DeploymentsFinder.new(project: project, order_by: 'created_at', sort: 'desc').execute.first
no_data_error(s_('TestHooks|Ensure the project has deployments.')) unless deployment.present?
Gitlab::DataBuilder::Deployment.build(deployment, deployment.status, Time.current)
end
def releases_events_data
release = ReleasesFinder.new(project, current_user, order_by: :created_at, sort: :desc).execute.first
no_data_error(s_('TestHooks|Ensure the project has releases.')) unless release.present?
release.to_hook_data('create')
end
def emoji_events_data
no_data_error(s_('TestHooks|Ensure the project has notes.')) unless project.notes.any?
award_emoji = AwardEmoji.new(
id: 1,
name: AwardEmoji::THUMBS_UP,
user: current_user,
awardable: project.notes.last,
created_at: Time.zone.now,
updated_at: Time.zone.now
)
Gitlab::DataBuilder::Emoji.build(award_emoji, current_user, 'award')
end
def access_tokens_events_data
resource_access_token = PersonalAccessToken.new(
id: 1,
name: 'pat_for_webhook_event',
user: project.bots.first,
created_at: Time.zone.now,
updated_at: Time.zone.now,
expires_at: 2.days.from_now
)
Gitlab::DataBuilder::ResourceAccessToken.build(resource_access_token, :expiring, project)
end
def current_user_events_data
{
current_user: current_user
}
end
def project_events_data
Gitlab::HookData::ProjectBuilder.new(project).build(:create)
end
end
end
|