X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Fconcat%2Fspec%2Funit%2Fdefines%2Fconcat_fragment_spec.rb;h=6cf3e42960c0bbfb52c531203946ccb5f0967832;hb=917f80937c03a7f486d25fa70373f1f4d4b02958;hp=317b02cdc6426ab04fca795bdaaa6ddec5de9516;hpb=ad88f67c13ae0f1a08936dad643f1e3509ab5f40;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/concat/spec/unit/defines/concat_fragment_spec.rb b/3rdparty/modules/concat/spec/unit/defines/concat_fragment_spec.rb index 317b02cdc..6cf3e4296 100644 --- a/3rdparty/modules/concat/spec/unit/defines/concat_fragment_spec.rb +++ b/3rdparty/modules/concat/spec/unit/defines/concat_fragment_spec.rb @@ -9,21 +9,50 @@ describe 'concat::fragment', :type => :define do :content => nil, :source => nil, :order => 10, + :ensure => 'present', }.merge(params) + safe_name = title.gsub(/[\/\n]/, '_') + safe_target_name = p[:target].gsub(/[\/\n]/, '_') + concatdir = '/var/lib/puppet/concat' + fragdir = "#{concatdir}/#{safe_target_name}" id = 'root' gid = 'root' + if p[:ensure] == 'absent' + safe_ensure = p[:ensure] + else + safe_ensure = 'file' + end let(:title) { title } + let(:facts) do + { + :concat_basedir => concatdir, + :id => id, + :gid => gid, + :osfamily => 'Debian', + :path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', + :is_pe => false, + } + end let(:params) { params } let(:pre_condition) do "concat{ '#{p[:target]}': }" end it do + should contain_class('concat::setup') should contain_concat(p[:target]) - should contain_concat_file(p[:target]) - should contain_concat_fragment(title) + should contain_file("#{fragdir}/fragments/#{p[:order]}_#{safe_name}").with({ + :ensure => safe_ensure, + :owner => id, + :group => gid, + :mode => '0640', + :source => p[:source], + :content => p[:content], + :alias => "concat_fragment_#{title}", + :backup => 'puppet', + }) end end @@ -31,7 +60,6 @@ describe 'concat::fragment', :type => :define do ['0', '1', 'a', 'z'].each do |title| it_behaves_like 'fragment', title, { :target => '/etc/motd', - :content => "content for #{title}" } end end # title @@ -41,21 +69,42 @@ describe 'concat::fragment', :type => :define do context target do it_behaves_like 'fragment', target, { :target => '/etc/motd', - :content => "content for #{target}" } end end context 'false' do let(:title) { 'motd_header' } + let(:facts) {{ :concat_basedir => '/tmp', :is_pe => false }} let(:params) {{ :target => false }} it 'should fail' do - expect { catalogue }.to raise_error(Puppet::Error, /is not a string/) + expect { should }.to raise_error(Puppet::Error, /is not a string/) end end end # target => + context 'ensure =>' do + ['present', 'absent'].each do |ens| + context ens do + it_behaves_like 'fragment', 'motd_header', { + :ensure => ens, + :target => '/etc/motd', + } + end + end + + context 'any value other than \'present\' or \'absent\'' do + let(:title) { 'motd_header' } + let(:facts) {{ :concat_basedir => '/tmp', :is_pe => false }} + let(:params) {{ :ensure => 'invalid', :target => '/etc/motd' }} + + it 'should create a warning' do + skip('rspec-puppet support for testing warning()') + end + end + end # ensure => + context 'content =>' do ['', 'ashp is our hero'].each do |content| context content do @@ -68,10 +117,11 @@ describe 'concat::fragment', :type => :define do context 'false' do let(:title) { 'motd_header' } + let(:facts) {{ :concat_basedir => '/tmp', :is_pe => false }} let(:params) {{ :content => false, :target => '/etc/motd' }} it 'should fail' do - expect { catalogue }.to raise_error(Puppet::Error, /is not a string/) + expect { should }.to raise_error(Puppet::Error, /is not a string/) end end end # content => @@ -88,28 +138,193 @@ describe 'concat::fragment', :type => :define do context 'false' do let(:title) { 'motd_header' } + let(:facts) {{ :concat_basedir => '/tmp', :is_pe => false }} let(:params) {{ :source => false, :target => '/etc/motd' }} it 'should fail' do - expect { catalogue }.to raise_error(Puppet::Error, /is not a string or an Array/) + expect { should }.to raise_error(Puppet::Error, /is not a string or an Array/) end end end # source => + context 'order =>' do + ['', '42', 'a', 'z'].each do |order| + context '\'\'' do + it_behaves_like 'fragment', 'motd_header', { + :order => order, + :target => '/etc/motd', + } + end + end + + context 'false' do + let(:title) { 'motd_header' } + let(:facts) {{ :concat_basedir => '/tmp', :is_pe => false }} + let(:params) {{ :order => false, :target => '/etc/motd' }} + + it 'should fail' do + expect { should }.to raise_error(Puppet::Error, /is not a string or integer/) + end + end + + context '123:456' do + let(:title) { 'motd_header' } + let(:facts) {{ :concat_basedir => '/tmp', :is_pe => false }} + let(:params) {{ :order => '123:456', :target => '/etc/motd' }} + + it 'should fail' do + expect { should }.to raise_error(Puppet::Error, /cannot contain/) + end + end + context '123/456' do + let(:title) { 'motd_header' } + let(:facts) {{ :concat_basedir => '/tmp', :is_pe => false }} + let(:params) {{ :order => '123/456', :target => '/etc/motd' }} + + it 'should fail' do + expect { should }.to raise_error(Puppet::Error, /cannot contain/) + end + end + context '123\n456' do + let(:title) { 'motd_header' } + let(:facts) {{ :concat_basedir => '/tmp', :is_pe => false }} + let(:params) {{ :order => "123\n456", :target => '/etc/motd' }} + + it 'should fail' do + expect { should }.to raise_error(Puppet::Error, /cannot contain/) + end + end + end # order => + context 'more than one content source' do + error_msg = 'You cannot specify more than one of $content, $source, $ensure => /target' + + context 'ensure => target and source' do + let(:title) { 'motd_header' } + let(:facts) do + { + :concat_basedir => '/tmp', + :osfamily => 'Debian', + :id => 'root', + :is_pe => false, + :gid => 'root', + } + end + let(:params) do + { + :target => '/etc/motd', + :ensure => '/foo', + :source => '/bar', + } + end + + it 'should fail' do + expect { should }.to raise_error(Puppet::Error, /#{Regexp.escape(error_msg)}/m) + end + end + + context 'ensure => target and content' do + let(:title) { 'motd_header' } + let(:facts) do + { + :concat_basedir => '/tmp', + :osfamily => 'Debian', + :id => 'root', + :is_pe => false, + :gid => 'root', + } + end + let(:params) do + { + :target => '/etc/motd', + :ensure => '/foo', + :content => 'bar', + } + end + + it 'should fail' do + expect { should }.to raise_error(Puppet::Error, /#{Regexp.escape(error_msg)}/m) + end + end + context 'source and content' do let(:title) { 'motd_header' } + let(:facts) do + { + :concat_basedir => '/tmp', + :osfamily => 'Debian', + :id => 'root', + :is_pe => false, + :gid => 'root', + } + end let(:params) do { - :target => '/etc/motd', + :target => '/etc/motd', :source => '/foo', :content => 'bar', } end it 'should fail' do - expect { catalogue }.to raise_error(Puppet::Error, /Can't use 'source' and 'content' at the same time/) + expect { should }.to raise_error(Puppet::Error, /#{Regexp.escape(error_msg)}/m) end end + end # more than one content source + + describe 'deprecated parameter' do + context 'mode =>' do + context '1755' do + it_behaves_like 'fragment', 'motd_header', { + :mode => '1755', + :target => '/etc/motd', + } + + it 'should create a warning' do + skip('rspec-puppet support for testing warning()') + end + end + end # mode => + + context 'owner =>' do + context 'apenny' do + it_behaves_like 'fragment', 'motd_header', { + :owner => 'apenny', + :target => '/etc/motd', + } + + it 'should create a warning' do + skip('rspec-puppet support for testing warning()') + end + end + end # owner => + + context 'group =>' do + context 'apenny' do + it_behaves_like 'fragment', 'motd_header', { + :group => 'apenny', + :target => '/etc/motd', + } + + it 'should create a warning' do + skip('rspec-puppet support for testing warning()') + end + end + end # group => + + context 'backup =>' do + context 'foo' do + it_behaves_like 'fragment', 'motd_header', { + :backup => 'foo', + :target => '/etc/motd', + } + + it 'should create a warning' do + skip('rspec-puppet support for testing warning()') + end + end + end # backup => + end # deprecated params + end