Page MenuHomeSoftware Heritage

concat_spec.rb
No OneTemporary

concat_spec.rb

require 'spec_helper'
describe 'concat', :type => :define do
shared_examples 'concat' do |title, params, id|
params = {} if params.nil?
id = 'root' if id.nil?
# default param values
p = {
:ensure => 'present',
:path => title,
:owner => nil,
:group => nil,
:mode => '0644',
:warn => false,
:backup => 'puppet',
:replace => true,
}.merge(params)
file_defaults = {
:backup => p[:backup],
}
let(:title) { title }
let(:params) { params }
let(:facts) do
{
:id => id,
:osfamily => 'Debian',
:path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
:kernel => 'Linux',
:is_pe => false,
}
end
if p[:ensure] == 'present'
it do
should contain_concat(title).with(file_defaults.merge({
:ensure => 'present',
:owner => p[:owner],
:group => p[:group],
:mode => p[:mode],
:path => p[:path],
:backup => p[:backup],
:replace => p[:replace],
:selinux_ignore_defaults => p[:selinux_ignore_defaults],
:selrange => p[:selrange],
:selrole => p[:selrole],
:seltype => p[:seltype],
:seluser => p[:seluser],
}))
end
else
it do
should contain_concat(title).with(file_defaults.merge({
:ensure => 'absent',
:backup => p[:backup],
}))
end
end
end
context 'title' do
context 'without path param' do
# title/name is the default value for the path param. therefore, the
# title must be an absolute path unless path is specified
['/foo', '/foo/bar', '/foo/bar/baz'].each do |title|
context title do
it_behaves_like 'concat', '/etc/foo.bar'
end
end
['./foo', 'foo', 'foo/bar'].each do |title|
context title do
let(:title) { title }
it 'should fail' do
expect { catalogue }.to raise_error(Puppet::Error, /Stdlib::Unixpath/)
end
end
end
end
context 'with path param' do
['/foo', 'foo', 'foo/bar'].each do |title|
context title do
it_behaves_like 'concat', title, { :path => '/etc/foo.bar' }
end
end
end
context 'with special characters in title' do
['foo:bar', 'foo*bar', 'foo(bar)', 'foo@bar'].each do |title|
context title do
it_behaves_like 'concat', title, { :path => '/etc/foo.bar' }
end
end
end
end # title =>
context 'as non-root user' do
it_behaves_like 'concat', '/etc/foo.bar', {}, 'bob'
end
context 'ensure =>' do
['present', 'absent'].each do |ens|
context ens do
it_behaves_like 'concat', '/etc/foo.bar', { :ensure => ens }
end
end
context 'invalid' do
let(:title) { '/etc/foo.bar' }
let(:params) {{ :ensure => 'invalid' }}
it 'should fail' do
expect { catalogue }.to raise_error(Puppet::Error, /expects a match for Enum\['absent', 'present'\]/)
end
end
end # ensure =>
context 'path =>' do
context '/foo' do
it_behaves_like 'concat', '/etc/foo.bar', { :path => '/foo' }
end
context 'false' do
let(:title) { '/etc/foo.bar' }
let(:params) {{ :path => false }}
it 'should fail' do
expect { catalogue }.to raise_error(Puppet::Error, /Stdlib::Unixpath/)
end
end
['./foo', 'foo', 'foo/bar'].each do |path|
context path do
let(:title) { '/etc/foo.bar' }
let(:params) {{ :path => path }}
it 'should fail' do
expect { catalogue }.to raise_error(Puppet::Error, /Stdlib::Unixpath/)
end
end
end
end # path =>
context 'owner =>' do
['apenney',1000,'1001'].each do |owner|
context owner do
it_behaves_like 'concat', '/etc/foo.bar', { :owner => owner }
end
end
context 'false' do
let(:title) { '/etc/foo.bar' }
let(:params) {{ :owner => false }}
it 'should fail' do
expect { catalogue }.to raise_error(Puppet::Error, /Evaluation Error.*expects.*String.*Boolean.*/)
end
end
end # owner =>
context 'group =>' do
['apenney',1000,'1001'].each do |group|
context group do
it_behaves_like 'concat', '/etc/foo.bar', { :group => group }
end
end
context 'false' do
let(:title) { '/etc/foo.bar' }
let(:params) {{ :group => false }}
it 'should fail' do
expect { catalogue }.to raise_error(Puppet::Error, /Evaluation Error.*expects.*String.*Boolean.*/)
end
end
end # group =>
context 'mode =>' do
context '1755' do
it_behaves_like 'concat', '/etc/foo.bar', { :mode => '1755' }
end
context 'false' do
let(:title) { '/etc/foo.bar' }
let(:params) {{ :mode => false }}
it 'should fail' do
expect { catalogue }.to raise_error(Puppet::Error, /parameter 'mode' expects .*String.*/)
end
end
end # mode =>
context 'warn =>' do
[true, false, '# foo'].each do |warn|
context warn do
it_behaves_like 'concat', '/etc/foo.bar', { :warn => warn }
end
end
context '(stringified boolean)' do
['true', 'yes', 'on', 'false', 'no', 'off'].each do |warn|
context warn do
it_behaves_like 'concat', '/etc/foo.bar', { :warn => warn }
it 'should create a warning' do
skip('rspec-puppet support for testing warning()')
end
end
end
end
context '123' do
let(:title) { '/etc/foo.bar' }
let(:params) {{ :warn => 123 }}
it 'should fail' do
expect { catalogue }.to raise_error(Puppet::Error, /parameter 'warn' expects .*Boolean.*String.*/)
end
end
end # warn =>
context 'show_diff =>' do
[true, false].each do |show_diff|
context show_diff do
it_behaves_like 'concat', '/etc/foo.bar', { :show_diff => show_diff }
end
end
context '123' do
let(:title) { '/etc/foo.bar' }
let(:params) {{ :show_diff => 123 }}
it 'should fail' do
expect { catalogue }.to raise_error(Puppet::Error, /parameter 'show_diff' expects .*Boolean.*/)
end
end
end # show_diff =>
context 'backup =>' do
['reverse',false,true].each do |backup|
context "#{backup}" do
it_behaves_like 'concat', '/etc/foo.bar', { :backup => backup }
end
end
context 'true' do
let(:title) { '/etc/foo.bar' }
let(:params) {{ :backup => [] }}
it 'should fail' do
expect { catalogue }.to raise_error(Puppet::Error, /parameter 'backup' expects .*Boolean.*String.*/)
end
end
end # backup =>
context 'replace =>' do
[true, false].each do |replace|
context replace do
it_behaves_like 'concat', '/etc/foo.bar', { :replace => replace }
end
end
context '123' do
let(:title) { '/etc/foo.bar' }
let(:params) {{ :replace => 123 }}
it 'should fail' do
expect { catalogue }.to raise_error(Puppet::Error, /parameter 'replace' expects .*Boolean.*/)
end
end
end # replace =>
context 'order =>' do
['alpha', 'numeric'].each do |order|
context order do
it_behaves_like 'concat', '/etc/foo.bar', { :order => order }
end
end
context 'invalid' do
let(:title) { '/etc/foo.bar' }
let(:params) {{ :order => 'invalid' }}
it 'should fail' do
expect { catalogue }.to raise_error(Puppet::Error, /expects a match for Enum\['alpha', 'numeric'\]/)
end
end
end # order =>
context 'ensure_newline =>' do
[true, false].each do |ensure_newline|
context 'true' do
it_behaves_like 'concat', '/etc/foo.bar', { :ensure_newline => ensure_newline}
end
end
context '123' do
let(:title) { '/etc/foo.bar' }
let(:params) {{ :ensure_newline => 123 }}
it 'should fail' do
expect { catalogue }.to raise_error(Puppet::Error, /parameter 'ensure_newline' expects a Boolean value/)
end
end
end # ensure_newline =>
context 'validate_cmd =>' do
context '/usr/bin/test -e %' do
it_behaves_like 'concat', '/etc/foo.bar', { :validate_cmd => '/usr/bin/test -e %' }
end
[ 1234, true ].each do |cmd|
context cmd do
let(:title) { '/etc/foo.bar' }
let(:params) {{ :validate_cmd => cmd }}
it 'should fail' do
expect { catalogue }.to raise_error(Puppet::Error, /parameter 'validate_cmd' expects.*String.*/)
end
end
end
end # validate_cmd =>
context 'selinux_ignore_defaults =>' do
let(:title) { '/etc/foo.bar' }
[true, false].each do |v|
context v do
it_behaves_like 'concat', '/etc/foo.bar', { :selinux_ignore_defaults => v }
end
end
context '123' do
let(:title) { '/etc/foo.bar' }
let(:params) {{ :selinux_ignore_defaults => 123 }}
it 'should fail' do
expect { catalogue }.to raise_error(Puppet::Error, /Evaluation Error.*expects.*Boolean.*/)
end
end
end # selinux_ignore_defaults =>
[
:selrange,
:selrole,
:seltype,
:seluser,
].each do |p|
context " #{p} =>" do
let(:title) { '/etc/foo.bar' }
context 'foo' do
it_behaves_like 'concat', '/etc/foo.bar', { p => 'foo' }
end
context 'false' do
let(:title) { '/etc/foo.bar' }
let(:params) {{ p => false }}
it 'should fail' do
expect { catalogue }.to raise_error(Puppet::Error, /parameter '#{p}' expects.*String.*/)
end
end
end # #{p} =>
end
end

File Metadata

Mime Type
text/x-ruby
Expires
Jun 4 2025, 7:02 PM (10 w, 3 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3398916

Event Timeline