Add error check if Exchange config gives empty folder list (fixes #1802)

This commit is contained in:
Ryan Lue 2018-07-10 13:32:24 +08:00
parent a6d554cfb3
commit 97f55bcd83
3 changed files with 41 additions and 13 deletions

View file

@ -25,9 +25,10 @@ class Integration::ExchangeController < ApplicationController
def folders
answer_with do
Sequencer.process('Import::Exchange::AvailableFolders',
parameters: {
ews_config: ews_config
})
parameters: { ews_config: ews_config })
.tap do |res|
raise 'No folders found for given user credentials.' if res[:folders].blank?
end
end
end
@ -35,13 +36,11 @@ class Integration::ExchangeController < ApplicationController
answer_with do
raise 'Please select at least one folder.' if params[:folders].blank?
examples = Sequencer.process('Import::Exchange::AttributesExamples',
parameters: {
ews_folder_ids: params[:folders],
ews_config: ews_config
})
examples.tap do |result|
raise 'No entries found in selected folder(s).' if result[:attributes].blank?
Sequencer.process('Import::Exchange::AttributesExamples',
parameters: { ews_folder_ids: params[:folders],
ews_config: ews_config })
.tap do |res|
raise 'No entries found in selected folder(s).' if res[:attributes].blank?
end
end
end

View file

@ -0,0 +1,28 @@
require 'rails_helper'
RSpec.describe 'Exchange integration endpoint', type: :request do
before { authenticated_as(admin_with_admin_user_permissions) }
let(:admin_with_admin_user_permissions) do
create(:user, roles: [role_with_admin_user_permissions])
end
let(:role_with_admin_user_permissions) do
create(:role).tap { |role| role.permission_grant('admin.integration') }
end
describe 'EWS folder retrieval' do
context 'when no folders found' do
let(:empty_folder_list) { { folders: {} } }
it 'responds with an error message' do
allow(Sequencer).to receive(:process).with(any_args).and_return(empty_folder_list)
post api_v1_integration_exchange_folders_path,
params: {}, as: :json
expect(json_response).to include('result' => 'failed').and include('message')
end
end
end
end

View file

@ -8,8 +8,9 @@ module ZammadSpecSupportRequest
%i[get post patch put delete head].each do |method_id|
define_method(method_id) do |path, **args|
headers = Hash(headers).merge(Hash(@headers))
super(path, headers: headers, **args)
args = args.with_indifferent_access
args[:headers] = Hash(args[:headers]).merge!(Hash(@headers))
super(path, **args.symbolize_keys)
end
end