Add tests for Chef Client config

This commit is contained in:
Seth Vargo 2014-10-30 11:42:25 -04:00
parent 7e71d72db8
commit 9c56061fa9
1 changed files with 136 additions and 0 deletions

View File

@ -0,0 +1,136 @@
require_relative "../../../../base"
require Vagrant.source_root.join("plugins/provisioners/chef/config/chef_client")
describe VagrantPlugins::Chef::Config::ChefClient do
include_context "unit"
subject { described_class.new }
let(:machine) { double("machine") }
describe "#chef_server_url" do
it "defaults to nil" do
subject.finalize!
expect(subject.chef_server_url).to be(nil)
end
end
describe "#client_key_path" do
it "defaults to /etc/chef/client.pem" do
subject.finalize!
expect(subject.client_key_path).to eq("/etc/chef/client.pem")
end
end
describe "#delete_client" do
it "defaults to false" do
subject.finalize!
expect(subject.delete_client).to be(false)
end
end
describe "#delete_node" do
it "defaults to false" do
subject.finalize!
expect(subject.delete_node).to be(false)
end
end
describe "#validation_key_path" do
it "defaults to nil" do
subject.finalize!
expect(subject.validation_key_path).to be(nil)
end
end
describe "#validation_client_name" do
it "defaults to chef-validator" do
subject.finalize!
expect(subject.validation_client_name).to eq("chef-validator")
end
end
describe "#validate" do
before do
allow(machine).to receive(:env)
.and_return(double("env",
root_path: "",
))
subject.chef_server_url = "https://example.com"
subject.validation_key_path = "/path/to/key.pem"
end
let(:result) { subject.validate(machine) }
let(:errors) { result["chef client provisioner"] }
context "when the chef_server_url is nil" do
it "returns an error" do
subject.chef_server_url = nil
subject.finalize!
expect(errors).to eq([I18n.t("vagrant.config.chef.server_url_empty")])
end
end
context "when the chef_server_url is blank" do
it "returns an error" do
subject.chef_server_url = " "
subject.finalize!
expect(errors).to eq([I18n.t("vagrant.config.chef.server_url_empty")])
end
end
context "when the validation_key_path is nil" do
it "returns an error" do
subject.validation_key_path = nil
subject.finalize!
expect(errors).to eq([I18n.t("vagrant.config.chef.validation_key_path")])
end
end
context "when the validation_key_path is blank" do
it "returns an error" do
subject.validation_key_path = " "
subject.finalize!
expect(errors).to eq([I18n.t("vagrant.config.chef.validation_key_path")])
end
end
context "when #delete_client is given" do
before { subject.delete_client = true }
context "when knife does not exist" do
before do
allow(Vagrant::Util::Which)
.to receive(:which)
.with("knife")
.and_return(nil)
end
it "returns an error" do
subject.finalize!
expect(errors).to eq([I18n.t("vagrant.chef_config_knife_not_found")])
end
end
end
context "when #delete_node is given" do
before { subject.delete_node = true }
context "when knife does not exist" do
before do
allow(Vagrant::Util::Which)
.to receive(:which)
.with("knife")
.and_return(nil)
end
it "returns an error" do
subject.finalize!
expect(errors).to eq([I18n.t("vagrant.chef_config_knife_not_found")])
end
end
end
end
end