vagrant/test/unit/plugins/provisioners/salt/config_test.rb

161 lines
4.2 KiB
Ruby

require File.expand_path("../../../../base", __FILE__)
require Vagrant.source_root.join("plugins/provisioners/salt/config")
describe VagrantPlugins::Salt::Config do
include_context "unit"
subject { described_class.new }
let(:iso_env) do
# We have to create a Vagrantfile so there is a root path
env = isolated_environment
env.vagrantfile("")
env.create_vagrant_env
end
let(:machine) { iso_env.machine(iso_env.machine_names[0], :dummy) }
describe "validate" do
let(:error_key) { "salt provisioner" }
it "passes by default" do
subject.finalize!
result = subject.validate(machine)
expect(result[error_key]).to be_empty
end
context "minion_config" do
it "fails if minion_config is set and missing" do
subject.minion_config = "/nope/nope/i/dont/exist"
subject.finalize!
result = subject.validate(machine)
expect(result[error_key]).to_not be_empty
end
it "is valid if is set and not missing" do
subject.minion_config = File.expand_path(__FILE__)
subject.finalize!
result = subject.validate(machine)
expect(result[error_key]).to be_empty
end
end
context "master_config" do
it "fails if master_config is set and missing" do
subject.master_config = "/ceci/nest/pas/une/path"
subject.finalize!
result = subject.validate(machine)
expect(result[error_key]).to_not be_empty
end
it "is valid if is set and not missing" do
subject.master_config = File.expand_path(__FILE__)
subject.finalize!
result = subject.validate(machine)
expect(result[error_key]).to be_empty
end
end
context "grains_config" do
it "fails if grains_config is set and missing" do
subject.grains_config = "/nope/still/not/here"
subject.finalize!
result = subject.validate(machine)
expect(result[error_key]).to_not be_empty
end
it "is valid if is set and not missing" do
subject.grains_config = File.expand_path(__FILE__)
subject.finalize!
result = subject.validate(machine)
expect(result[error_key]).to be_empty
end
end
context "salt_call_args" do
it "fails if salt_call_args is not an array" do
subject.salt_call_args = "--flags"
subject.finalize!
result = subject.validate(machine)
expect(result[error_key]).to_not be_empty
end
it "is valid if is set and not missing" do
subject.salt_call_args = ["--flags"]
subject.finalize!
result = subject.validate(machine)
expect(result[error_key]).to be_empty
end
end
context "salt_args" do
it "fails if not an array" do
subject.salt_args = "--flags"
subject.finalize!
result = subject.validate(machine)
expect(result[error_key]).to_not be_empty
end
it "is valid if is set and not missing" do
subject.salt_args = ["--flags"]
subject.finalize!
result = subject.validate(machine)
expect(result[error_key]).to be_empty
end
end
context "python_version" do
it "is valid if is set and not missing" do
subject.python_version = "2"
subject.finalize!
result = subject.validate(machine)
expect(result[error_key]).to be_empty
end
it "can be a string" do
subject.python_version = "2"
subject.finalize!
result = subject.validate(machine)
expect(result[error_key]).to be_empty
end
it "can be an integer" do
subject.python_version = 2
subject.finalize!
result = subject.validate(machine)
expect(result[error_key]).to be_empty
end
it "is not a number that is not an integer" do
subject.python_version = 2.7
subject.finalize!
result = subject.validate(machine)
expect(result[error_key]).to_not be_empty
end
it "is not a string that does not parse to an integer" do
subject.python_version = '2.7'
subject.finalize!
result = subject.validate(machine)
expect(result[error_key]).to_not be_empty
end
end
end
end