72 lines
2.0 KiB
Ruby
72 lines
2.0 KiB
Ruby
# Copyright (c) HashiCorp, Inc.
|
|
# SPDX-License-Identifier: BUSL-1.1
|
|
|
|
require_relative '../base'
|
|
|
|
describe VagrantPlugins::ProviderVirtualBox::Action::Import do
|
|
let(:app) { double("app") }
|
|
let(:state) { :test_state }
|
|
let(:machine) { double("machine", state: double("state", id: state)) }
|
|
let(:action_runner) { double("action_runner") }
|
|
let(:env) {
|
|
{
|
|
machine: machine,
|
|
action_runner: action_runner,
|
|
destroy_on_error: destroy_on_error,
|
|
}
|
|
}
|
|
subject { described_class.new(app, {}) }
|
|
|
|
describe "#recover" do
|
|
context "when destroy_on_error is false" do
|
|
let(:destroy_on_error) { false }
|
|
it "does nothing" do
|
|
expect(action_runner).to_not receive(:run)
|
|
subject.recover(env)
|
|
end
|
|
end
|
|
|
|
context "when destroy_on_error is true" do
|
|
let(:destroy_on_error) { true }
|
|
|
|
context "and machine is not_created" do
|
|
let(:state) { Vagrant::MachineState::NOT_CREATED_ID }
|
|
|
|
it "does nothing" do
|
|
expect(action_runner).to_not receive(:run)
|
|
subject.recover(env)
|
|
end
|
|
end
|
|
|
|
context "and machine is created" do
|
|
let(:state) { :running }
|
|
|
|
it "runs the destroy action with the proper environment" do
|
|
destroy_stack = double("destroy_stack")
|
|
allow(VagrantPlugins::ProviderVirtualBox::Action).to receive(:action_destroy) { destroy_stack }
|
|
expect(action_runner).to receive(:run).with(destroy_stack, hash_including(
|
|
config_validate: false,
|
|
force_confirm_destroy: true,
|
|
raw_action_name: :destroy,
|
|
action_name: :machine_action_destroy,
|
|
))
|
|
subject.recover(env)
|
|
end
|
|
|
|
|
|
|
|
context "but a VagrantError was raised" do
|
|
before {
|
|
env["vagrant.error"] = Vagrant::Errors::VagrantError.new
|
|
}
|
|
|
|
it "does nothing" do
|
|
expect(action_runner).to_not receive(:run)
|
|
subject.recover(env)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|