diff --git a/app/controllers/api/v2/rh_cloud/cloud_request_controller.rb b/app/controllers/api/v2/rh_cloud/cloud_request_controller.rb index 8df7a6eda..7ec557d59 100644 --- a/app/controllers/api/v2/rh_cloud/cloud_request_controller.rb +++ b/app/controllers/api/v2/rh_cloud/cloud_request_controller.rb @@ -27,16 +27,18 @@ def update private def metadata - params['metadata'] + params['Metadata'] || params['metadata'] end def content + content = params['Content'] || params['content'] + # the content received as base 64 of the string in double quotes - Base64.decode64(params['content']).tr('"', '') + Base64.decode64(content).tr('"', '') end def directive - params['directive'] + params['Directive'] || params['directive'] end def handle_run_playbook_request diff --git a/test/controllers/insights_cloud/api/cloud_request_controller_test.rb b/test/controllers/insights_cloud/api/cloud_request_controller_test.rb index 213a81e3e..f57a251e2 100644 --- a/test/controllers/insights_cloud/api/cloud_request_controller_test.rb +++ b/test/controllers/insights_cloud/api/cloud_request_controller_test.rb @@ -40,6 +40,33 @@ class CloudRequestControllerTest < ActionController::TestCase assert_response :success end + test 'Starts playbook run for correct directive with capitalized keys' do + host1 = FactoryBot.create(:host, :with_insights_hits) + host1.insights.uuid = 'TEST_UUID1' + host1.insights.save! + host2 = FactoryBot.create(:host, :with_insights_hits) + host2.insights.uuid = 'TEST_UUID2' + host2.insights.save! + + mock_composer = mock('composer') + ::JobInvocationComposer.expects(:for_feature).with do |feature, host_ids, params| + feature == :rh_cloud_connector_run_playbook && + host_ids.first == host1.id && + host_ids.last == host2.id + end.returns(mock_composer) + mock_composer.expects(:trigger!) + mock_composer.expects(:job_invocation) + + params = run_playbook_request + params['Directive'] = params.delete('directive') + params['Metadata'] = params.delete('metadata') + params['Content'] = params.delete('content') + + post :update, params: run_playbook_request + + assert_response :success + end + private def run_playbook_request