Skip to content

Commit

Permalink
Fix to use the mail hash.
Browse files Browse the repository at this point in the history
Testing unattended upgrades
  • Loading branch information
Morgan Haskel committed Apr 15, 2015
1 parent ed90628 commit a497efa
Show file tree
Hide file tree
Showing 4 changed files with 263 additions and 28 deletions.
2 changes: 1 addition & 1 deletion .fixtures.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ fixtures:
repositories:
apt:
repo: "https://github.com/puppetlabs/puppetlabs-apt.git"
ref: "db9daeb1831930f648b99e1867867ba6a071e68a"
ref: "2.0.0"
symlinks:
unattended_upgrades: "#{source_dir}"
16 changes: 16 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
language: ruby
sudo: false
bundler_args: --without system_tests
script: "bundle exec rake validate && bundle exec rake lint && bundle exec rake spec SPEC_OPTS='--format documentation'"
matrix:
fast_finish: true
include:
- rvm: 1.8.7
env: PUPPET_GEM_VERSION="~> 3.0"
- rvm: 1.9.3
env: PUPPET_GEM_VERSION="~> 3.0"
- rvm: 2.0.0
env: PUPPET_GEM_VERSION="~> 3.0"
notifications:
email: false
267 changes: 243 additions & 24 deletions spec/classes/unattended_upgrades_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,31 +10,250 @@
:lsbrelease => '7.0.3',
} }

it { should contain_package("unattended-upgrades") }

it { should contain_apt__conf('unattended-upgrades').with({
"require" => "Package[unattended-upgrades]",
})
}

it { should contain_apt__conf('periodic').with({
"require" => "Package[unattended-upgrades]",
})
}

it {
should create_file(file_unattended).with({
"owner" => "root",
"group" => "root",
"mode" => "0644",
context 'with defaults' do
it { should contain_package('unattended-upgrades') }

it { should contain_apt__conf('unattended-upgrades').with({
'require' => 'Package[unattended-upgrades]',
})
}

it { should contain_apt__conf('periodic').with({
'require' => 'Package[unattended-upgrades]',
})
}

it {
should create_file(file_unattended).with({
'owner' => 'root',
'group' => 'root',
'mode' => '0644',
})
}

it {
should create_file(file_periodic).with({
'owner' => 'root',
'group' => 'root',
'mode' => '0644',
})
}

it { should contain_apt__conf('auto-upgrades').with({
'ensure' => 'absent',
})
}
end

context 'set all the things' do
let :params do
{
:age => { 'min' => 1 },
:size => { 'max' => 1000 },
:update => 5,
:upgradeable_packages => {
'download_only' => 5,
'debdelta' => 5,
},
:upgrade => 5,
:auto => {
'clean' => '5',
'fix_interrupted_dpkg' => false,
'remove' => false,
'reboot' => false,
},
:verbose => 1,
:legacy_origin => true,
:origins => [ 'bananas' ],
:blacklist => [ 'foo', 'bar' ],
:minimal_steps => false,
:install_on_shutdown => true,
:mail => {
'to' => 'root@localhost',
'only_on_error' => true,
},
:dl_limit => 70,
}
end
it { should contain_package('unattended-upgrades') }

it { should contain_apt__conf('unattended-upgrades').with({
'require' => 'Package[unattended-upgrades]',
})
}

it { should contain_apt__conf('periodic').with({
'require' => 'Package[unattended-upgrades]',
})
}
}

it {
should create_file(file_periodic).with({
"owner" => "root",
"group" => "root",
"mode" => "0644",
it {
should create_file(file_unattended).with({
'owner' => 'root',
'group' => 'root',
'mode' => '0644',
})
}

it {
should create_file(file_periodic).with({
'owner' => 'root',
'group' => 'root',
'mode' => '0644',
})
}

it { should contain_apt__conf('auto-upgrades').with({
'ensure' => 'absent',
})
}
}

end

describe 'validation tests' do
context 'bad install_on_shutdown' do
let :params do
{
:install_on_shutdown => 'foo',
}
end
it do
expect {
subject.call
}.to raise_error(Puppet::Error, /not a boolean/)
end
end
context 'bad legacy_origin' do
let :params do
{
:legacy_origin => 'foo',
}
end
it do
expect {
subject.call
}.to raise_error(Puppet::Error, /not a boolean/)
end
end
context 'bad minimal_steps' do
let :params do
{
:minimal_steps => 'foo',
}
end
it do
expect {
subject.call
}.to raise_error(Puppet::Error, /not a boolean/)
end
end
context 'bad blacklist' do
let :params do
{
:blacklist => 'foo',
}
end
it do
expect {
subject.call
}.to raise_error(Puppet::Error, /not an Array/)
end
end
context 'bad origins' do
let :params do
{
:origins => 'foo',
}
end
it do
expect {
subject.call
}.to raise_error(Puppet::Error, /not an Array/)
end
end
context 'bad auto' do
let :params do
{
:auto => 'foo',
}
end
it do
expect {
subject.call
}.to raise_error(Puppet::Error, /not a Hash/)
end
end
context 'bad mail' do
let :params do
{
:mail => 'foo',
}
end
it do
expect {
subject.call
}.to raise_error(Puppet::Error, /not a Hash/)
end
end
context 'bad backup' do
let :params do
{
:backup => 'foo',
}
end
it do
expect {
subject.call
}.to raise_error(Puppet::Error, /not a Hash/)
end
end
context 'bad age' do
let :params do
{
:age => 'foo',
}
end
it do
expect {
subject.call
}.to raise_error(Puppet::Error, /not a Hash/)
end
end
context 'bad size' do
let :params do
{
:size => 'foo',
}
end
it do
expect {
subject.call
}.to raise_error(Puppet::Error, /not a Hash/)
end
end
context 'bad upgradeable_packages' do
let :params do
{
:upgradeable_packages => 'foo',
}
end
it do
expect {
subject.call
}.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' },
}
end
it do
expect {
subject.call
}.to raise_error(Puppet::Error, /not a boolean/)
end
end
end
end
6 changes: 3 additions & 3 deletions templates/unattended-upgrades.erb
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,16 @@ Unattended-Upgrade::MinimalSteps "<%= @minimal_steps.to_s %>";
// This will (obviously) make shutdown slower
Unattended-Upgrade::InstallOnShutdown "<%= @install_on_shutdown.to_s %>";

<% unless @mail_to.nil? %>
<% unless @mail['to'].nil? %>
// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. A package that provides
// 'mailx' must be installed.
Unattended-Upgrade::Mail "<%= @mail_to %>";
Unattended-Upgrade::Mail "<%= @mail['to'] %>";

// Set this value to "true" to get emails only on errors. Default
// is to always send a mail if Unattended-Upgrade::Mail is set
Unattended-Upgrade::MailOnlyOnError "<%= @mail_only_on_error.to_s %>";
Unattended-Upgrade::MailOnlyOnError "<%= @mail['only_on_error'].to_s %>";
<% end %>

// Do automatic removal of new unused dependencies after the upgrade
Expand Down

0 comments on commit a497efa

Please sign in to comment.