Files
vagrant-libvirt/spec/unit/templates/domain_spec.rb
Darragh Bailey 81a35c9f14 Spec test for domain template to verify rendering
Add basic spec tests for the domain template to test rendering through
simple wrapping of a config object to provide values for class instance
variables used by the template as it mostly mirrors those required.
2016-11-25 15:59:44 +00:00

71 lines
2.7 KiB
Ruby

require "support/sharedcontext"
require "vagrant-libvirt/config"
require "vagrant-libvirt/util/erb_template"
describe "templates/domain" do
include_context "unit"
class DomainTemplateHelper < VagrantPlugins::ProviderLibvirt::Config
include VagrantPlugins::ProviderLibvirt::Util::ErbTemplate
end
let(:domain) { DomainTemplateHelper.new }
let(:xml_expected) { File.read(File.join(File.dirname(__FILE__), test_file)) }
context "when only defaults used" do
let(:test_file) { 'domain_defaults.xml' }
it "renders template" do
domain.finalize!
expect(domain.to_xml('domain')).to eq xml_expected
end
end
context "when all settings enabled" do
before do
domain.instance_variable_set('@domain_type', 'kvm')
domain.cpu_mode = 'custom'
domain.cpu_feature({:name => 'AAA', :policy => 'required'})
domain.machine_type = 'pc-compatible'
domain.machine_arch = 'x86_64'
domain.loader = '/efi/loader'
domain.boot('network')
domain.boot('cdrom')
domain.boot('hd')
domain.emulator_path = '/usr/bin/kvm-spice'
domain.instance_variable_set('@domain_volume_path', '/var/lib/libvirt/images/test.qcow2')
domain.instance_variable_set('@domain_volume_cache', 'unsafe')
domain.disk_bus = 'ide'
domain.storage(:file, {:path => 'test-disk1.qcow2'})
domain.storage(:file, {:path => 'test-disk2.qcow2'})
domain.disks.each do |disk|
disk[:absolute_path] = '/var/lib/libvirt/images/' + disk[:path]
end
domain.storage(:file, {:device => :cdrom})
domain.storage(:file, {:device => :cdrom})
domain.channel(:type => 'unix',
:target_name => 'org.qemu.guest_agent.0',
:target_type => 'virtio')
domain.channel(:type => 'unix',
:target_type => 'guestfwd',
:target_address => '192.0.2.42',
:target_port => '4242',
:source_path => '/tmp/foo')
domain.random(:model => 'random')
domain.pci(:bus => '0x06', :slot => '0x12', :function => '0x5')
domain.pci(:bus => '0x03', :slot => '0x00', :function => '0x0')
domain.usb(:bus => '1', :device => '2', :vendor => '0x1234', :product => '0xabcd')
domain.redirdev(:type => 'tcp', :host => 'localhost', :port => '4000')
domain.redirfilter(:class => '0x0b', :vendor => '0x08e6',
:product => '0x3437', :version => '2.00', :allow => 'yes')
domain.tpm_path = '/dev/tpm0'
end
let(:test_file) { 'domain_all_settings.xml' }
it "renders template" do
domain.finalize!
expect(domain.to_xml('domain')).to eq xml_expected
end
end
end