From be0781a9237fecd07f97a3651437136dcaa34ee7 Mon Sep 17 00:00:00 2001 From: Mickaël Canévet Date: Fri, 26 Dec 2014 11:26:03 +0100 Subject: Use rspec-puppet-facts --- spec/defines/dhcp_subnet_spec.rb | 494 ++++++++++++++++++++------------------- 1 file changed, 248 insertions(+), 246 deletions(-) (limited to 'spec/defines/dhcp_subnet_spec.rb') diff --git a/spec/defines/dhcp_subnet_spec.rb b/spec/defines/dhcp_subnet_spec.rb index 6a7d604..b0f7ab7 100644 --- a/spec/defines/dhcp_subnet_spec.rb +++ b/spec/defines/dhcp_subnet_spec.rb @@ -2,253 +2,255 @@ require 'spec_helper' describe 'dhcp::subnet' do let (:title) { '1.2.3.4' } - let (:facts) { { - :operatingsystem => 'Debian', - :osfamily => 'Debian', - :lsbdistcodename => 'squeeze', - :netmask_eth0 => '255.255.255.0', - :domain => 'example.com', - :id => 'root', - :path => '/foo/bar' - } } - - context 'when passing wrong value for ensure' do - let (:params) { { - :ensure => 'running', - :broadcast => '1.2.3.4', - } } - - it 'should fail' do - expect { - should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') - }.to raise_error(Puppet::Error, /\$ensure must be either 'present' or 'absent', got 'running'/) - end - end - - context 'when not passing broadcast' do - it 'should fail' do - expect { - should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') - }.to raise_error(Puppet::Error, /Must pass broadcast to Dhcp::Subnet/) - end - end - - context 'when passing wrong type for broadcast' do - let (:params) { { - :broadcast => true, - } } - it 'should fail' do - expect { - should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') - }.to raise_error(Puppet::Error, /true is not a string\./) + on_supported_os.each do |os, facts| + context "on #{os}" do + let(:facts) do + facts.merge({ + :concat_basedir => '/var/lib/puppet/concat', + :domain => 'example.com', + }) + end + + context 'when passing wrong value for ensure' do + let (:params) { { + :ensure => 'running', + :broadcast => '1.2.3.4', + } } + + it 'should fail' do + expect { + should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') + }.to raise_error(Puppet::Error, /\$ensure must be either 'present' or 'absent', got 'running'/) + end + end + + context 'when not passing broadcast' do + it 'should fail' do + expect { + should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') + }.to raise_error(Puppet::Error, /Must pass broadcast to Dhcp::Subnet/) + end + end + + context 'when passing wrong type for broadcast' do + let (:params) { { + :broadcast => true, + } } + + it 'should fail' do + expect { + should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') + }.to raise_error(Puppet::Error, /true is not a string\./) + end + end + + context 'when passing wrong value for broadcast' do + let (:params) { { + :broadcast => 'foo', + } } + + it 'should fail' do + expect { + should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') + }.to raise_error(Puppet::Error, /"foo" does not match/) + end + end + + context 'when passing wrong type for netmask' do + let (:params) { { + :broadcast => '1.2.3.4', + :netmask => true, + } } + + it 'should fail' do + expect { + should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') + }.to raise_error(Puppet::Error, /true is not a string\./) + end + end + + context 'when passing wrong value for netmask' do + let (:params) { { + :broadcast => '1.2.3.4', + :netmask => 'foo', + } } + + it 'should fail' do + expect { + should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') + }.to raise_error(Puppet::Error, /"foo" does not match/) + end + end + + context 'when passing wrong type for routers' do + let (:params) { { + :broadcast => '1.2.3.4', + :routers => true, + } } + + it 'should fail' do + expect { + should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') + }.to raise_error(Puppet::Error, /true is not an Array\./) + end + end + + context 'when passing wrong type for subnet_mask' do + let (:params) { { + :broadcast => '1.2.3.4', + :subnet_mask => true, + } } + + it 'should fail' do + expect { + should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') + }.to raise_error(Puppet::Error, /true is not a string\./) + end + end + + context 'when passing wrong type for domain_name' do + let (:params) { { + :broadcast => '1.2.3.4', + :domain_name => true, + } } + + it 'should fail' do + expect { + should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') + }.to raise_error(Puppet::Error, /true is not a string\./) + end + end + + context 'when passing wrong type for is_shared' do + let (:params) { { + :broadcast => '1.2.3.4', + :is_shared => 'foo', + } } + + it 'should fail' do + expect { + should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') + }.to raise_error(Puppet::Error, /"foo" is not a boolean\./) + end + end + + context 'when using defaults' do + let (:params) { { + :broadcast => '1.2.3.4', + } } + + it { should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf').with( + :owner => 'root', + :group => 'root', + :mode => '0644' + ) } + + it { should contain_file('/etc/dhcp/subnets/1.2.3.4.conf').with( + :ensure => 'present', + :owner => 'root', + :group => 'root' + ).with_content( + /subnet 1\.2\.3\.4 netmask 255\.255\.255\.0 \{\n/ + ).with_content( + /option routers 255\.255\.255\.0;\n/ + ).with_content( + /option subnet-mask 255\.255\.255\.0;\n/ + ).with_content( + /option broadcast-address 1\.2\.3\.4;\n/ + ).with_content( + /option domain-name "example\.com";\n/ + ) } + + it { should contain_concat__fragment('dhcp.subnet.1.2.3.4').with( + :ensure => 'present', + :target => '/etc/dhcp/dhcpd.conf', + :content => "include \"/etc/dhcp/subnets/1.2.3.4.conf\";\n" + ) } + + it { should contain_concat__fragment('dhcp.subnet.1.2.3.4.hosts').with( + :ensure => 'present', + :target => '/etc/dhcp/dhcpd.conf', + :content => "include \"/etc/dhcp/hosts.d/1\.2\.3\.4\.conf\";\n" + ) } + + it { should contain_concat__fragment('dhcp.subnet.1.2.3.4.base').with( + :ensure => 'present', + :target => '/etc/dhcp/hosts.d/1.2.3.4.conf', + :content => "# File managed by puppet\n", + :order => '00' + ) } + end + + context 'when is_shared is true' do + let (:params) { { + :broadcast => '1.2.3.4', + :is_shared => true, + } } + + it { should contain_concat__fragment('dhcp.subnet.1.2.3.4').with( + :ensure => 'absent' + ) } + end + + context 'when passing other_opts as array' do + let (:params) { { + :broadcast => '1.2.3.4', + :other_opts => ['foo', 'bar'], + } } + + it { should contain_file('/etc/dhcp/subnets/1.2.3.4.conf').with( + :ensure => 'present', + :owner => 'root', + :group => 'root' + ).with_content( + / foo;\n bar;\n/ + ) } + end + + context 'when passing other_opts as string' do + let (:params) { { + :broadcast => '1.2.3.4', + :other_opts => 'bar', + } } + + it { should contain_file('/etc/dhcp/subnets/1.2.3.4.conf').with( + :ensure => 'present', + :owner => 'root', + :group => 'root' + ).with_content( + / bar;\n/ + ) } + end + + context 'when overriding all parameters' do + let (:params) { { + :broadcast => '1.2.3.4', + :netmask => '255.1.2.0', + :routers => ['2.3.4.5', '3.4.5.6'], + :subnet_mask => '255.255.1.0', + :domain_name => 'foo.io', + :other_opts => ['foo', 'bar'], + } } + + it { should contain_file('/etc/dhcp/subnets/1.2.3.4.conf').with( + :ensure => 'present', + :owner => 'root', + :group => 'root' + ).with_content( + /subnet 1\.2\.3\.4 netmask 255\.1\.2\.0 \{\n/ + ).with_content( + /option routers 2\.3\.4\.5,3\.4\.5\.6;\n/ + ).with_content( + /option subnet-mask 255\.255\.1\.0;\n/ + ).with_content( + /option broadcast-address 1\.2\.3\.4;\n/ + ).with_content( + /option domain-name "foo\.io";\n/ + ).with_content( + / foo;\n bar;\n/ + ) } + end end end - - context 'when passing wrong value for broadcast' do - let (:params) { { - :broadcast => 'foo', - } } - - it 'should fail' do - expect { - should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') - }.to raise_error(Puppet::Error, /"foo" does not match/) - end - end - - context 'when passing wrong type for netmask' do - let (:params) { { - :broadcast => '1.2.3.4', - :netmask => true, - } } - - it 'should fail' do - expect { - should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') - }.to raise_error(Puppet::Error, /true is not a string\./) - end - end - - context 'when passing wrong value for netmask' do - let (:params) { { - :broadcast => '1.2.3.4', - :netmask => 'foo', - } } - - it 'should fail' do - expect { - should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') - }.to raise_error(Puppet::Error, /"foo" does not match/) - end - end - - context 'when passing wrong type for routers' do - let (:params) { { - :broadcast => '1.2.3.4', - :routers => true, - } } - - it 'should fail' do - expect { - should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') - }.to raise_error(Puppet::Error, /true is not an Array\./) - end - end - - context 'when passing wrong type for subnet_mask' do - let (:params) { { - :broadcast => '1.2.3.4', - :subnet_mask => true, - } } - - it 'should fail' do - expect { - should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') - }.to raise_error(Puppet::Error, /true is not a string\./) - end - end - - context 'when passing wrong type for domain_name' do - let (:params) { { - :broadcast => '1.2.3.4', - :domain_name => true, - } } - - it 'should fail' do - expect { - should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') - }.to raise_error(Puppet::Error, /true is not a string\./) - end - end - - context 'when passing wrong type for is_shared' do - let (:params) { { - :broadcast => '1.2.3.4', - :is_shared => 'foo', - } } - - it 'should fail' do - expect { - should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf') - }.to raise_error(Puppet::Error, /"foo" is not a boolean\./) - end - end - - context 'when using defaults' do - let (:params) { { - :broadcast => '1.2.3.4', - } } - - it { should contain_concat('/etc/dhcp/hosts.d/1.2.3.4.conf').with( - :owner => 'root', - :group => 'root', - :mode => '0644' - ) } - - it { should contain_file('/etc/dhcp/subnets/1.2.3.4.conf').with( - :ensure => 'present', - :owner => 'root', - :group => 'root' - ).with_content( - /subnet 1\.2\.3\.4 netmask 255\.255\.255\.0 \{\n/ - ).with_content( - /option routers 255\.255\.255\.0;\n/ - ).with_content( - /option subnet-mask 255\.255\.255\.0;\n/ - ).with_content( - /option broadcast-address 1\.2\.3\.4;\n/ - ).with_content( - /option domain-name "example\.com";\n/ - ) } - - it { should contain_concat__fragment('dhcp.subnet.1.2.3.4').with( - :ensure => 'present', - :target => '/etc/dhcp/dhcpd.conf', - :content => "include \"/etc/dhcp/subnets/1.2.3.4.conf\";\n" - ) } - - it { should contain_concat__fragment('dhcp.subnet.1.2.3.4.hosts').with( - :ensure => 'present', - :target => '/etc/dhcp/dhcpd.conf', - :content => "include \"/etc/dhcp/hosts.d/1\.2\.3\.4\.conf\";\n" - ) } - - it { should contain_concat__fragment('dhcp.subnet.1.2.3.4.base').with( - :ensure => 'present', - :target => '/etc/dhcp/hosts.d/1.2.3.4.conf', - :content => "# File managed by puppet\n", - :order => '00' - ) } - end - - context 'when is_shared is true' do - let (:params) { { - :broadcast => '1.2.3.4', - :is_shared => true, - } } - - it { should contain_concat__fragment('dhcp.subnet.1.2.3.4').with( - :ensure => 'absent' - ) } - end - - context 'when passing other_opts as array' do - let (:params) { { - :broadcast => '1.2.3.4', - :other_opts => ['foo', 'bar'], - } } - - it { should contain_file('/etc/dhcp/subnets/1.2.3.4.conf').with( - :ensure => 'present', - :owner => 'root', - :group => 'root' - ).with_content( - / foo;\n bar;\n/ - ) } - end - - context 'when passing other_opts as string' do - let (:params) { { - :broadcast => '1.2.3.4', - :other_opts => 'bar', - } } - - it { should contain_file('/etc/dhcp/subnets/1.2.3.4.conf').with( - :ensure => 'present', - :owner => 'root', - :group => 'root' - ).with_content( - / bar;\n/ - ) } - end - - context 'when overriding all parameters' do - let (:params) { { - :broadcast => '1.2.3.4', - :netmask => '255.1.2.0', - :routers => ['2.3.4.5', '3.4.5.6'], - :subnet_mask => '255.255.1.0', - :domain_name => 'foo.io', - :other_opts => ['foo', 'bar'], - } } - - it { should contain_file('/etc/dhcp/subnets/1.2.3.4.conf').with( - :ensure => 'present', - :owner => 'root', - :group => 'root' - ).with_content( - /subnet 1\.2\.3\.4 netmask 255\.1\.2\.0 \{\n/ - ).with_content( - /option routers 2\.3\.4\.5,3\.4\.5\.6;\n/ - ).with_content( - /option subnet-mask 255\.255\.1\.0;\n/ - ).with_content( - /option broadcast-address 1\.2\.3\.4;\n/ - ).with_content( - /option domain-name "foo\.io";\n/ - ).with_content( - / foo;\n bar;\n/ - ) } - end end -- cgit v1.2.3