From 364904beb1be9204e2447ef8c179de339849896a Mon Sep 17 00:00:00 2001 From: "Eric D. Helms" Date: Thu, 9 Jun 2022 21:08:52 -0400 Subject: [PATCH 1/2] Allow capitalized JSON keys --- .../v2/rh_cloud/cloud_request_controller.rb | 14 +++++++--- .../api/cloud_request_controller_test.rb | 27 +++++++++++++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) 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..709639488 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,24 @@ def update private def metadata - params['metadata'] + return params['Metadata'] if params.key?('Metadata') + return params['metadata'] end def content + content = if params.key?('Content') + params['Content'] + else + params['content'] + end + # 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'] + return params['Directive'] if params.key?('Directive') + return 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 From 017a3313d0e8313ca66594d925947638f42120a6 Mon Sep 17 00:00:00 2001 From: Shim Shtein Date: Sun, 12 Jun 2022 12:03:48 +0300 Subject: [PATCH 2/2] Make rubocop happy --- .../api/v2/rh_cloud/cloud_request_controller.rb | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) 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 709639488..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,24 +27,18 @@ def update private def metadata - return params['Metadata'] if params.key?('Metadata') - return params['metadata'] + params['Metadata'] || params['metadata'] end def content - content = if params.key?('Content') - params['Content'] - else - params['content'] - end + content = params['Content'] || params['content'] # the content received as base 64 of the string in double quotes Base64.decode64(content).tr('"', '') end def directive - return params['Directive'] if params.key?('Directive') - return params['directive'] + params['Directive'] || params['directive'] end def handle_run_playbook_request