mirror of
https://github.com/vagrant-libvirt/vagrant-libvirt.git
synced 2025-02-25 18:55:27 -06:00
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.
71 lines
2.7 KiB
Ruby
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
|