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

86 lines
2.1 KiB
Ruby

require_relative "../../../../base"
require Vagrant.source_root.join("plugins/provisioners/chef/config/chef_apply")
describe VagrantPlugins::Chef::Config::ChefApply do
include_context "unit"
subject { described_class.new }
let(:machine) { double("machine") }
def chef_error(key, options = {})
I18n.t("vagrant.provisioners.chef.#{key}", options)
end
describe "#recipe" do
it "defaults to nil" do
subject.finalize!
expect(subject.recipe).to be(nil)
end
end
describe "#upload_path" do
it "defaults to /tmp/vagrant-chef-apply.rb" do
subject.finalize!
expect(subject.upload_path).to eq("/tmp/vagrant-chef-apply")
end
end
describe "#validate" do
before do
allow(machine).to receive(:env)
.and_return(double("env",
root_path: "",
))
subject.recipe = <<-EOH
package "foo"
EOH
end
let(:result) { subject.validate(machine) }
let(:errors) { result["chef apply provisioner"] }
context "when the recipe is nil" do
it "returns an error" do
subject.recipe = nil
subject.finalize!
expect(errors).to include chef_error("recipe_empty")
end
end
context "when the recipe is empty" do
it "returns an error" do
subject.recipe = " "
subject.finalize!
expect(errors).to include chef_error("recipe_empty")
end
end
context "when the log_level is an empty array" do
it "returns an error" do
subject.log_level = " "
subject.finalize!
expect(errors).to include chef_error("log_level_empty")
end
end
context "when the upload_path is nil" do
it "returns an error" do
subject.upload_path = nil
subject.finalize!
expect(errors).to include chef_error("upload_path_empty")
end
end
context "when the upload_path is an empty array" do
it "returns an error" do
subject.upload_path = " "
subject.finalize!
expect(errors).to include chef_error("upload_path_empty")
end
end
end
end