93 lines
2.7 KiB
Ruby
93 lines
2.7 KiB
Ruby
require "test_helper"
|
|
|
|
class ConfigVMProvisionerTest < Test::Unit::TestCase
|
|
setup do
|
|
@klass = Vagrant::Config::VMConfig::Provisioner
|
|
@top = Vagrant::Config::Top.new(nil)
|
|
end
|
|
|
|
context "initializing" do
|
|
should "expose the top instance that the provisioner belongs to" do
|
|
instance = @klass.new(@top, :chef_solo)
|
|
assert_equal @top, instance.top
|
|
end
|
|
|
|
should "expose the shortcut used" do
|
|
instance = @klass.new(@top, :chef_solo)
|
|
assert_equal :chef_solo, instance.shortcut
|
|
end
|
|
|
|
should "expose the provisioner class if its a valid shortcut" do
|
|
instance = @klass.new(@top, :chef_solo)
|
|
assert_equal Vagrant::Provisioners::ChefSolo, instance.provisioner
|
|
end
|
|
|
|
should "expose the provisioner class if its a valid class" do
|
|
instance = @klass.new(@top, Vagrant::Provisioners::ChefSolo)
|
|
assert_equal Vagrant::Provisioners::ChefSolo, instance.provisioner
|
|
end
|
|
|
|
should "have a nil provisioner class if invalid" do
|
|
instance = @klass.new(@top, :i_shall_never_exist)
|
|
assert_nil instance.provisioner
|
|
end
|
|
|
|
should "have a nil config instance if invalid" do
|
|
instance = @klass.new(@top, :i_shall_never_exist)
|
|
assert_nil instance.config
|
|
end
|
|
|
|
should "set the top of the config object to the given top" do
|
|
instance = @klass.new(@top, :chef_solo)
|
|
assert_equal @top, instance.config.top
|
|
end
|
|
|
|
should "configure the provisioner if valid" do
|
|
instance = @klass.new(@top, :chef_solo) do |chef|
|
|
chef.cookbooks_path = "foo"
|
|
end
|
|
|
|
assert_equal "foo", instance.config.cookbooks_path
|
|
end
|
|
|
|
should "configure the provisioner with a hash if valid" do
|
|
instance = @klass.new(@top, :chef_solo, :cookbooks_path => "foo")
|
|
assert_equal "foo", instance.config.cookbooks_path
|
|
end
|
|
end
|
|
|
|
context "validation" do
|
|
setup do
|
|
@errors = Vagrant::Config::ErrorRecorder.new
|
|
end
|
|
|
|
should "be invalid if provisioner is valid" do
|
|
instance = @klass.new(@top, :i_shall_never_exist)
|
|
instance.validate(@errors)
|
|
assert !@errors.errors.empty?
|
|
end
|
|
|
|
should "be invalid if provisioner doesn't inherit from provisioners base" do
|
|
klass = Class.new
|
|
instance = @klass.new(@top, klass)
|
|
instance.validate(@errors)
|
|
assert !@errors.errors.empty?
|
|
end
|
|
|
|
should "be valid with a valid provisioner" do
|
|
instance = @klass.new(@top, :chef_solo) do |chef|
|
|
chef.add_recipe "foo"
|
|
end
|
|
|
|
instance.validate(@errors)
|
|
assert @errors.errors.empty?
|
|
end
|
|
|
|
should "be invalid if a provisioner's config is invalid" do
|
|
instance = @klass.new(@top, :chef_solo)
|
|
instance.validate(@errors)
|
|
assert !@errors.errors.empty?
|
|
end
|
|
end
|
|
end
|