vagrant/test/unit/plugins/kernel_v2/config/vagrant_test.rb

110 lines
3.3 KiB
Ruby

require File.expand_path("../../../../base", __FILE__)
require Vagrant.source_root.join("plugins/kernel_v2/config/vagrant")
describe VagrantPlugins::Kernel_V2::VagrantConfig do
subject { described_class.new }
let(:machine){ double("machine") }
describe "#host" do
it "defaults to :detect" do
subject.finalize!
expect(subject.host).to eq(:detect)
end
it "symbolizes" do
subject.host = "foo"
subject.finalize!
expect(subject.host).to eq(:foo)
end
end
describe "#sensitive" do
after{ Vagrant::Util::CredentialScrubber.reset! }
it "accepts string value" do
subject.sensitive = "test"
subject.finalize!
expect(subject.sensitive).to eq("test")
end
it "accepts array of values" do
subject.sensitive = ["test1", "test2"]
subject.finalize!
expect(subject.sensitive).to eq(["test1", "test2"])
end
it "does not accept non-string values" do
subject.sensitive = 1
subject.finalize!
result = subject.validate(machine)
expect(result).to be_a(Hash)
expect(result.values).not_to be_empty
end
it "registers single sensitive value to be scrubbed" do
subject.sensitive = "test"
expect(Vagrant::Util::CredentialScrubber).to receive(:sensitive).with("test")
subject.finalize!
end
it "registers multiple sensitive values to be scrubbed" do
subject.sensitive = ["test1", "test2"]
expect(Vagrant::Util::CredentialScrubber).to receive(:sensitive).with("test1")
expect(Vagrant::Util::CredentialScrubber).to receive(:sensitive).with("test2")
subject.finalize!
end
end
describe "#plugins" do
it "converts string into hash of plugins" do
subject.plugins = "vagrant-plugin"
subject.finalize!
expect(subject.plugins).to be_a(Hash)
end
it "converts array of strings into hash of plugins" do
subject.plugins = ["vagrant-plugin", "vagrant-other-plugin"]
subject.finalize!
expect(subject.plugins).to be_a(Hash)
expect(subject.plugins.keys).to eq(["vagrant-plugin", "vagrant-other-plugin"])
end
it "does not convert hash" do
plugins = {"vagrant-plugin" => {}}
subject.plugins = plugins
subject.finalize
expect(subject.plugins).to eq(plugins)
end
it "converts array of mixed strings and hashes" do
subject.plugins = ["vagrant-plugin", {"vagrant-other-plugin" => {:version => "1"}}]
subject.finalize!
expect(subject.plugins["vagrant-plugin"]).to eq({})
expect(subject.plugins["vagrant-other-plugin"]).to eq({"version" => "1"})
end
it "generates a validation error when incorrect type is provided" do
subject.plugins = 0
subject.finalize!
result = subject.validate(machine)
expect(result.values).not_to be_empty
end
it "generates a validation error when invalid option is provided" do
subject.plugins = {"vagrant-plugin" => {"badkey" => true}}
subject.finalize!
result = subject.validate(machine)
expect(result.values).not_to be_empty
end
it "generates a validation error when options are incorrect type" do
subject.plugins = {"vagrant-plugin" => 1}
subject.finalize!
result = subject.validate(machine)
expect(result.values).not_to be_empty
end
end
end