In some cases the E1000 NIC type is the only acceptable value. Since defaulting causes breakages to existing boxes, leave the default value as `nil` but check the VirtualBox version in use and print warning to user if VirtualBox version is vulnerable and E1000 NIC types are configured for use within defined network adapters.
90 lines
2.1 KiB
Ruby
90 lines
2.1 KiB
Ruby
require_relative "../../../base"
|
|
|
|
require Vagrant.source_root.join("plugins/providers/virtualbox/config")
|
|
|
|
describe VagrantPlugins::ProviderVirtualBox::Config do
|
|
let(:machine) { double("machine") }
|
|
|
|
def assert_invalid
|
|
errors = subject.validate(machine)
|
|
if !errors.values.any? { |v| !v.empty? }
|
|
raise "No errors: #{errors.inspect}"
|
|
end
|
|
end
|
|
|
|
def assert_valid
|
|
errors = subject.validate(machine)
|
|
if !errors.values.all? { |v| v.empty? }
|
|
raise "Errors: #{errors.inspect}"
|
|
end
|
|
end
|
|
|
|
def valid_defaults
|
|
subject.image = "foo"
|
|
end
|
|
|
|
before do
|
|
vm_config = double("vm_config")
|
|
allow(vm_config).to receive(:networks).and_return([])
|
|
config = double("config")
|
|
allow(config).to receive(:vm).and_return(vm_config)
|
|
allow(machine).to receive(:config).and_return(config)
|
|
end
|
|
|
|
its "valid by default" do
|
|
subject.finalize!
|
|
assert_valid
|
|
end
|
|
|
|
context "defaults" do
|
|
before { subject.finalize! }
|
|
|
|
it { expect(subject.check_guest_additions).to be(true) }
|
|
it { expect(subject.gui).to be(false) }
|
|
it { expect(subject.name).to be_nil }
|
|
it { expect(subject.functional_vboxsf).to be(true) }
|
|
it { expect(subject.default_nic_type).to be_nil }
|
|
|
|
it "should have one NAT adapter" do
|
|
expect(subject.network_adapters).to eql({
|
|
1 => [:nat, {}],
|
|
})
|
|
end
|
|
end
|
|
|
|
describe "#default_nic_type" do
|
|
let(:nic_type) { "custom" }
|
|
|
|
before do
|
|
subject.default_nic_type = nic_type
|
|
subject.finalize!
|
|
end
|
|
|
|
it { expect(subject.default_nic_type).to eq(nic_type) }
|
|
end
|
|
|
|
describe "#merge" do
|
|
let(:one) { described_class.new }
|
|
let(:two) { described_class.new }
|
|
|
|
subject { one.merge(two) }
|
|
|
|
it "merges the customizations" do
|
|
one.customize ["foo"]
|
|
two.customize ["bar"]
|
|
|
|
expect(subject.customizations).to eq([
|
|
["pre-boot", ["foo"]],
|
|
["pre-boot", ["bar"]]])
|
|
end
|
|
end
|
|
|
|
describe "#network_adapter" do
|
|
it "configures additional adapters" do
|
|
subject.network_adapter(2, :bridged, auto_config: true)
|
|
expect(subject.network_adapters[2]).to eql(
|
|
[:bridged, auto_config: true])
|
|
end
|
|
end
|
|
end
|