From 7b9c1b5e0f7a3d9279064df239b64820be670b54 Mon Sep 17 00:00:00 2001 From: Hilda Stastna Date: Thu, 26 Sep 2019 10:52:29 +0200 Subject: [PATCH] Display flash message after clicking on unknown/not common provider --- app/controllers/restful_redirect_controller.rb | 7 ++++++- spec/controllers/restful_redirect_controller_spec.rb | 8 ++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/controllers/restful_redirect_controller.rb b/app/controllers/restful_redirect_controller.rb index 0b38a5b84fd5..cc3a973f0c33 100644 --- a/app/controllers/restful_redirect_controller.rb +++ b/app/controllers/restful_redirect_controller.rb @@ -13,7 +13,12 @@ def index elsif %w[ManageIQ::Providers::EmbeddedAnsible::AutomationManager].include?(record.type) redirect_to(:controller => 'ansible_playbook', :action => 'show_list') else - redirect_to(polymorphic_path(record)) + begin + redirect_to(polymorphic_path(record)) + rescue NoMethodError + flash_to_session(_("Cannot redirect to \"%{record}\" provider.") % {:record => record.name}, :error) + redirect_to(:controller => 'ops', :action => 'explorer') + end end else handle_missing_record diff --git a/spec/controllers/restful_redirect_controller_spec.rb b/spec/controllers/restful_redirect_controller_spec.rb index 85ce3c58fde8..a37c906dc0f1 100644 --- a/spec/controllers/restful_redirect_controller_spec.rb +++ b/spec/controllers/restful_redirect_controller_spec.rb @@ -63,5 +63,13 @@ get :index, :params => {:model => "ExtManagementSystem/#{manager.id}"} expect(response).to redirect_to(:controller => 'ansible_playbook', :action => 'show_list') end + + it 'redirects to ops controller and displays flash message that it cannot redirect to the selected provider' do + embedded_ansible = FactoryBot.create(:provider_embedded_ansible) + allow(ExtManagementSystem).to receive(:find_by).and_return(embedded_ansible) + get :index, :params => {:model => "ExtManagementSystem/#{embedded_ansible.id}"} + expect(response).to redirect_to(:controller => 'ops', :action => 'explorer') + expect(controller.instance_variable_get(:@flash_array)).to eq([{:message => "Cannot redirect to \"#{embedded_ansible.name}\" provider.", :level => :error}]) + end end end