summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.fixtures.yml2
-rw-r--r--.travis.yml14
-rw-r--r--spec/classes/unattended_upgrades_spec.rb267
-rw-r--r--templates/unattended-upgrades.erb6
4 files changed, 261 insertions, 28 deletions
diff --git a/.fixtures.yml b/.fixtures.yml
index 7930e07..89a888a 100644
--- a/.fixtures.yml
+++ b/.fixtures.yml
@@ -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}"
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..bfa9f24
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,14 @@
+---
+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.9.3
+ env: PUPPET_GEM_VERSION="~> 3.0"
+ - rvm: 2.0.0
+ env: PUPPET_GEM_VERSION="~> 3.0"
+notifications:
+ email: false
diff --git a/spec/classes/unattended_upgrades_spec.rb b/spec/classes/unattended_upgrades_spec.rb
index d53f7d5..a61873b 100644
--- a/spec/classes/unattended_upgrades_spec.rb
+++ b/spec/classes/unattended_upgrades_spec.rb
@@ -10,31 +10,250 @@ describe 'unattended_upgrades' do
: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
diff --git a/templates/unattended-upgrades.erb b/templates/unattended-upgrades.erb
index 5007193..0b015fd 100644
--- a/templates/unattended-upgrades.erb
+++ b/templates/unattended-upgrades.erb
@@ -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