vagrant/test/unit/plugins/provisioners/chef/config/base_runner_test.rb

256 lines
5.7 KiB
Ruby
Raw Normal View History

require_relative "../../../../base"
require Vagrant.source_root.join("plugins/provisioners/chef/config/base_runner")
describe VagrantPlugins::Chef::Config::BaseRunner do
include_context "unit"
subject { described_class.new }
let(:machine) { double("machine") }
describe "#arguments" do
it "defaults to nil" do
subject.finalize!
expect(subject.arguments).to be(nil)
end
end
describe "#attempts" do
it "defaults to 1" do
subject.finalize!
expect(subject.attempts).to eq(1)
end
end
describe "#custom_config_path" do
it "defaults to nil" do
subject.finalize!
expect(subject.custom_config_path).to be(nil)
end
end
describe "#environment" do
it "defaults to nil" do
subject.finalize!
expect(subject.environment).to be(nil)
end
end
describe "#encrypted_data_bag_secret_key_path" do
it "defaults to nil" do
subject.finalize!
expect(subject.encrypted_data_bag_secret_key_path).to be(nil)
end
end
describe "#formatter" do
it "defaults to nil" do
subject.finalize!
expect(subject.formatter).to be(nil)
end
end
describe "#http_proxy" do
it "defaults to nil" do
subject.finalize!
expect(subject.http_proxy).to be(nil)
end
end
describe "#http_proxy_user" do
it "defaults to nil" do
subject.finalize!
expect(subject.http_proxy_user).to be(nil)
end
end
describe "#http_proxy_pass" do
it "defaults to nil" do
subject.finalize!
expect(subject.http_proxy_pass).to be(nil)
end
end
describe "#https_proxy" do
it "defaults to nil" do
subject.finalize!
expect(subject.https_proxy).to be(nil)
end
end
describe "#https_proxy_user" do
it "defaults to nil" do
subject.finalize!
expect(subject.https_proxy_user).to be(nil)
end
end
describe "#https_proxy_pass" do
it "defaults to nil" do
subject.finalize!
expect(subject.https_proxy_pass).to be(nil)
end
end
describe "#log_level" do
it "defaults to :info" do
subject.finalize!
expect(subject.log_level).to be(:info)
end
it "is converted to a symbol" do
subject.log_level = "foo"
subject.finalize!
expect(subject.log_level).to eq(:foo)
end
end
describe "#no_proxy" do
it "defaults to nil" do
subject.finalize!
expect(subject.no_proxy).to be(nil)
end
end
describe "#node_name" do
it "defaults to nil" do
subject.finalize!
expect(subject.node_name).to be(nil)
end
end
describe "#provisioning_path" do
it "defaults to a tmp_path" do
subject.finalize!
2015-01-06 18:56:28 +00:00
expect(subject.provisioning_path).to eq("/tmp/vagrant-chef")
end
end
describe "#file_backup_path" do
it "defaults to /var/chef/backup" do
subject.finalize!
expect(subject.file_backup_path).to eq("/var/chef/backup")
end
end
describe "#file_cache_path" do
it "defaults to /var/chef/cache" do
subject.finalize!
expect(subject.file_cache_path).to eq("/var/chef/cache")
end
end
describe "#verbose_logging" do
it "defaults to false" do
subject.finalize!
expect(subject.verbose_logging).to be(false)
end
end
describe "#run_list" do
it "defaults to an empty array" do
subject.finalize!
expect(subject.run_list).to be_a(Array)
expect(subject.run_list).to be_empty
end
end
describe "#json" do
it "defaults to an empty hash" do
subject.finalize!
expect(subject.json).to be_a(Hash)
expect(subject.json).to be_empty
end
end
describe "#add_recipe" do
context "when the prefix is given" do
it "adds the value to the run_list" do
subject.add_recipe("recipe[foo::bar]")
expect(subject.run_list).to eq %w(recipe[foo::bar])
end
end
context "when the prefix is not given" do
it "adds the prefixed value to the run_list" do
subject.add_recipe("foo::bar")
expect(subject.run_list).to eq %w(recipe[foo::bar])
end
end
end
describe "#add_role" do
context "when the prefix is given" do
it "adds the value to the run_list" do
subject.add_role("role[foo]")
expect(subject.run_list).to eq %w(role[foo])
end
end
context "when the prefix is not given" do
it "adds the prefixed value to the run_list" do
subject.add_role("foo")
expect(subject.run_list).to eq %w(role[foo])
end
end
end
describe "#validate_base" do
context "when #custom_config_path does not exist" do
let(:path) { "/path/to/file" }
before do
allow(File).to receive(:file?)
.with(path)
.and_return(false)
allow(machine).to receive(:env)
.and_return(double("env",
root_path: "",
))
end
it "returns an error" do
subject.custom_config_path = path
subject.finalize!
expect(subject.validate_base(machine))
.to eq ['Path specified for "custom_config_path" does not exist.']
end
end
end
describe "#merge" do
it "merges the json hash" do
a = described_class.new.tap do |i|
i.json = { "foo" => "bar" }
end
b = described_class.new.tap do |i|
i.json = { "zip" => "zap" }
end
result = a.merge(b)
expect(result.json).to eq(
"foo" => "bar",
"zip" => "zap",
)
end
it "appends the run_list array" do
a = described_class.new.tap do |i|
i.run_list = ["recipe[foo::bar]"]
end
b = described_class.new.tap do |i|
i.run_list = ["recipe[zip::zap]"]
end
result = a.merge(b)
expect(result.run_list).to eq %w(
recipe[foo::bar]
recipe[zip::zap]
)
end
end
end