diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb index 97d0fa43529ec0805a8bb22887add6cb9dcdf262..df36d2daa578582a13939f35b7cdc03a8239de8e 100644 --- a/app/controllers/projects/issues_controller.rb +++ b/app/controllers/projects/issues_controller.rb @@ -128,7 +128,7 @@ def new discussion_to_resolve: params[:discussion_to_resolve], confidential: !!Gitlab::Utils.to_boolean(issue_params[:confidential]) ) - service = ::Issues::BuildService.new(project: project, current_user: current_user, params: build_params) + service = ::Issues::BuildService.new(container: project, current_user: current_user, params: build_params) @issue = @noteable = service.execute diff --git a/app/services/issues/build_service.rb b/app/services/issues/build_service.rb index 75bd2b88e86e0df427705e46c25973154c6b8e4d..877ce09e06544b99e5e90338a3947b90eb5f6e9f 100644 --- a/app/services/issues/build_service.rb +++ b/app/services/issues/build_service.rb @@ -4,6 +4,11 @@ module Issues class BuildService < Issues::BaseService include ResolveDiscussions + # TODO: this is to be removed once we get to rename the IssuableBaseService project param to container + def initialize(container:, current_user: nil, params: {}) + super(project: container, current_user: current_user, params: params) + end + def execute filter_resolve_discussion_params diff --git a/app/services/issues/create_service.rb b/app/services/issues/create_service.rb index a92110fd84338a0336603bb9b116c26fcdcdfcf9..c9f075911022b18de1662b5f5537553469d25b3c 100644 --- a/app/services/issues/create_service.rb +++ b/app/services/issues/create_service.rb @@ -17,7 +17,7 @@ def initialize(project:, spam_params:, current_user: nil, params: {}, build_serv @extra_params = params.delete(:extra_params) || {} super(project: project, current_user: current_user, params: params) @spam_params = spam_params - @build_service = build_service || BuildService.new(project: project, current_user: current_user, params: params) + @build_service = build_service || BuildService.new(container: project, current_user: current_user, params: params) end def execute(skip_system_notes: false) diff --git a/app/services/tasks_to_be_done/base_service.rb b/app/services/tasks_to_be_done/base_service.rb index c868ebcc46315a19101a16312cab1aef623716a9..3dd53a2f09ccb04d05980ddfa4bcc27a68cb228c 100644 --- a/app/services/tasks_to_be_done/base_service.rb +++ b/app/services/tasks_to_be_done/base_service.rb @@ -19,7 +19,7 @@ def execute update_service = Issues::UpdateService.new(project: project, current_user: current_user, params: { add_assignee_ids: params[:assignee_ids] }) update_service.execute(issue) else - build_service = Issues::BuildService.new(project: project, current_user: current_user, params: params) + build_service = Issues::BuildService.new(container: project, current_user: current_user, params: params) create(build_service.execute) end end diff --git a/app/services/work_items/create_service.rb b/app/services/work_items/create_service.rb index c89ebc75b80a00fec16ad6ff24f299507229e778..500525b5156c83049ddd60649b7f96800f2b5bb6 100644 --- a/app/services/work_items/create_service.rb +++ b/app/services/work_items/create_service.rb @@ -10,7 +10,7 @@ def initialize(project:, spam_params:, current_user: nil, params: {}, widget_par current_user: current_user, params: params, spam_params: spam_params, - build_service: ::WorkItems::BuildService.new(project: project, current_user: current_user, params: params) + build_service: ::WorkItems::BuildService.new(container: project, current_user: current_user, params: params) ) @widget_params = widget_params end diff --git a/ee/app/services/issues/build_from_vulnerability_service.rb b/ee/app/services/issues/build_from_vulnerability_service.rb deleted file mode 100644 index 4d9f7902303cd4ced3f98a48df6512ecef7ad7c8..0000000000000000000000000000000000000000 --- a/ee/app/services/issues/build_from_vulnerability_service.rb +++ /dev/null @@ -1,27 +0,0 @@ -# frozen_string_literal: true - -module Issues - class BuildFromVulnerabilityService < Issues::BuildService - def execute - vulnerability = params[:vulnerability] - - params.merge!( - title: _("Investigate vulnerability: %{title}") % { title: vulnerability.title }, - description: render_description(vulnerability), - confidential: true - ) - - super - end - - private - - def render_description(vulnerability) - ApplicationController.render( - template: 'vulnerabilities/issue_description', - formats: :md, - locals: { vulnerability: vulnerability.present } - ) - end - end -end diff --git a/ee/spec/services/ee/issues/build_from_vulnerability_service_spec.rb b/ee/spec/services/ee/issues/build_from_vulnerability_service_spec.rb deleted file mode 100644 index 7cb73f5a567db2cd501980c97db9e256636d942b..0000000000000000000000000000000000000000 --- a/ee/spec/services/ee/issues/build_from_vulnerability_service_spec.rb +++ /dev/null @@ -1,92 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe Issues::BuildFromVulnerabilityService do - describe '#execute' do - let_it_be(:group) { create(:group) } - let_it_be(:project) { create(:project, :public, :repository, namespace: group) } - let_it_be(:user) { create(:user) } - - before_all do - group.add_developer(user) - end - - before do - stub_licensed_features(security_dashboard: true) - end - - it 'builds the issue with the given params' do - vulnerability = create(:vulnerability, :with_finding, project: project) - service = described_class.new(project: project, current_user: user, params: { vulnerability: vulnerability }) - - issue = service.execute - - expect(issue).not_to be_persisted - expect(issue).to have_attributes( - project: project, - author: user, - title: "Investigate vulnerability: #{vulnerability.title}", - description: - <<~DESC - Issue created from vulnerability <a href="http://localhost/#{group.name}/#{project.name}/-/security/vulnerabilities/#{vulnerability.id}">#{vulnerability.id}</a> - - ### Description: - - Description of #{vulnerability.title} - - * Severity: #{vulnerability.severity} - * Confidence: #{vulnerability.confidence} - * Location: [maven/src/main/java/com/gitlab/security_products/tests/App.java:29](http://localhost/#{project.full_path}/-/blob/master/maven/src/main/java/com/gitlab/security_products/tests/App.java#L29) - - #### Evidence - - * Method: `GET` - * URL: http://goat:8080/WebGoat/logout - - ##### Request: - - ``` - Accept : */* - ``` - - ##### Response: - - ``` - Content-Length : 0 - ``` - - ### Solution: - - #{vulnerability.solution} - - ### Identifiers: - - * [CVE-2018-1234](http://cve.mitre.org/cgi-bin/cvename.cgi?name=2018-1234) - - ### Links: - - * [Cipher does not check for integrity first?](https://crypto.stackexchange.com/questions/31428/pbewithmd5anddes-cipher-does-not-check-for-integrity-first) - - ### Scanner: - - * Name: Find Security Bugs - - /confidential - DESC - ) - end - - context 'when a vulnerability has remediations' do - it 'displays Remediations section with attached diff' do - vulnerability = create(:vulnerability, :with_remediation, project: project) - service = described_class.new(project: project, current_user: user, params: { vulnerability: vulnerability }) - - issue = service.execute - - expect(issue.description).to match(/Remediations/) - expect(issue.description).to match(/This is a diff/) - end - end - end -end diff --git a/ee/spec/services/issues/build_service_spec.rb b/ee/spec/services/issues/build_service_spec.rb index 71149dc4120daf529c46369b2ef7c96c6797d61f..80ee0467be810a2f33bfcad6bdb110ebbaa38a46 100644 --- a/ee/spec/services/issues/build_service_spec.rb +++ b/ee/spec/services/issues/build_service_spec.rb @@ -15,7 +15,7 @@ end def build_issue(issue_params = {}) - described_class.new(project: project, current_user: user, params: issue_params).execute + described_class.new(container: project, current_user: user, params: issue_params).execute end context 'with an issue template' do diff --git a/spec/services/issues/build_service_spec.rb b/spec/services/issues/build_service_spec.rb index 838e0675372330c3a921058c67411521a08eecc7..2160c45d079d253a3b7c330acc632f0c32ccf19e 100644 --- a/spec/services/issues/build_service_spec.rb +++ b/spec/services/issues/build_service_spec.rb @@ -19,7 +19,7 @@ end def build_issue(issue_params = {}) - described_class.new(project: project, current_user: user, params: issue_params).execute + described_class.new(container: project, current_user: user, params: issue_params).execute end context 'for a single discussion' do @@ -45,7 +45,7 @@ def build_issue(issue_params = {}) describe '#items_for_discussions' do it 'has an item for each discussion' do create(:diff_note_on_merge_request, noteable: merge_request, project: merge_request.source_project, line_number: 13) - service = described_class.new(project: project, current_user: user, params: { merge_request_to_resolve_discussions_of: merge_request.iid }) + service = described_class.new(container: project, current_user: user, params: { merge_request_to_resolve_discussions_of: merge_request.iid }) service.execute @@ -54,7 +54,7 @@ def build_issue(issue_params = {}) end describe '#item_for_discussion' do - let(:service) { described_class.new(project: project, current_user: user, params: { merge_request_to_resolve_discussions_of: merge_request.iid }) } + let(:service) { described_class.new(container: project, current_user: user, params: { merge_request_to_resolve_discussions_of: merge_request.iid }) } it 'mentions the author of the note' do discussion = create(:diff_note_on_merge_request, author: create(:user, username: 'author')).to_discussion diff --git a/spec/services/tasks_to_be_done/base_service_spec.rb b/spec/services/tasks_to_be_done/base_service_spec.rb index 7219dae60be6b414cc9cc6e4bcaf586224cbe0bb..8ea9a6a8ec2706e35f287667418976e61cfc3488 100644 --- a/spec/services/tasks_to_be_done/base_service_spec.rb +++ b/spec/services/tasks_to_be_done/base_service_spec.rb @@ -35,7 +35,7 @@ expect(Issues::BuildService) .to receive(:new) - .with(project: project, current_user: current_user, params: params) + .with(container: project, current_user: current_user, params: params) .and_call_original expect { service.execute }.to change(Issue, :count).by(1) diff --git a/spec/services/work_items/build_service_spec.rb b/spec/services/work_items/build_service_spec.rb index 6b2e2d8819ec92f8354d0ceeae2ee7892224c567..405b4414fc2b221e0635fb9ebe19ecda5ae66d2c 100644 --- a/spec/services/work_items/build_service_spec.rb +++ b/spec/services/work_items/build_service_spec.rb @@ -13,7 +13,7 @@ end describe '#execute' do - subject { described_class.new(project: project, current_user: user, params: {}).execute } + subject { described_class.new(container: project, current_user: user, params: {}).execute } it { is_expected.to be_a(::WorkItem) } end