eaebe2f82d
The default configuration we were writing for Debian was only working for Squeeze, from Wheezy and onwards this wasn't working anymore. This has to do with the fact that we should now be using Origins-Pattern according to the unattended-upgrades docs. However, Ubuntu didn't entirely get with the program yet... This change reflects the defaults that unattended-upgrade installs on every platform we support. In order to do so the unattended-upgrades Debian archive for Squeeze, Wheezy, Lucid, Precise and Trusty were downloaded and the default /etc/apt/apt.conf.d/50unattended-upgrades checked for its content with regard to using Allow-Origins or Origins-Pattern. Fixes #277
289 lines
8.8 KiB
Ruby
289 lines
8.8 KiB
Ruby
require 'spec_helper'
|
|
describe 'apt::unattended_upgrades', :type => :class do
|
|
let(:file_unattended) { '/etc/apt/apt.conf.d/50unattended-upgrades' }
|
|
let(:file_periodic) { '/etc/apt/apt.conf.d/10periodic' }
|
|
let(:facts) { { :lsbdistid => 'Debian' } }
|
|
|
|
it { should contain_package("unattended-upgrades") }
|
|
|
|
it {
|
|
should create_file("/etc/apt/apt.conf.d/50unattended-upgrades").with({
|
|
"owner" => "root",
|
|
"group" => "root",
|
|
"mode" => "0644",
|
|
"require" => "Package[unattended-upgrades]",
|
|
})
|
|
}
|
|
|
|
it {
|
|
should create_file("/etc/apt/apt.conf.d/10periodic").with({
|
|
"owner" => "root",
|
|
"group" => "root",
|
|
"mode" => "0644",
|
|
"require" => "Package[unattended-upgrades]",
|
|
})
|
|
}
|
|
|
|
describe "origins" do
|
|
describe 'on Debian' do
|
|
default_facts = { :lsbdistid => 'Debian' }
|
|
context 'defaults' do
|
|
let :facts do default_facts end
|
|
it {
|
|
should contain_file(file_unattended).with_content(
|
|
/^Unattended-Upgrade::Origins-Pattern/
|
|
).with_content(
|
|
/"origin=Debian,archive=stable,label=Debian-Security";/
|
|
)
|
|
}
|
|
end
|
|
context 'defaults with custom origin' do
|
|
let :facts do default_facts end
|
|
let :params do { :origins => ['bananana']} end
|
|
it {
|
|
should contain_file(file_unattended).with_content(
|
|
/^Unattended-Upgrade::Origins-Pattern/
|
|
).with_content(
|
|
/"bananana";/
|
|
)
|
|
}
|
|
end
|
|
context 'defaults with invalid origin' do
|
|
let :facts do default_facts end
|
|
let :params do { :origins => 'bananana'} end
|
|
it {
|
|
expect {subject}.to raise_error(/is not an Array/)
|
|
}
|
|
end
|
|
context 'squeeze' do
|
|
let :facts do default_facts.merge({:lsbdistcodename => 'squeeze'}) end
|
|
it {
|
|
should contain_file(file_unattended).with_content(
|
|
/^Unattended-Upgrade::Allowed-Origins/
|
|
).with_content(
|
|
/"\${distro_id} \${distro_codename}-security";/
|
|
)
|
|
}
|
|
end
|
|
context 'wheezy' do
|
|
let :facts do default_facts.merge({:lsbdistcodename => 'wheezy'}) end
|
|
it {
|
|
should contain_file(file_unattended).with_content(
|
|
/^Unattended-Upgrade::Origins-Pattern/
|
|
).with_content(
|
|
/"origin=Debian,archive=stable,label=Debian-Security";/
|
|
)
|
|
}
|
|
end
|
|
end
|
|
|
|
describe 'on Ubuntu' do
|
|
default_facts = { :lsbdistid => 'Ubuntu' }
|
|
context 'default' do
|
|
let :facts do default_facts end
|
|
it {
|
|
should contain_file(file_unattended).with_content(
|
|
/^Unattended-Upgrade::Allowed-Origins/
|
|
).with_content(
|
|
/"\${distro_id}\:\${distro_codename}-security";/
|
|
)
|
|
}
|
|
end
|
|
context 'lucid' do
|
|
let :facts do default_facts.merge({:lsbdistcodename => 'lucid'}) end
|
|
it {
|
|
should contain_file(file_unattended).with_content(
|
|
/^Unattended-Upgrade::Allowed-Origins/
|
|
).with_content(
|
|
/"\${distro_id} \${distro_codename}-security";/
|
|
)
|
|
}
|
|
end
|
|
context 'precise' do
|
|
let :facts do default_facts.merge({:lsbdistcodename => 'precise'}) end
|
|
it {
|
|
should contain_file(file_unattended).with_content(
|
|
/^Unattended-Upgrade::Allowed-Origins/
|
|
).with_content(
|
|
/"\${distro_id}\:\${distro_codename}-security";/
|
|
)
|
|
}
|
|
end
|
|
context 'trusty' do
|
|
let :facts do default_facts.merge({:lsbdistcodename => 'trusty'}) end
|
|
it {
|
|
should contain_file(file_unattended).with_content(
|
|
/^Unattended-Upgrade::Allowed-Origins/
|
|
).with_content(
|
|
/"\${distro_id}\:\${distro_codename}-security";/
|
|
)
|
|
}
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "blacklist" do
|
|
describe "with param defaults" do
|
|
let(:params) {{ }}
|
|
it { should contain_file(file_unattended).with_content(/^Unattended-Upgrade::Package-Blacklist \{\n\};$/) }
|
|
end
|
|
|
|
describe "with blacklist => []" do
|
|
let :params do
|
|
{ :blacklist => ['libc6', 'libc6-dev'] }
|
|
end
|
|
it { should contain_file(file_unattended).with_content(/^Unattended-Upgrade::Package-Blacklist \{\n\t"libc6";\n\t"libc6-dev";\n\};$/) }
|
|
end
|
|
end
|
|
|
|
describe "with update => 2" do
|
|
let :params do
|
|
{ :update => "2" }
|
|
end
|
|
it { should contain_file(file_periodic).with_content(/^APT::Periodic::Update-Package-Lists "2";$/) }
|
|
end
|
|
|
|
describe "with download => 2" do
|
|
let :params do
|
|
{ :download => "2" }
|
|
end
|
|
it { should contain_file(file_periodic).with_content(/^APT::Periodic::Download-Upgradeable-Packages "2";$/) }
|
|
end
|
|
|
|
describe "with upgrade => 2" do
|
|
let :params do
|
|
{ :upgrade => "2" }
|
|
end
|
|
it { should contain_file(file_periodic).with_content(/^APT::Periodic::Unattended-Upgrade "2";$/) }
|
|
end
|
|
|
|
describe "with autoclean => 2" do
|
|
let :params do
|
|
{ :autoclean => "2" }
|
|
end
|
|
it { should contain_file(file_periodic).with_content(/^APT::Periodic::AutocleanInterval "2";$/) }
|
|
end
|
|
|
|
describe "with auto_fix => false" do
|
|
let :params do
|
|
{ :auto_fix => false }
|
|
end
|
|
it { should contain_file(file_unattended).with_content(/^Unattended-Upgrade::AutoFixInterruptedDpkg "false";$/) }
|
|
end
|
|
|
|
describe "with minimal_steps => true" do
|
|
let :params do
|
|
{ :minimal_steps => true }
|
|
end
|
|
it { should contain_file(file_unattended).with_content(/^Unattended-Upgrade::MinimalSteps "true";$/) }
|
|
end
|
|
|
|
describe "with install_on_shutdown => true" do
|
|
let :params do
|
|
{ :install_on_shutdown => true }
|
|
end
|
|
it { should contain_file(file_unattended).with_content(/^Unattended-Upgrade::InstallOnShutdown "true";$/) }
|
|
end
|
|
|
|
describe "mail_to" do
|
|
describe "param defaults" do
|
|
let(:params) {{ }}
|
|
it { should_not contain_file(file_unattended).with_content(/^Unattended-Upgrade::Mail /) }
|
|
it { should_not contain_file(file_unattended).with_content(/^Unattended-Upgrade::MailOnlyOnError /) }
|
|
end
|
|
|
|
describe "with mail_to => user@website, mail_only_on_error => true" do
|
|
let :params do
|
|
{ :mail_to => "user@website",
|
|
:mail_only_on_error => true }
|
|
end
|
|
it { should contain_file(file_unattended).with_content(/^Unattended-Upgrade::Mail "user@website";$/) }
|
|
it { should contain_file(file_unattended).with_content(/^Unattended-Upgrade::MailOnlyOnError "true";$/) }
|
|
end
|
|
end
|
|
|
|
describe "with remove_unused => false" do
|
|
let :params do
|
|
{ :remove_unused => false }
|
|
end
|
|
it { should contain_file(file_unattended).with_content(/^Unattended-Upgrade::Remove-Unused-Dependencies "false";$/) }
|
|
end
|
|
|
|
describe "with auto_reboot => true" do
|
|
let :params do
|
|
{ :auto_reboot => true }
|
|
end
|
|
it { should contain_file(file_unattended).with_content(/^Unattended-Upgrade::Automatic-Reboot "true";$/) }
|
|
end
|
|
|
|
describe "dl_limit" do
|
|
describe "param defaults" do
|
|
let(:params) {{ }}
|
|
it { should_not contain_file(file_unattended).with_content(/^Acquire::http::Dl-Limit /) }
|
|
end
|
|
|
|
describe "with dl_limit => 70" do
|
|
let :params do
|
|
{ :dl_limit => "70" }
|
|
end
|
|
it { should contain_file(file_unattended).with_content(/^Acquire::http::Dl-Limit "70";$/) }
|
|
end
|
|
end
|
|
|
|
describe "with enable => 0" do
|
|
let :params do
|
|
{ :enable => "0" }
|
|
end
|
|
it { should contain_file(file_periodic).with_content(/^APT::Periodic::Enable "0";$/) }
|
|
end
|
|
|
|
describe "with backup_interval => 1" do
|
|
let :params do
|
|
{ :backup_interval => "1" }
|
|
end
|
|
it { should contain_file(file_periodic).with_content(/^APT::Periodic::BackUpArchiveInterval "1";$/) }
|
|
end
|
|
|
|
describe "with backup_level => 0" do
|
|
let :params do
|
|
{ :backup_level => "0" }
|
|
end
|
|
it { should contain_file(file_periodic).with_content(/^APT::Periodic::BackUpLevel "0";$/) }
|
|
end
|
|
|
|
describe "with max_age => 1" do
|
|
let :params do
|
|
{ :max_age => "1" }
|
|
end
|
|
it { should contain_file(file_periodic).with_content(/^APT::Periodic::MaxAge "1";$/) }
|
|
end
|
|
|
|
describe "with min_age => 1" do
|
|
let :params do
|
|
{ :min_age => "1" }
|
|
end
|
|
it { should contain_file(file_periodic).with_content(/^APT::Periodic::MinAge "1";$/) }
|
|
end
|
|
|
|
describe "with max_size => 1" do
|
|
let :params do
|
|
{ :max_size => "1" }
|
|
end
|
|
it { should contain_file(file_periodic).with_content(/^APT::Periodic::MaxSize "1";$/) }
|
|
end
|
|
|
|
describe "with download_delta => 2" do
|
|
let :params do
|
|
{ :download_delta => "2" }
|
|
end
|
|
it { should contain_file(file_periodic).with_content(/^APT::Periodic::Download-Upgradeable-Packages-Debdelta "2";$/) }
|
|
end
|
|
|
|
describe "with verbose => 2" do
|
|
let :params do
|
|
{ :verbose => "2" }
|
|
end
|
|
it { should contain_file(file_periodic).with_content(/^APT::Periodic::Verbose "2";$/) }
|
|
end
|
|
|
|
end
|