Skip to content

Commit

Permalink
Merge pull request #607 from billfitzgerald0120/refactor_infra_vm_ret…
Browse files Browse the repository at this point in the history
…irement_approve_request

Refactor approve_request method for Infra VM Retirement Approval.
  • Loading branch information
tinaafitz authored Nov 11, 2019
2 parents 2e8d332 + 6c56109 commit 84631f5
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -1,14 +1,37 @@
#
# Description: This method is executed when the provisioning request is auto-approved
#
module ManageIQ
module Automate
module Infrastructure
module VM
module Retirement
module StateMachines
module RetirementRequestApproval
class ApproveRequest
def initialize(handle = $evm)
@handle = handle
end

# Auto-Approve request
$evm.log("info", "Checking for auto_approval")
approval_type = $evm.object['approval_type'].downcase
if approval_type == 'auto'
$evm.log("info", "AUTO-APPROVING")
$evm.root["miq_request"].approve("admin", "Auto-Approved")
else
$evm.log("info", "Not Auto-Approved")
exit MIQ_ABORT
def main
# Auto-Approve request
@handle.log('info', 'Checking for auto_approval')
approval_type = @handle.object['approval_type'].try(:downcase)
if approval_type == 'auto'
@handle.log('info', 'AUTO-APPROVING')
@handle.root['miq_request'].approve('admin', 'Auto-Approved')
else
@handle.log('info', 'Not Auto-Approved')
raise 'Not Auto-Approved'
end
end
end
end
end
end
end
end
end
end

ManageIQ::Automate::Infrastructure::VM::Retirement::StateMachines::RetirementRequestApproval::ApproveRequest.new.main
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
require_domain_file

describe ManageIQ::Automate::Infrastructure::VM::Retirement::StateMachines::RetirementRequestApproval::ApproveRequest do
let(:svc_request) { MiqAeMethodService::MiqAeServiceMiqProvisionRequest.find(request.id) }
let(:request) { FactoryBot.create(:miq_provision_request, :with_approval) }
let(:root_object) { Spec::Support::MiqAeMockObject.new(root_hash) }
let(:root_hash) { { 'miq_request' => svc_request } }

let(:ae_service) do
Spec::Support::MiqAeMockService.new(root_object).tap do |service|
current_object = Spec::Support::MiqAeMockObject.new
current_object.parent = root_object
current_object['approval_type'] = 'auto'
service.object = current_object
end
end

it 'approves request' do
expect(svc_request).to(receive(:approve).with('admin', 'Auto-Approved'))
described_class.new(ae_service).main
end

it 'does not approve request' do
ae_service.object['approval_type'] = nil
expect { described_class.new(ae_service).main }.to raise_error('Not Auto-Approved')
end
end

0 comments on commit 84631f5

Please sign in to comment.