summaryrefslogtreecommitdiff
path: root/spec/classes/unattended_upgrades_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/classes/unattended_upgrades_spec.rb')
-rw-r--r--spec/classes/unattended_upgrades_spec.rb463
1 files changed, 248 insertions, 215 deletions
diff --git a/spec/classes/unattended_upgrades_spec.rb b/spec/classes/unattended_upgrades_spec.rb
index f6e74af..c3b9673 100644
--- a/spec/classes/unattended_upgrades_spec.rb
+++ b/spec/classes/unattended_upgrades_spec.rb
@@ -1,48 +1,56 @@
require 'spec_helper'
+# rubocop:disable Style/RegexpLiteral
describe 'unattended_upgrades' do
let(:file_unattended) { '/etc/apt/apt.conf.d/50unattended-upgrades' }
let(:file_periodic) { '/etc/apt/apt.conf.d/10periodic' }
let(:file_options) { '/etc/apt/apt.conf.d/10options' }
- let(:facts) { {
- osfamily: 'Debian',
- lsbdistid: 'Debian',
- lsbdistcodename: 'wheezy',
- lsbrelease: '7.0.3',
- } }
- let(:pre_condition) {
+ let(:facts) do
+ {
+ osfamily: 'Debian',
+ lsbdistid: 'Debian',
+ lsbdistcodename: 'wheezy',
+ lsbrelease: '7.0.3'
+ }
+ end
+ let(:pre_condition) do
'include ::apt'
- }
+ end
context 'with defaults on Debian' do
- it { should contain_package('unattended-upgrades') }
+ it do
+ should contain_package('unattended-upgrades')
+ should compile.with_all_deps
+ should contain_class('unattended_upgrades::params')
+ should contain_class('unattended_upgrades')
+ end
- it {
+ it do
should contain_apt__conf('unattended-upgrades').with(
require: 'Package[unattended-upgrades]',
- notify_update: false,
+ notify_update: false
)
- }
+ end
- it {
+ it do
should contain_apt__conf('periodic').with(
require: 'Package[unattended-upgrades]',
- notify_update: false,
+ notify_update: false
)
- }
+ end
- it {
+ it do
should contain_apt__conf('options').with(
require: 'Package[unattended-upgrades]',
- notify_update: false,
+ notify_update: false
)
- }
+ end
- it {
+ it do
should create_file(file_unattended).with(
owner: 'root',
group: 'root',
- mode: '0644',
+ mode: '0644'
).with_content(
/Unattended-Upgrade::Origins-Pattern {/
).with_content(
@@ -66,13 +74,13 @@ describe 'unattended_upgrades' do
).without_content(
/Acquire::http::Dl-Limit/
)
- }
+ end
- it {
+ it do
should create_file(file_periodic).with(
owner: 'root',
group: 'root',
- mode: '0644',
+ mode: '0644'
).with_content(
/APT::Periodic::Enable "1";/
).with_content(
@@ -98,17 +106,18 @@ describe 'unattended_upgrades' do
).with_content(
/APT::Periodic::Verbose "0";/
)
- }
+ end
- it { should contain_apt__conf('auto-upgrades').with(
- ensure: 'absent',
- )
- }
- it {
+ it do
+ should contain_apt__conf('auto-upgrades').with(
+ ensure: 'absent'
+ )
+ end
+ it do
should create_file(file_options).with(
owner: 'root',
group: 'root',
- mode: '0644',
+ mode: '0644'
).with_content(
/^Dpkg::Options\s{/
).with_content(
@@ -120,21 +129,23 @@ describe 'unattended_upgrades' do
).without_content(
/\"--force-confmiss\";/
)
- }
+ end
end
context 'with defaults on Debian 6 Squeeze' do
- let(:facts) { {
- osfamily: 'Debian',
- lsbdistid: 'Debian',
- lsbdistcodename: 'squeeze',
- lsbdistrelease: '6.0.10',
- } }
- it {
+ let(:facts) do
+ {
+ osfamily: 'Debian',
+ lsbdistid: 'Debian',
+ lsbdistcodename: 'squeeze',
+ lsbdistrelease: '6.0.10'
+ }
+ end
+ it do
should create_file(file_unattended).with(
owner: 'root',
group: 'root',
- mode: '0644',
+ mode: '0644'
).with_content(
# This section varies for different releases
/\Unattended-Upgrade::Allowed-Origins\ {\n
@@ -143,21 +154,23 @@ describe 'unattended_upgrades' do
\t"\${distro_id}\ \${distro_codename}-lts";\n
};/x
)
- }
+ end
end
context 'with defaults on Debian 7 Wheezy' do
- let(:facts) { {
- osfamily: 'Debian',
- lsbdistid: 'Debian',
- lsbdistcodename: 'wheezy',
- lsbdistrelease: '7.1',
- } }
- it {
+ let(:facts) do
+ {
+ osfamily: 'Debian',
+ lsbdistid: 'Debian',
+ lsbdistcodename: 'wheezy',
+ lsbdistrelease: '7.1'
+ }
+ end
+ it do
should create_file(file_unattended).with(
owner: 'root',
group: 'root',
- mode: '0644',
+ mode: '0644'
).with_content(
# This section varies for different releases
/\Unattended-Upgrade::Origins-Pattern\ {\n
@@ -165,198 +178,216 @@ describe 'unattended_upgrades' do
\t"origin=Debian,archive=oldstable,label=Debian-Security";\n
};/x
)
- }
+ end
end
context 'with defaults on Debian 8 Jessie' do
- let(:facts) { {
- osfamily: 'Debian',
- lsbdistid: 'Debian',
- lsbdistcodename: 'jessie',
- lsbdistrelease: '8.2',
- } }
- it {
+ let(:facts) do
+ {
+ osfamily: 'Debian',
+ lsbdistid: 'Debian',
+ lsbdistcodename: 'jessie',
+ lsbdistrelease: '8.2'
+ }
+ end
+ it do
should create_file(file_unattended).with(
owner: 'root',
group: 'root',
- mode: '0644',
+ mode: '0644'
).with_content(
# This section varies for different releases
/\Unattended-Upgrade::Origins-Pattern\ {\n
\t"origin=Debian,codename=\${distro_codename},label=Debian-Security";\n
};/x
)
- }
+ end
end
context 'with defaults on Ubuntu 12.04LTS Precise Pangolin' do
- let(:facts) { {
- osfamily: 'Debian',
- lsbdistid: 'Ubuntu',
- lsbdistcodename: 'precise',
- lsbrelease: '12.04',
- lsbdistrelease: '12.04',
- } }
- it {
+ let(:facts) do
+ {
+ osfamily: 'Debian',
+ lsbdistid: 'Ubuntu',
+ lsbdistcodename: 'precise',
+ lsbrelease: '12.04',
+ lsbdistrelease: '12.04'
+ }
+ end
+ it do
should create_file(file_unattended).with(
owner: 'root',
group: 'root',
- mode: '0644',
+ mode: '0644'
).with_content(
# This is the only section that's different for Ubuntu compared to Debian
/\Unattended-Upgrade::Allowed-Origins\ {\n
\t"\${distro_id}\:\${distro_codename}-security";\n
};/x
)
- }
+ end
end
context 'with defaults on Ubuntu 14.04LTS Trusty Tahr' do
- let(:facts) { {
- osfamily: 'Debian',
- lsbdistid: 'Ubuntu',
- lsbdistcodename: 'trusty',
- lsbrelease: '14.04',
- lsbdistrelease: '14.04',
- } }
- it {
+ let(:facts) do
+ {
+ osfamily: 'Debian',
+ lsbdistid: 'Ubuntu',
+ lsbdistcodename: 'trusty',
+ lsbrelease: '14.04',
+ lsbdistrelease: '14.04'
+ }
+ end
+ it do
should create_file(file_unattended).with(
owner: 'root',
group: 'root',
- mode: '0644',
+ mode: '0644'
).with_content(
# This is the only section that's different for Ubuntu compared to Debian
/\Unattended-Upgrade::Allowed-Origins\ {\n
\t"\${distro_id}\:\${distro_codename}-security";\n
};/x
)
- }
+ end
end
context 'with defaults on Ubuntu 15.04 Vivid Vervet' do
- let(:facts) { {
- osfamily: 'Debian',
- lsbdistid: 'Ubuntu',
- lsbdistcodename: 'vivid',
- lsbrelease: '15.04',
- lsbdistrelease: '15.04',
- } }
- it {
+ let(:facts) do
+ {
+ osfamily: 'Debian',
+ lsbdistid: 'Ubuntu',
+ lsbdistcodename: 'vivid',
+ lsbrelease: '15.04',
+ lsbdistrelease: '15.04'
+ }
+ end
+ it do
should create_file(file_unattended).with(
owner: 'root',
group: 'root',
- mode: '0644',
+ mode: '0644'
).with_content(
# This is the only section that's different for Ubuntu compared to Debian
/\Unattended-Upgrade::Allowed-Origins\ {\n
\t"\${distro_id}\:\${distro_codename}-security";\n
};/x
)
- }
+ end
end
context 'with defaults on Ubuntu 15.10 Wily Werewolf' do
- let(:facts) { {
- osfamily: 'Debian',
- lsbdistid: 'Ubuntu',
- lsbdistcodename: 'wily',
- lsbrelease: '15.10',
- lsbdistrelease: '15.10',
- } }
- it {
+ let(:facts) do
+ {
+ osfamily: 'Debian',
+ lsbdistid: 'Ubuntu',
+ lsbdistcodename: 'wily',
+ lsbrelease: '15.10',
+ lsbdistrelease: '15.10'
+ }
+ end
+ it do
should create_file(file_unattended).with(
owner: 'root',
group: 'root',
- mode: '0644',
+ mode: '0644'
).with_content(
# This is the only section that's different for Ubuntu compared to Debian
/\Unattended-Upgrade::Allowed-Origins\ {\n
\t"\${distro_id}\:\${distro_codename}-security";\n
};/x
)
- }
+ end
end
context 'with defaults on Raspbian' do
- let(:facts) { {
- osfamily: 'Debian',
- lsbdistid: 'Raspbian',
- lsbdistcodename: 'jessie',
- lsbrelease: '8.0',
- } }
- it {
+ let(:facts) do
+ {
+ osfamily: 'Debian',
+ lsbdistid: 'Raspbian',
+ lsbdistcodename: 'jessie',
+ lsbrelease: '8.0'
+ }
+ end
+ it do
should create_file(file_unattended).with(
owner: 'root',
group: 'root',
- mode: '0644',
+ mode: '0644'
)
- }
+ end
end
context 'with defaults on Linux Mint 13 Maya' do
- let(:facts) { {
- osfamily: 'Debian',
- lsbdistid: 'LinuxMint',
- lsbdistcodename: 'maya',
- lsbdistrelease: '13',
- lsbmajdistrelease: '13',
- } }
- it {
+ let(:facts) do
+ {
+ osfamily: 'Debian',
+ lsbdistid: 'LinuxMint',
+ lsbdistcodename: 'maya',
+ lsbdistrelease: '13',
+ lsbmajdistrelease: '13'
+ }
+ end
+ it do
should create_file(file_unattended).with(
'owner' => 'root',
'group' => 'root',
- 'mode' => '0644',
+ 'mode' => '0644'
).with_content(
# This is the only section that's different for Ubuntu compared to Debian
/\Unattended-Upgrade::Allowed-Origins\ {\n
\t"Ubuntu\:precise-security";\n
};/x
)
- }
+ end
end
context 'with defaults on Linux Mint 17.3 Rosa' do
- let(:facts) { {
- osfamily: 'Debian',
- lsbdistid: 'LinuxMint',
- lsbdistcodename: 'rosa',
- lsbdistrelease: '17.3',
- lsbmajdistrelease: '17',
- } }
- it {
+ let(:facts) do
+ {
+ osfamily: 'Debian',
+ lsbdistid: 'LinuxMint',
+ lsbdistcodename: 'rosa',
+ lsbdistrelease: '17.3',
+ lsbmajdistrelease: '17'
+ }
+ end
+ it do
should create_file(file_unattended).with(
'owner' => 'root',
'group' => 'root',
- 'mode' => '0644',
+ 'mode' => '0644'
).with_content(
# This is the only section that's different for Ubuntu compared to Debian
/\Unattended-Upgrade::Allowed-Origins\ {\n
\t"Ubuntu\:trusty-security";\n
};/x
)
- }
+ end
end
context 'with defaults on Linux Mint 18 Sarah' do
- let(:facts) { {
- osfamily: 'Debian',
- lsbdistid: 'LinuxMint',
- lsbdistcodename: 'sarah',
- lsbdistrelease: '18',
- lsbmajdistrelease: '18',
- } }
- it {
+ let(:facts) do
+ {
+ osfamily: 'Debian',
+ lsbdistid: 'LinuxMint',
+ lsbdistcodename: 'sarah',
+ lsbdistrelease: '18',
+ lsbmajdistrelease: '18'
+ }
+ end
+ it do
should create_file(file_unattended).with(
'owner' => 'root',
'group' => 'root',
- 'mode' => '0644',
+ 'mode' => '0644'
).with_content(
# This is the only section that's different for Ubuntu compared to Debian
/\Unattended-Upgrade::Allowed-Origins\ {\n
\t"Ubuntu\:xenial-security";\n
};/x
)
- }
+ end
end
context 'set all the things' do
@@ -367,7 +398,7 @@ describe 'unattended_upgrades' do
update: 5,
upgradeable_packages: {
'download_only' => 5,
- 'debdelta' => 5,
+ 'debdelta' => 5
},
upgrade: 5,
auto: {
@@ -375,7 +406,7 @@ describe 'unattended_upgrades' do
'fix_interrupted_dpkg' => false,
'remove' => false,
'reboot' => true,
- 'reboot_time' => '03:00',
+ 'reboot_time' => '03:00'
},
verbose: 1,
legacy_origin: true,
@@ -385,7 +416,7 @@ describe 'unattended_upgrades' do
install_on_shutdown: true,
mail: {
'to' => 'root@localhost',
- 'only_on_error' => true,
+ 'only_on_error' => true
},
dl_limit: 70,
random_sleep: 300,
@@ -394,36 +425,38 @@ describe 'unattended_upgrades' do
'force_confdef' => false,
'force_confold' => false,
'force_confnew' => true,
- 'force_confmiss' => true,
+ 'force_confmiss' => true
}
}
end
it { should contain_package('unattended-upgrades') }
- it { should contain_apt__conf('unattended-upgrades').with(
- require: 'Package[unattended-upgrades]',
- notify_update: true,
+ it do
+ should contain_apt__conf('unattended-upgrades').with(
+ require: 'Package[unattended-upgrades]',
+ notify_update: true
)
- }
+ end
- it { should contain_apt__conf('periodic').with(
- require: 'Package[unattended-upgrades]',
- notify_update: true,
+ it do
+ should contain_apt__conf('periodic').with(
+ require: 'Package[unattended-upgrades]',
+ notify_update: true
)
- }
+ end
- it {
+ it do
should contain_apt__conf('options').with(
require: 'Package[unattended-upgrades]',
- notify_update: true,
+ notify_update: true
)
- }
+ end
- it {
+ it do
should create_file(file_unattended).with(
owner: 'root',
group: 'root',
- mode: '0644',
+ mode: '0644'
).with_content(
/Unattended-Upgrade::Allowed-Origins {\n\t"bananas";\n};/
).with_content(
@@ -447,13 +480,13 @@ describe 'unattended_upgrades' do
).with_content(
/Acquire::http::Dl-Limit "70";/
)
- }
+ end
- it {
+ it do
should create_file(file_periodic).with(
owner: 'root',
group: 'root',
- mode: '0644',
+ mode: '0644'
).with_content(
/APT::Periodic::Enable "1";/
).with_content(
@@ -481,13 +514,13 @@ describe 'unattended_upgrades' do
).with_content(
/APT::Periodic::RandomSleep "300";/
)
- }
+ end
- it {
+ it do
should create_file(file_options).with(
owner: 'root',
group: 'root',
- mode: '0644',
+ mode: '0644'
).with_content(
/^Dpkg::Options\s{/
).without_content(
@@ -499,217 +532,217 @@ describe 'unattended_upgrades' do
).with_content(
/^\s+"--force-confmiss";/
)
- }
- it {
+ end
+ it do
should contain_apt__conf('auto-upgrades').with(
- ensure: 'absent',
+ ensure: 'absent'
)
- }
+ end
end
describe 'validation tests' do
context 'bad install_on_shutdown' do
let :params do
{
- install_on_shutdown: 'foo',
+ install_on_shutdown: 'foo'
}
end
it do
- expect {
+ expect do
subject.call
- }.to raise_error(Puppet::Error, /not a boolean/)
+ end.to raise_error(Puppet::Error, /not a boolean/)
end
end
context 'bad legacy_origin' do
let :params do
{
- legacy_origin: 'foo',
+ legacy_origin: 'foo'
}
end
it do
- expect {
+ expect do
subject.call
- }.to raise_error(Puppet::Error, /not a boolean/)
+ end.to raise_error(Puppet::Error, /not a boolean/)
end
end
context 'bad minimal_steps' do
let :params do
{
- minimal_steps: 'foo',
+ minimal_steps: 'foo'
}
end
it do
- expect {
+ expect do
subject.call
- }.to raise_error(Puppet::Error, /not a boolean/)
+ end.to raise_error(Puppet::Error, /not a boolean/)
end
end
context 'bad blacklist' do
let :params do
{
- blacklist: 'foo',
+ blacklist: 'foo'
}
end
it do
- expect {
+ expect do
subject.call
- }.to raise_error(Puppet::Error, /not an Array/)
+ end.to raise_error(Puppet::Error, /not an Array/)
end
end
context 'bad origins' do
let :params do
{
- origins: 'foo',
+ origins: 'foo'
}
end
it do
- expect {
+ expect do
subject.call
- }.to raise_error(Puppet::Error, /not an Array/)
+ end.to raise_error(Puppet::Error, /not an Array/)
end
end
context 'bad auto' do
let :params do
{
- auto: 'foo',
+ auto: 'foo'
}
end
it do
- expect {
+ expect do
subject.call
- }.to raise_error(Puppet::Error, /not a Hash/)
+ end.to raise_error(Puppet::Error, /not a Hash/)
end
end
context 'bad mail' do
let :params do
{
- mail: 'foo',
+ mail: 'foo'
}
end
it do
- expect {
+ expect do
subject.call
- }.to raise_error(Puppet::Error, /not a Hash/)
+ end.to raise_error(Puppet::Error, /not a Hash/)
end
end
context 'bad backup' do
let :params do
{
- backup: 'foo',
+ backup: 'foo'
}
end
it do
- expect {
+ expect do
subject.call
- }.to raise_error(Puppet::Error, /not a Hash/)
+ end.to raise_error(Puppet::Error, /not a Hash/)
end
end
context 'bad age' do
let :params do
{
- age: 'foo',
+ age: 'foo'
}
end
it do
- expect {
+ expect do
subject.call
- }.to raise_error(Puppet::Error, /not a Hash/)
+ end.to raise_error(Puppet::Error, /not a Hash/)
end
end
context 'bad size' do
let :params do
{
- size: 'foo',
+ size: 'foo'
}
end
it do
- expect {
+ expect do
subject.call
- }.to raise_error(Puppet::Error, /to be an Integer/)
+ end.to raise_error(Puppet::Error, /to be an Integer/)
end
end
context 'bad upgradeable_packages' do
let :params do
{
- upgradeable_packages: 'foo',
+ upgradeable_packages: 'foo'
}
end
it do
- expect {
+ expect do
subject.call
- }.to raise_error(Puppet::Error, /not a Hash/)
+ end.to raise_error(Puppet::Error, /not a Hash/)
end
end
context 'bad mail[\'only_on_error\']' do
let :params do
{
- mail: { 'only_on_error' => 'foo' },
+ mail: { 'only_on_error' => 'foo' }
}
end
it do
- expect {
+ expect do
subject.call
- }.to raise_error(Puppet::Error, /not a boolean/)
+ end.to raise_error(Puppet::Error, /not a boolean/)
end
end
context 'bad options[\'force_confdef\']' do
let :params do
{
- options: { 'force_confdef' => 'foo' },
+ options: { 'force_confdef' => 'foo' }
}
end
it do
- expect {
+ expect do
subject.call
- }.to raise_error(Puppet::Error, /not a boolean/)
+ end.to raise_error(Puppet::Error, /not a boolean/)
end
end
context 'bad options[\'force_confold\']' do
let :params do
{
- options: { 'force_confold' => 'foo' },
+ options: { 'force_confold' => 'foo' }
}
end
it do
- expect {
+ expect do
subject.call
- }.to raise_error(Puppet::Error, /not a boolean/)
+ end.to raise_error(Puppet::Error, /not a boolean/)
end
end
context 'bad options[\'force_confnew\']' do
let :params do
{
- options: { 'force_confnew' => 'foo' },
+ options: { 'force_confnew' => 'foo' }
}
end
it do
- expect {
+ expect do
subject.call
- }.to raise_error(Puppet::Error, /not a boolean/)
+ end.to raise_error(Puppet::Error, /not a boolean/)
end
end
context 'bad options[\'force_confmiss\']' do
let :params do
{
- options: { 'force_confmiss' => 'foo' },
+ options: { 'force_confmiss' => 'foo' }
}
end
it do
- expect {
+ expect do
subject.call
- }.to raise_error(Puppet::Error, /not a boolean/)
+ end.to raise_error(Puppet::Error, /not a boolean/)
end
end
context 'bad options[\'invalid_key\']' do
let :params do
{
- options: { 'invalid_key' => true },
+ options: { 'invalid_key' => true }
}
end
it do
- expect {
+ expect do
subject.call
- }.to raise_error(Puppet::Error, /invalid_key not a valid key/)
+ end.to raise_error(Puppet::Error, /invalid_key not a valid key/)
end
end
end