62 lines
1.7 KiB
Ruby
62 lines
1.7 KiB
Ruby
require 'test_helper'
|
|
|
|
class CheckBoxVMActionTest < Test::Unit::TestCase
|
|
setup do
|
|
@klass = Vagrant::Action::VM::CheckBox
|
|
end
|
|
|
|
context "calling" do
|
|
should "raise error if box not specified" do
|
|
app, env = action_env(vagrant_env(vagrantfile(<<-vf)))
|
|
config.vm.box = nil
|
|
vf
|
|
|
|
instance = @klass.new(app, env)
|
|
app.expects(:call).never
|
|
|
|
assert_raises(Vagrant::Errors::BoxNotSpecified) {
|
|
instance.call(env)
|
|
}
|
|
end
|
|
|
|
should "error if box does not exist and URL not specified" do
|
|
app, env = action_env(vagrant_env(vagrantfile(<<-vf)))
|
|
config.vm.box = "yo"
|
|
config.vm.box_url = nil
|
|
vf
|
|
|
|
instance = @klass.new(app, env)
|
|
app.expects(:call).never
|
|
env.env.boxes.expects(:find).with(env["config"].vm.box).returns(nil)
|
|
|
|
assert_raises(Vagrant::Errors::BoxSpecifiedDoesntExist) {
|
|
instance.call(env)
|
|
}
|
|
end
|
|
|
|
should "attempt to download box and continue if URL specified" do
|
|
app, env = action_env(vagrant_env(vagrantfile(<<-vf)))
|
|
config.vm.box = "yo"
|
|
config.vm.box_url = "http://google.com"
|
|
vf
|
|
|
|
# Save this for later because the expecations below clobber it
|
|
vms = env.env.vms
|
|
|
|
instance = @klass.new(app, env)
|
|
seq = sequence("seq")
|
|
env.env.boxes.expects(:find).returns(nil)
|
|
Vagrant::Box.expects(:add).with(env.env, env["config"].vm.box, env["config"].vm.box_url).in_sequence(seq)
|
|
env.env.boxes.expects(:reload!).in_sequence(seq)
|
|
vms.each do |name, vm|
|
|
vm.env.expects(:reload_config!).in_sequence(seq)
|
|
end
|
|
app.expects(:call).with(env).once.in_sequence(seq)
|
|
|
|
assert_nothing_raised {
|
|
instance.call(env)
|
|
}
|
|
end
|
|
end
|
|
end
|