Merge branch '32483-jira-error' into 'master'
Display specific error message when JIRA test fails Closes #32483 See merge request !13100
This commit is contained in:
commit
fa4d08ed81
|
@ -102,7 +102,7 @@ export default class IntegrationSettingsForm {
|
|||
})
|
||||
.done((res) => {
|
||||
if (res.error) {
|
||||
new Flash(res.message, null, null, {
|
||||
new Flash(`${res.message} ${res.service_response}`, null, null, {
|
||||
title: 'Save anyway',
|
||||
clickHandler: (e) => {
|
||||
e.preventDefault();
|
||||
|
|
|
@ -160,7 +160,10 @@ class JiraService < IssueTrackerService
|
|||
|
||||
def test(_)
|
||||
result = test_settings
|
||||
{ success: result.present?, result: result }
|
||||
success = result.present?
|
||||
result = @error if @error && !success
|
||||
|
||||
{ success: success, result: result }
|
||||
end
|
||||
|
||||
# JIRA does not need test data.
|
||||
|
@ -288,7 +291,8 @@ class JiraService < IssueTrackerService
|
|||
yield
|
||||
|
||||
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, Errno::ECONNREFUSED, URI::InvalidURIError, JIRA::HTTPError, OpenSSL::SSL::SSLError => e
|
||||
Rails.logger.info "#{self.class.name} Send message ERROR: #{client_url} - #{e.message}"
|
||||
@error = e.message
|
||||
Rails.logger.info "#{self.class.name} Send message ERROR: #{client_url} - #{@error}"
|
||||
nil
|
||||
end
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: Display specific error message when JIRA test fails
|
||||
merge_request:
|
||||
author:
|
|
@ -62,7 +62,7 @@ feature 'Setup Jira service', :js do
|
|||
click_button('Test settings and save changes')
|
||||
wait_for_requests
|
||||
|
||||
expect(find('.flash-container-page')).to have_content 'Test failed.'
|
||||
expect(find('.flash-container-page')).to have_content 'Test failed. message'
|
||||
expect(find('.flash-container-page')).to have_content 'Save anyway'
|
||||
|
||||
find('.flash-alert .flash-action').trigger('click')
|
||||
|
|
|
@ -135,10 +135,10 @@ describe('IntegrationSettingsForm', () => {
|
|||
|
||||
integrationSettingsForm.testSettings(formData);
|
||||
|
||||
deferred.resolve({ error: true, message: errorMessage });
|
||||
deferred.resolve({ error: true, message: errorMessage, service_response: 'some error' });
|
||||
|
||||
const $flashContainer = $('.flash-container');
|
||||
expect($flashContainer.find('.flash-text').text()).toEqual(errorMessage);
|
||||
expect($flashContainer.find('.flash-text').text()).toEqual('Test failed. some error');
|
||||
expect($flashContainer.find('.flash-action')).toBeDefined();
|
||||
expect($flashContainer.find('.flash-action').text()).toEqual('Save anyway');
|
||||
});
|
||||
|
|
|
@ -197,21 +197,38 @@ describe JiraService do
|
|||
)
|
||||
end
|
||||
|
||||
def test_settings(api_url)
|
||||
def test_settings(api_url = nil)
|
||||
api_url ||= 'jira.example.com'
|
||||
test_url = "http://#{api_url}/rest/api/2/serverInfo"
|
||||
|
||||
WebMock.stub_request(:get, test_url).with(basic_auth: %w(jira_username jira_password)).to_return(body: { url: 'http://url' }.to_json )
|
||||
|
||||
jira_service.test_settings
|
||||
jira_service.test(nil)
|
||||
end
|
||||
|
||||
it 'tries to get JIRA project with URL when API URL not set' do
|
||||
test_settings('jira.example.com')
|
||||
context 'when the test succeeds' do
|
||||
it 'tries to get JIRA project with URL when API URL not set' do
|
||||
test_settings('jira.example.com')
|
||||
end
|
||||
|
||||
it 'returns correct result' do
|
||||
expect(test_settings).to eq( { success: true, result: { 'url' => 'http://url' } })
|
||||
end
|
||||
|
||||
it 'tries to get JIRA project with API URL if set' do
|
||||
jira_service.update(api_url: 'http://jira.api.com')
|
||||
test_settings('jira.api.com')
|
||||
end
|
||||
end
|
||||
|
||||
it 'tries to get JIRA project with API URL if set' do
|
||||
jira_service.update(api_url: 'http://jira.api.com')
|
||||
test_settings('jira.api.com')
|
||||
context 'when the test fails' do
|
||||
it 'returns result with the error' do
|
||||
test_url = 'http://jira.example.com/rest/api/2/serverInfo'
|
||||
WebMock.stub_request(:get, test_url).with(basic_auth: %w(jira_username jira_password))
|
||||
.to_raise(JIRA::HTTPError.new(double(message: 'Some specific failure.')))
|
||||
|
||||
expect(jira_service.test(nil)).to eq( { success: false, result: 'Some specific failure.' })
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue