path: '/etc/apt/sources.list',
owner: 'root',
group: 'root',
- mode: '0644',
notify: 'Class[Apt::Update]' }
sources_list_d = { ensure: 'directory',
path: '/etc/apt/sources.list.d',
owner: 'root',
group: 'root',
- mode: '0644',
purge: false,
recurse: false,
notify: 'Class[Apt::Update]' }
path: '/etc/apt/preferences',
owner: 'root',
group: 'root',
- mode: '0644',
notify: 'Class[Apt::Update]' }
preferences_d = { ensure: 'directory',
path: '/etc/apt/preferences.d',
owner: 'root',
group: 'root',
- mode: '0644',
+ purge: false,
+ recurse: false,
+ notify: 'Class[Apt::Update]' }
+
+apt_conf_d = { ensure: 'directory',
+ path: '/etc/apt/apt.conf.d',
+ owner: 'root',
+ group: 'root',
purge: false,
recurse: false,
notify: 'Class[Apt::Update]' }
is_expected.to contain_file('preferences.d').that_notifies('Class[Apt::Update]').only_with(preferences_d)
}
+ it {
+ is_expected.to contain_file('apt.conf.d').that_notifies('Class[Apt::Update]').only_with(apt_conf_d)
+ }
+
it { is_expected.to contain_file('/etc/apt/auth.conf').with_ensure('absent') }
it 'lays down /etc/apt/apt.conf.d/15update-stamp' do
is_expected.to contain_file('/etc/apt/apt.conf.d/15update-stamp').with(group: 'root',
- mode: '0644',
owner: 'root').with_content(
%r{APT::Update::Post-Invoke-Success {"touch /var/lib/apt/periodic/update-success-stamp 2>/dev/null || true";};},
)
{
update: { 'frequency' => 'always', 'timeout' => 1, 'tries' => 3 },
purge: { 'sources.list' => false, 'sources.list.d' => false,
- 'preferences' => false, 'preferences.d' => false },
+ 'preferences' => false, 'preferences.d' => false,
+ 'apt.conf.d' => false },
}
end
recurse: false)
}
+ it {
+ is_expected.to contain_file('apt.conf.d').with(purge: false,
+ recurse: false)
+ }
+
+ it {
+ is_expected.to contain_exec('apt_update').with(refreshonly: false,
+ timeout: 1,
+ tries: 3)
+ }
+ end
+
+ context 'with lots of non-defaults' do
+ let :params do
+ {
+ update: { 'frequency' => 'always', 'timeout' => 1, 'tries' => 3 },
+ purge: { 'sources.list' => true, 'sources.list.d' => true,
+ 'preferences' => true, 'preferences.d' => true,
+ 'apt.conf.d' => true },
+ }
+ end
+
+ it {
+ is_expected.to contain_file('sources.list').with(content: "# Repos managed by puppet.\n")
+ }
+
+ it {
+ is_expected.to contain_file('sources.list.d').with(purge: true,
+ recurse: true)
+ }
+
+ it {
+ is_expected.to contain_file('preferences').with(ensure: 'absent')
+ }
+
+ it {
+ is_expected.to contain_file('preferences.d').with(purge: true,
+ recurse: true)
+ }
+
+ it {
+ is_expected.to contain_file('apt.conf.d').with(purge: true,
+ recurse: true)
+ }
+
it {
is_expected.to contain_exec('apt_update').with(refreshonly: false,
timeout: 1,
}
end
+ context 'with defaults for sources_list_force' do
+ let :params do
+ {
+ update: { 'frequency' => 'always', 'timeout' => 1, 'tries' => 3 },
+ purge: { 'sources.list' => true },
+ sources_list_force: false,
+ }
+ end
+
+ it {
+ is_expected.to contain_file('sources.list').with(content: "# Repos managed by puppet.\n")
+ }
+ end
+
+ context 'with non defaults for sources_list_force' do
+ let :params do
+ {
+ update: { 'frequency' => 'always', 'timeout' => 1, 'tries' => 3 },
+ purge: { 'sources.list' => true },
+ sources_list_force: true,
+ }
+ end
+
+ it {
+ is_expected.to contain_file('sources.list').with(ensure: 'absent')
+ }
+ end
+
context 'with entries for /etc/apt/auth.conf' do
facts_hash = {
'Ubuntu 14.04' => {
osfamily: 'Debian',
lsbdistcodename: 'stretch',
},
+ 'Debian 10.0' => {
+ os: { family: 'Debian', name: 'Debian', release: { major: '10', full: '10.0' } },
+ lsbdistid: 'Debian',
+ osfamily: 'Debian',
+ lsbdistcodename: 'buster',
+ },
}
facts_hash.each do |os, facts|
group: 'root',
mode: '0600',
notify: 'Class[Apt::Update]',
- content: auth_conf_content)
+ content: sensitive(auth_conf_content))
}
end
is_expected.to raise_error(Puppet::Error)
end
end
+
+ context "with purge['apt.conf.d']=>'banana'" do
+ let(:params) { { purge: { 'apt.conf.d' => 'banana' } } }
+
+ it do
+ is_expected.to raise_error(Puppet::Error)
+ end
+ end
end
end