3 describe 'apt::setting' do
4 let(:pre_condition) { 'class { "apt": }' }
7 :os => { :distro => { :codename => 'wheezy' }, :family => 'Debian', :name => 'Debian', :release => { :major => '7', :full => '7.0' }},
8 :lsbdistrelease => '7.0',
9 :lsbdistcodename => 'wheezy',
10 :operatingsystem => 'Debian',
11 :osfamily => 'Debian',
12 :lsbdistid => 'Debian',
13 :puppetversion => Puppet.version,
16 let(:title) { 'conf-teddybear' }
18 let(:default_params) { { :content => 'di' } }
20 describe 'when using the defaults' do
21 context 'without source or content' do
23 expect { subject.call }.to raise_error(Puppet::Error, /needs either of /)
27 context 'with title=conf-teddybear ' do
28 let(:params) { default_params }
29 it { is_expected.to contain_file('/etc/apt/apt.conf.d/50teddybear').that_notifies('Class[Apt::Update]') }
32 context 'with title=pref-teddybear' do
33 let(:title) { 'pref-teddybear' }
34 let(:params) { default_params }
35 it { is_expected.to contain_file('/etc/apt/preferences.d/teddybear.pref').that_notifies('Class[Apt::Update]') }
38 context 'with title=list-teddybear' do
39 let(:title) { 'list-teddybear' }
40 let(:params) { default_params }
41 it { is_expected.to contain_file('/etc/apt/sources.list.d/teddybear.list').that_notifies('Class[Apt::Update]') }
44 context 'with source' do
45 let(:params) { { :source => 'puppet:///la/die/dah' } }
47 is_expected.to contain_file('/etc/apt/apt.conf.d/50teddybear').that_notifies('Class[Apt::Update]').with({
52 :source => "#{params[:source]}",
56 context 'with content' do
57 let(:params) { default_params }
58 it { is_expected.to contain_file('/etc/apt/apt.conf.d/50teddybear').that_notifies('Class[Apt::Update]').with({
63 :content => "#{params[:content]}",
68 describe 'settings requiring settings, MODULES-769' do
69 let(:pre_condition) do
71 apt::setting { "list-teddybear": content => "foo" }
75 :os => { :family => 'Debian', :name => 'Debian', :release => { :major => '7', :full => '7.0' }},
76 :lsbdistid => 'Debian',
77 :osfamily => 'Debian',
78 :lsbdistcodename => 'wheezy',
79 :puppetversion => Puppet.version,
81 let(:title) { 'conf-teddybear' }
82 let(:default_params) { { :content => 'di' } }
84 let(:params) { default_params.merge({ :require => 'Apt::Setting[list-teddybear]' }) }
86 it { is_expected.to compile.with_all_deps }
89 describe 'when trying to pull one over' do
90 context 'with source and content' do
91 let(:params) { default_params.merge({ :source => 'la' }) }
93 expect { subject.call }.to raise_error(Puppet::Error, /cannot have both /)
97 context 'with title=ext-teddybear' do
98 let(:title) { 'ext-teddybear' }
99 let(:params) { default_params }
101 expect { subject.call }.to raise_error(Puppet::Error, /must start with either/)
105 context 'with ensure=banana' do
106 let(:params) { default_params.merge({ :ensure => 'banana' }) }
108 expect { subject.call }.to raise_error(Puppet::Error, /Enum\['absent', 'file', 'present'\]/)
112 context 'with priority=1.2' do
113 let(:params) { default_params.merge({ :priority => 1.2 }) }
114 if Puppet::Util::Package.versioncmp(Puppet.version, '4.0') >= 0 || ENV["FUTURE_PARSER"] == 'yes'
115 it { is_expected.to compile.and_raise_error(/expects a value of type/) }
117 it { is_expected.to compile.and_raise_error(/priority must be an integer or a zero-padded integer/) }
122 describe 'with priority=100' do
123 let(:params) { default_params.merge({ :priority => 100 }) }
124 it { is_expected.to contain_file('/etc/apt/apt.conf.d/100teddybear').that_notifies('Class[Apt::Update]') }
127 describe 'with ensure=absent' do
128 let(:params) { default_params.merge({ :ensure => 'absent' }) }
129 it { is_expected.to contain_file('/etc/apt/apt.conf.d/50teddybear').that_notifies('Class[Apt::Update]').with({