Skip to content
Snippets Groups Projects
Commit 242849eb authored by Aboobacker MK's avatar Aboobacker MK :three:
Browse files

Merge branch 'update-resolve-vuln-response' into 'master'

Update resolve vulnerability to return MR link

See merge request !137384



Merged-by: Aboobacker MK's avatarAboobacker MK <akarakath@gitlab.com>
Approved-by: default avatarMichał Zając <mzajac@gitlab.com>
Approved-by: Aboobacker MK's avatarAboobacker MK <akarakath@gitlab.com>
Co-authored-by: default avatarGregory <11164960-ghavenga@users.noreply.gitlab.com>
Co-authored-by: default avatarSamantha Ming <sming@gitlab.com>
parents cb25398c e948454d
No related branches found
No related tags found
1 merge request!137384Update resolve vulnerability to return MR link
Pipeline #1081379293 passed
......@@ -65,7 +65,8 @@ def create_merge_request(user, vulnerability, response)
return formatted_error_response(RESOLUTION_FAILURE_ERROR, context: result) unless result[:status] == :success
{ merge_request_reference: result[:merge_request].to_reference }
mr = result[:merge_request]
{ merge_request_url: Gitlab::Routing.url_helpers.project_merge_request_url(mr.project, mr) }
end
def error_message(error)
......
......@@ -7,7 +7,7 @@ class ResolveVulnerability < ::Gitlab::Llm::BaseResponseModifier
include Gitlab::Utils::StrongMemoize
def response_body
@response_body ||= ai_response&.dig(:merge_request_reference).to_s
@response_body ||= ai_response&.dig(:merge_request_url).to_s
end
strong_memoize_attr :response_body
......@@ -21,8 +21,8 @@ def empty_response_error
case ai_response
when {}, nil
"The response from the AI provider was empty."
when { 'merge_request_reference' => nil }
"No resolution merge request reference was provided"
when { 'merge_request_url' => nil }
"No resolution merge request url was provided"
end
end
end
......
......@@ -8,7 +8,7 @@
let(:prompt_class) { Gitlab::Llm::Templates::Vulnerabilities::ResolveVulnerability }
let(:merge_request_service) { ::MergeRequests::CreateFromVulnerabilityDataService }
let(:merge_request) { create(:merge_request, source_project: project) }
let(:mr_reference) { merge_request.to_reference }
let(:mr_url) { Gitlab::Routing.url_helpers.project_merge_request_url(project, merge_request) }
let(:code_patch) { "somecode\nexecute" }
let(:example_response) do
{
......@@ -128,7 +128,7 @@ def execute_resolve(message_params = {}, options = {})
expect(GraphqlTriggers).to have_received(:ai_completion_response).with(
an_object_having_attributes(
content: mr_reference,
content: mr_url,
role: ::Gitlab::Llm::AiMessage::ROLE_ASSISTANT,
request_id: 'uuid',
errors: [],
......
......@@ -27,25 +27,25 @@
it_behaves_like 'empty response error'
end
context 'when no merge request reference is passed' do
let(:reference) { nil }
let(:ai_response) { { 'merge_request_reference' => reference }.to_json }
context 'when no merge request url is passed' do
let(:url) { nil }
let(:ai_response) { { 'merge_request_url' => url }.to_json }
it 'parses content from the ai response' do
expect(response_modifier.response_body).to eq('')
end
it 'returns empty errors' do
expect(response_modifier.errors).to match_array("No resolution merge request reference was provided")
expect(response_modifier.errors).to match_array("No resolution merge request url was provided")
end
end
context 'when a merge request reference is passed' do
let(:reference) { "!1" }
let(:ai_response) { { 'merge_request_reference' => reference }.to_json }
context 'when a merge request url is passed' do
let(:url) { "http://localhost/namespace1/project-1/-/merge_requests/1" }
let(:ai_response) { { 'merge_request_url' => url }.to_json }
it 'parses content from the ai response' do
expect(response_modifier.response_body).to eq(reference)
expect(response_modifier.response_body).to eq(url)
end
it 'returns empty errors' do
......
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