1 # frozen_string_literal: true
5 describe 'apt::setting' do
6 let(:pre_condition) { 'class { "apt": }' }
23 let(:title) { 'conf-teddybear' }
25 let(:default_params) { { content: 'di' } }
27 describe 'when using the defaults' do
28 context 'without source or content' do
30 expect(subject).to raise_error(Puppet::Error, %r{needs either of })
34 context 'with title=conf-teddybear' do
35 let(:params) { default_params }
37 it { is_expected.to contain_file('/etc/apt/apt.conf.d/50teddybear').that_notifies('Class[Apt::Update]') }
40 context 'with title=pref-teddybear' do
41 let(:title) { 'pref-teddybear' }
42 let(:params) { default_params }
44 it { is_expected.to contain_file('/etc/apt/preferences.d/teddybear.pref').that_notifies('Class[Apt::Update]') }
47 context 'with title=list-teddybear' do
48 let(:title) { 'list-teddybear' }
49 let(:params) { default_params }
51 it { is_expected.to contain_file('/etc/apt/sources.list.d/teddybear.list').that_notifies('Class[Apt::Update]') }
54 context 'with source' do
55 let(:params) { { source: 'puppet:///la/die/dah' } }
58 expect(subject).to contain_file('/etc/apt/apt.conf.d/50teddybear').that_notifies('Class[Apt::Update]').with(ensure: 'file',
61 source: params[:source].to_s)
65 context 'with content' do
66 let(:params) { default_params }
69 expect(subject).to contain_file('/etc/apt/apt.conf.d/50teddybear').that_notifies('Class[Apt::Update]').with(ensure: 'file',
72 content: params[:content].to_s)
77 describe 'settings requiring settings, MODULES-769' do
78 let(:pre_condition) do
80 apt::setting { "list-teddybear": content => "foo" }
99 let(:title) { 'conf-teddybear' }
100 let(:default_params) { { content: 'di' } }
102 let(:params) { default_params.merge(require: 'Apt::Setting[list-teddybear]') }
104 it { is_expected.to compile.with_all_deps }
107 describe 'when trying to pull one over' do
108 context 'with source and content' do
109 let(:params) { default_params.merge(source: 'la') }
112 expect(subject).to raise_error(Puppet::Error, %r{cannot have both })
116 context 'with title=ext-teddybear' do
117 let(:title) { 'ext-teddybear' }
118 let(:params) { default_params }
121 expect(subject).to raise_error(Puppet::Error, %r{must start with either})
125 context 'with ensure=banana' do
126 let(:params) { default_params.merge(ensure: 'banana') }
129 expect(subject).to raise_error(Puppet::Error, %r{Enum\['absent', 'file', 'present'\]})
133 context 'with priority=1.2' do
134 let(:params) { default_params.merge(priority: 1.2) }
136 it { is_expected.to compile.and_raise_error(%r{expects a value of type}) }
140 describe 'with priority=100' do
141 let(:params) { default_params.merge(priority: 100) }
143 it { is_expected.to contain_file('/etc/apt/apt.conf.d/100teddybear').that_notifies('Class[Apt::Update]') }
146 describe 'with ensure=absent' do
147 let(:params) { default_params.merge(ensure: 'absent') }
150 expect(subject).to contain_file('/etc/apt/apt.conf.d/50teddybear').that_notifies('Class[Apt::Update]').with(ensure: 'absent')