Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions app/controllers/api/v2/rh_cloud/cloud_request_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down