86 lines
2.1 KiB
Ruby
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 match(%r{/tmp/vagrant-chef-apply-\d+})
|
||
|
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
|