From: Ashley Penney Date: Tue, 7 Jan 2014 00:53:19 +0000 (-0500) Subject: Add additional acceptance testing. X-Git-Tag: 1.4.1~8^2~2 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=16e57d4e4525b83d865db71f3bba300c54467255;p=puppet-modules%2Fpuppetlabs-apt.git Add additional acceptance testing. This work adds a test for every parameter in every class/define in apt. --- diff --git a/spec/acceptance/apt_key_spec.rb b/spec/acceptance/apt_key_spec.rb index 5f69e25..36cba5e 100644 --- a/spec/acceptance/apt_key_spec.rb +++ b/spec/acceptance/apt_key_spec.rb @@ -1,14 +1,6 @@ require 'spec_helper_acceptance' describe 'apt::key' do - - context 'reset' do - it 'clean up keys' do - shell('apt-key del 4BD6EC30', :acceptable_exit_codes => [0,1,2]) - shell('apt-key del D50582E6', :acceptable_exit_codes => [0,1,2]) - end - end - context 'apt::key' do it 'should work with no errors' do pp = <<-EOS @@ -24,18 +16,47 @@ describe 'apt::key' do } EOS + shell('apt-key del 4BD6EC30', :acceptable_exit_codes => [0,1,2]) + shell('apt-key del D50582E6', :acceptable_exit_codes => [0,1,2]) apply_manifest(pp, :catch_failures => true) end describe 'keys should exist' do it 'finds puppetlabs key' do - shell('apt-key list | grep 4BD6EC30') do |r| - expect(r.exit_code).to be_zero - end + shell('apt-key list | grep 4BD6EC30') end it 'finds jenkins key' do - shell('apt-key list | grep D50582E6') do |r| - expect(r.exit_code).to be_zero + shell('apt-key list | grep D50582E6') + end + end + end + context 'ensure' do + context 'absent' do + it 'should work with no errors' do + pp = <<-EOS + include '::apt' + apt::key { 'puppetlabs': + ensure => absent, + key => '4BD6EC30', + key_server => 'pgp.mit.edu', + } + + apt::key { 'jenkins': + ensure => absent, + key => 'D50582E6', + key_source => 'http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key', + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe 'keys shouldnt exist' do + it 'fails' do + shell('apt-key list | grep 4BD6EC30', :acceptable_exit_codes => [1]) + end + it 'fails' do + shell('apt-key list | grep D50582E6', :acceptable_exit_codes => [1]) end end end @@ -43,8 +64,136 @@ describe 'apt::key' do context 'reset' do it 'clean up keys' do - shell('apt-key del 4BD6EC30') - shell('apt-key del D50582E6') + shell('apt-key del 4BD6EC30', :acceptable_exit_codes => [0,1,2]) + shell('apt-key del D50582E6', :acceptable_exit_codes => [0,1,2]) + end + end + + context 'key options' do + context 'key_content' do + + it 'should work with no errors' do + pp = <<-EOS + include '::apt' + apt::key { 'puppetlabs': + key => '4BD6EC30', + key_content => '-----BEGIN PGP PUBLIC KEY BLOCK----- + Version: GnuPG v1.4.12 (GNU/Linux) + Comment: GPGTools - http://gpgtools.org + + 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 + =a34C + -----END PGP PUBLIC KEY BLOCK----- + ', + } + EOS + + shell('apt-key del 4BD6EC30', :acceptable_exit_codes => [0,1,2]) + apply_manifest(pp, :catch_failures => true) + end + end + describe 'keys should exist' do + it 'finds puppetlabs key' do + shell('apt-key list | grep 4BD6EC30') + end + end + + context 'key_source' do + + it 'should work with no errors' do + pp = <<-EOS + include '::apt' + apt::key { 'puppetlabs': + key => '4BD6EC30', + key_source => 'http://apt.puppetlabs.com/pubkey.gpg', + } + EOS + + shell('apt-key del 4BD6EC30', :acceptable_exit_codes => [0,1,2]) + apply_manifest(pp, :catch_failures => true) + end + + describe 'keys should exist' do + it 'finds puppetlabs key' do + shell('apt-key list | grep 4BD6EC30') + end + end + end + + context 'key_options' do + + it 'should work with no errors' do + pp = <<-EOS + include '::apt' + apt::key { 'puppetlabs': + key => '4BD6EC30', + key_source => 'http://apt.puppetlabs.com/pubkey.gpg', + key_options => 'debug' + } + EOS + + shell('apt-key del 4BD6EC30', :acceptable_exit_codes => [0,1,2]) + apply_manifest(pp, :catch_failures => true) + end + + describe 'keys should exist' do + it 'finds puppetlabs key' do + shell('apt-key list | grep 4BD6EC30') + end + end end end diff --git a/spec/acceptance/apt_ppa_spec.rb b/spec/acceptance/apt_ppa_spec.rb index 5bee3c6..f936980 100644 --- a/spec/acceptance/apt_ppa_spec.rb +++ b/spec/acceptance/apt_ppa_spec.rb @@ -50,4 +50,89 @@ describe 'apt::ppa' do end end + context 'ensure' do + context 'present' do + it 'works without failure' do + pp = <<-EOS + include '::apt' + apt::ppa { 'ppa:canonical-kernel-team/ppa': ensure => present } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe 'contains the source file' do + it 'contains a kernel ppa source' do + shell('ls /etc/apt/sources.list.d/canonical-kernel-team-ppa-*', :acceptable_exit_codes => [0]) + end + end + end + end + + context 'ensure' do + context 'absent' do + it 'works without failure' do + pp = <<-EOS + include '::apt' + apt::ppa { 'ppa:canonical-kernel-team/ppa': ensure => absent } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe 'doesnt contain the source file' do + it 'fails' do + shell('ls /etc/apt/sources.list.d/canonical-kernel-team-ppa-*', :acceptable_exit_codes => [2]) + end + end + end + end + + context 'release' do + context 'precise' do + it 'works without failure' do + pp = <<-EOS + include '::apt' + apt::ppa { 'ppa:canonical-kernel-team/ppa': + ensure => present, + release => precise, + } + EOS + + shell('rm -rf /etc/apt/sources.list.d/canonical-kernel-team-ppa*', :acceptable_exit_codes => [0,1,2]) + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/sources.list.d/canonical-kernel-team-ppa-precise.list') do + it { should be_file } + end + end + end + + context 'options' do + context '-y' do + it 'works without failure' do + pp = <<-EOS + include '::apt' + apt::ppa { 'ppa:canonical-kernel-team/ppa': + ensure => present, + release => precise, + options => '-y', + } + EOS + + shell('rm -rf /etc/apt/sources.list.d/canonical-kernel-team-ppa*', :acceptable_exit_codes => [0,1,2]) + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/sources.list.d/canonical-kernel-team-ppa-precise.list') do + it { should be_file } + end + end + end + + context 'reset' do + it { shell('rm -rf /etc/apt/sources.list.d/canonical-kernel-team-ppa*', :acceptable_exit_codes => [0,1,2]) } + end + end diff --git a/spec/acceptance/apt_source_spec.rb b/spec/acceptance/apt_source_spec.rb index 044af57..273add5 100644 --- a/spec/acceptance/apt_source_spec.rb +++ b/spec/acceptance/apt_source_spec.rb @@ -2,47 +2,323 @@ require 'spec_helper_acceptance' describe 'apt::source' do - context 'reset' do - it 'clean up puppetlabs repo' do - shell('apt-key del 4BD6EC30', :acceptable_exit_codes => [0,1,2]) - shell('rm /etc/apt/sources.list.d/puppetlabs.list', :acceptable_exit_codes => [0,1,2]) + context 'apt::source' do + context 'ensure => present' do + it 'should work with no errors' do + pp = <<-EOS + include '::apt' + apt::source { 'puppetlabs': + ensure => present, + location => 'http://apt.puppetlabs.com', + repos => 'main', + key => '4BD6EC30', + key_server => 'pgp.mit.edu', + } + EOS + + shell('apt-key del 4BD6EC30', :acceptable_exit_codes => [0,1,2]) + shell('rm /etc/apt/sources.list.d/puppetlabs.list', :acceptable_exit_codes => [0,1,2]) + apply_manifest(pp, :catch_failures => true) + end + + describe 'key should exist' do + it 'finds puppetlabs key' do + shell('apt-key list | grep 4BD6EC30', :acceptable_exit_codes => [0]) + end + end + + describe file('/etc/apt/sources.list.d/puppetlabs.list') do + it { should be_file } + end end + + context 'ensure => absent' do + it 'should work with no errors' do + pp = <<-EOS + include '::apt' + apt::source { 'puppetlabs': + ensure => absent, + location => 'http://apt.puppetlabs.com', + repos => 'main', + key => '4BD6EC30', + key_server => 'pgp.mit.edu', + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + # The key should remain -we don't delete those when deleting a source. + describe 'key should exist' do + it 'finds puppetlabs key' do + shell('apt-key list | grep 4BD6EC30', :acceptable_exit_codes => [0]) + end + end + describe file('/etc/apt/sources.list.d/puppetlabs.list') do + it { should_not be_file } + end + end + end - context 'apt::source' do - it 'should work with no errors' do - pp = <<-EOS - include '::apt' - apt::source { 'puppetlabs': - location => 'http://apt.puppetlabs.com', - repos => 'main', - key => '4BD6EC30', - key_server => 'pgp.mit.edu', - } - EOS - - apply_manifest(pp, :catch_failures => true) - end - - describe 'key should exist' do - it 'finds puppetlabs key' do - shell('apt-key list | grep 4BD6EC30') do |r| - expect(r.exit_code).to be_zero + context 'release' do + context 'test' do + it 'should work with no errors' do + pp = <<-EOS + include '::apt' + apt::source { 'puppetlabs': + ensure => present, + location => 'http://apt.puppetlabs.com', + repos => 'main', + key => '4BD6EC30', + key_server => 'pgp.mit.edu', + release => 'precise', + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/sources.list.d/puppetlabs.list') do + it { should be_file } + it { should contain 'deb http://apt.puppetlabs.com precise main' } + end + end + end + + context 'include_src' do + context 'true' do + it 'should work with no errors' do + pp = <<-EOS + include '::apt' + apt::source { 'puppetlabs': + ensure => present, + location => 'http://apt.puppetlabs.com', + repos => 'main', + key => '4BD6EC30', + key_server => 'pgp.mit.edu', + include_src => true, + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/sources.list.d/puppetlabs.list') do + it { should be_file } + it { should contain 'deb-src http://apt.puppetlabs.com' } + end + end + + context 'false' do + it 'should work with no errors' do + pp = <<-EOS + include '::apt' + apt::source { 'puppetlabs': + ensure => present, + location => 'http://apt.puppetlabs.com', + repos => 'main', + key => '4BD6EC30', + key_server => 'pgp.mit.edu', + include_src => false, + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/sources.list.d/puppetlabs.list') do + it { should be_file } + it { should_not contain 'deb-src http://apt.puppetlabs.com' } + end + end + end + + context 'required_packages' do + context 'vim' do + it 'should work with no errors' do + pp = <<-EOS + include '::apt' + apt::source { 'puppetlabs': + ensure => present, + location => 'http://apt.puppetlabs.com', + repos => 'main', + key => '4BD6EC30', + key_server => 'pgp.mit.edu', + required_packages => 'vim', + } + EOS + + shell('apt-get -y remove vim') + apply_manifest(pp, :catch_failures => true) + end + + describe package('vim') do + it { should be_installed } + end + end + end + + context 'key content' do + context 'giant key' do + it 'should work with no errors' do + pp = <<-EOS + include '::apt' + apt::source { 'puppetlabs': + ensure => present, + location => 'http://apt.puppetlabs.com', + repos => 'main', + key => '4BD6EC30', + key_content => '-----BEGIN PGP PUBLIC KEY BLOCK----- + Version: GnuPG v1.4.12 (GNU/Linux) + Comment: GPGTools - http://gpgtools.org + + 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 + =a34C + -----END PGP PUBLIC KEY BLOCK-----', + } + EOS + + shell('apt-key del 4BD6EC30', :acceptable_exit_codes => [0,1,2]) + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/sources.list.d/puppetlabs.list') do + it { should be_file } + end + describe 'keys should exist' do + it 'finds puppetlabs key' do + shell('apt-key list | grep 4BD6EC30') end end end + end + + context 'key_source' do + context 'http://apt.puppetlabs.com/pubkey.gpg' do + it 'should work with no errors' do + pp = <<-EOS + include '::apt' + apt::source { 'puppetlabs': + ensure => present, + location => 'http://apt.puppetlabs.com', + repos => 'main', + key => '4BD6EC30', + key_source => 'http://apt.puppetlabs.com/pubkey.gpg', + } + EOS + + shell('apt-key del 4BD6EC30', :acceptable_exit_codes => [0,1,2]) + apply_manifest(pp, :catch_failures => true) + end - describe 'source should exist' do describe file('/etc/apt/sources.list.d/puppetlabs.list') do it { should be_file } + it { should contain 'deb http://apt.puppetlabs.com precise main' } + end + describe 'keys should exist' do + it 'finds puppetlabs key' do + shell('apt-key list | grep 4BD6EC30') + end end end end - context 'reset' do - it 'clean up puppetlabs repo' do - shell('apt-key del 4BD6EC30') - shell('rm /etc/apt/sources.list.d/puppetlabs.list') + context 'pin' do + context 'false' do + it 'should work with no errors' do + pp = <<-EOS + include '::apt' + apt::source { 'puppetlabs': + ensure => present, + location => 'http://apt.puppetlabs.com', + repos => 'main', + key => '4BD6EC30', + key_server => 'pgp.mit.edu', + pin => false, + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/preferences.d/puppetlabs.pref') do + it { should_not be_file } + end + end + context 'true' do + it 'should work with no errors' do + pp = <<-EOS + include '::apt' + apt::source { 'puppetlabs': + ensure => present, + location => 'http://apt.puppetlabs.com', + repos => 'main', + key => '4BD6EC30', + key_server => 'pgp.mit.edu', + pin => true, + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/preferences.d/puppetlabs.pref') do + it { should be_file } + end end end diff --git a/spec/acceptance/apt_spec.rb b/spec/acceptance/apt_spec.rb new file mode 100644 index 0000000..4dbb54a --- /dev/null +++ b/spec/acceptance/apt_spec.rb @@ -0,0 +1,220 @@ +require 'spec_helper_acceptance' + +describe 'apt class' do + + context 'always_apt_update => true' do + it 'should work with no errors' do + pp = <<-EOS + class { 'apt': always_apt_update => true } + EOS + + apply_manifest(pp, :catch_failures => true) do |r| + expect(r.stdout).to match(/apt_update/) + end + end + end + context 'always_apt_update => false' do + it 'should work with no errors' do + pp = <<-EOS + class { 'apt': always_apt_update => false } + EOS + + apply_manifest(pp, :catch_failures => true) do |r| + expect(r.stdout).to_not match(/apt_update/) + end + end + end + + # disable_keys drops in a 99unauth file to ignore keys in + # other files. + context 'disable_keys => true' do + it 'should work with no errors' do + pp = <<-EOS + class { 'apt': disable_keys => true } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/99unauth') do + it { should be_file } + it { should contain 'APT::Get::AllowUnauthenticated 1;' } + end + end + context 'disable_keys => false' do + it 'should work with no errors' do + pp = <<-EOS + class { 'apt': disable_keys => false } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/99unauth') do + it { should_not be_file } + end + end + + # proxy_host sets the proxy to use for transfers. + # proxy_port sets the proxy port to use. + context 'proxy settings' do + it 'should work with no errors' do + pp = <<-EOS + class { 'apt': + proxy_host => 'localhost', + proxy_port => '8080', + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/proxy') do + it { should be_file } + it { should contain 'Acquire::http::Proxy "http://localhost:8080\";' } + end + end + + context 'purge_sources' do + it 'creates a fake apt file' do + shell('touch /etc/apt/sources.list.d/fake.list') + shell('echo "deb fake" >> /etc/apt/sources.list') + end + it 'purge_sources_list and purge_sources_list_d => true' do + pp = <<-EOS + class { 'apt': + purge_sources_list => true, + purge_sources_list_d => true, + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/sources.list') do + it { should_not contain 'deb fake' } + end + + describe file('/etc/apt/sources.list.d/fake.list') do + it { should_not be_file } + end + end + context 'proxy settings' do + it 'should work with no errors' do + pp = <<-EOS + class { 'apt': + proxy_host => 'localhost', + proxy_port => '8080', + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/proxy') do + it { should be_file } + it { should contain 'Acquire::http::Proxy "http://localhost:8080\";' } + end + end + + context 'purge_sources' do + context 'false' do + it 'creates a fake apt file' do + shell('touch /etc/apt/sources.list.d/fake.list') + shell('echo "deb fake" >> /etc/apt/sources.list') + end + it 'purge_sources_list and purge_sources_list_d => false' do + pp = <<-EOS + class { 'apt': + purge_sources_list => false, + purge_sources_list_d => false, + } + EOS + + apply_manifest(pp, :catch_failures => false) + end + + describe file('/etc/apt/sources.list') do + it { should contain 'deb fake' } + end + + describe file('/etc/apt/sources.list.d/fake.list') do + it { should be_file } + end + end + + context 'true' do + it 'creates a fake apt file' do + shell('touch /etc/apt/sources.list.d/fake.list') + shell('echo "deb fake" >> /etc/apt/sources.list') + end + it 'purge_sources_list and purge_sources_list_d => true' do + pp = <<-EOS + class { 'apt': + purge_sources_list => true, + purge_sources_list_d => true, + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/sources.list') do + it { should_not contain 'deb fake' } + end + + describe file('/etc/apt/sources.list.d/fake.list') do + it { should_not be_file } + end + end + end + + context 'purge_preferences_d' do + context 'false' do + it 'creates a preferences file' do + shell('touch /etc/apt/preferences.d/test') + end + + it 'should work with no errors' do + pp = <<-EOS + class { 'apt': purge_preferences_d => false } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/preferences.d/test') do + it { should be_file } + end + end + context 'true' do + it 'creates a preferences file' do + shell('touch /etc/apt/preferences.d/test') + end + + it 'should work with no errors' do + pp = <<-EOS + class { 'apt': purge_preferences_d => true } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/preferences.d/test') do + it { should_not be_file } + end + end + end + + context 'update_timeout' do + context '5000' do + it 'should work with no errors' do + pp = <<-EOS + class { 'apt': update_timeout => '5000' } + EOS + + apply_manifest(pp, :catch_failures => true) + end + end + end +end diff --git a/spec/acceptance/backports_spec.rb b/spec/acceptance/backports_spec.rb new file mode 100644 index 0000000..596be23 --- /dev/null +++ b/spec/acceptance/backports_spec.rb @@ -0,0 +1,43 @@ +require 'spec_helper_acceptance' + +describe 'apt::backports class' do + context 'defaults' do + it 'should work with no errors' do + pp = <<-EOS + class { 'apt::backports': } + EOS + + apply_manifest(pp, :catch_failures => true) + end + end + + context 'release' do + it 'should work with no errors' do + pp = <<-EOS + class { 'apt::backports': release => 'precise' } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/sources.list.d/backports.list') do + it { should be_file } + it { should contain 'precise-backports main universe multiverse restricted' } + end + end + + context 'location' do + it 'should work with no errors' do + pp = <<-EOS + class { 'apt::backports': release => 'precise', location => 'http://localhost/ubuntu' } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/sources.list.d/backports.list') do + it { should be_file } + it { should contain 'deb http://localhost/ubuntu precise-backports main universe multiverse restricted' } + end + end +end diff --git a/spec/acceptance/conf_spec.rb b/spec/acceptance/conf_spec.rb new file mode 100644 index 0000000..98898c2 --- /dev/null +++ b/spec/acceptance/conf_spec.rb @@ -0,0 +1,66 @@ +require 'spec_helper_acceptance' + +describe 'apt::conf define' do + context 'defaults' do + it 'should work with no errors' do + pp = <<-EOS + apt::conf { 'test': + content => 'test', + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50test') do + it { should be_file } + it { should contain 'test' } + end + end + + context 'ensure' do + context 'absent' do + it 'should work with no errors' do + pp = <<-EOS + apt::conf { 'test': + ensure => absent, + content => 'test', + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50test') do + it { should_not be_file } + end + end + end + + context 'priority' do + context '99' do + it 'should work with no errors' do + pp = <<-EOS + apt::conf { 'test': + ensure => present, + content => 'test', + priority => '99', + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/99test') do + it { should be_file } + it { should contain 'test' } + end + end + end + + context 'cleanup' do + it 'deletes 99test' do + shell ('rm -rf /etc/apt/apt.conf.d/99test') + end + end +end diff --git a/spec/acceptance/force_spec.rb b/spec/acceptance/force_spec.rb new file mode 100644 index 0000000..4f74ff0 --- /dev/null +++ b/spec/acceptance/force_spec.rb @@ -0,0 +1,19 @@ +require 'spec_helper_acceptance' + +describe 'apt::force define' do + context 'defaults' do + it 'should work with no errors' do + pp = <<-EOS + include apt + apt::force { 'vim': } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe package('vim') do + it { should be_installed } + end + end + +end diff --git a/spec/acceptance/pin_spec.rb b/spec/acceptance/pin_spec.rb new file mode 100644 index 0000000..b5a0044 --- /dev/null +++ b/spec/acceptance/pin_spec.rb @@ -0,0 +1,266 @@ +require 'spec_helper_acceptance' + +describe 'apt::pin define' do + context 'defaults' do + it 'should work with no errors' do + pp = <<-EOS + include apt + apt::pin { 'vim-puppet': } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/preferences.d/vim-puppet.pref') do + it { should be_file } + it { should contain 'Pin: release a=vim-puppet' } + end + end + + context 'ensure' do + context 'present' do + it 'should work with no errors' do + pp = <<-EOS + include apt + apt::pin { 'vim-puppet': ensure => present } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/preferences.d/vim-puppet.pref') do + it { should be_file } + it { should contain 'Pin: release a=vim-puppet' } + end + end + + context 'absent' do + it 'should work with no errors' do + pp = <<-EOS + include apt + apt::pin { 'vim-puppet': ensure => absent } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/preferences.d/vim-puppet.pref') do + it { should_not be_file } + end + end + end + + context 'order' do + context '99' do + it 'should work with no errors' do + pp = <<-EOS + include apt + apt::pin { 'vim-puppet': + ensure => present, + order => '99', + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/preferences.d/99-vim-puppet.pref') do + it { should be_file } + it { should contain 'Pin: release a=vim-puppet' } + end + end + end + + context 'packages' do + context 'test' do + it 'should work with no errors' do + pp = <<-EOS + include apt + apt::pin { 'vim-puppet': + ensure => present, + packages => 'test', + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/preferences.d/vim-puppet.pref') do + it { should be_file } + it { should contain 'Package: test' } + it { should contain 'Pin: release a=vim-puppet' } + end + end + end + + context 'release' do + context 'testrelease' do + it 'should work with no errors' do + pp = <<-EOS + include apt + apt::pin { 'vim-puppet': + ensure => present, + release => 'testrelease', + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/preferences.d/vim-puppet.pref') do + it { should be_file } + it { should contain 'Pin: release a=testrelease' } + end + end + end + + context 'origin' do + context 'testrelease' do + it 'should work with no errors' do + pp = <<-EOS + include apt + apt::pin { 'vim-puppet': + ensure => present, + origin => 'testrelease', + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/preferences.d/vim-puppet.pref') do + it { should be_file } + it { should contain 'Pin: origin "testrelease"' } + end + end + end + + context 'version' do + context '1.0.0' do + it 'should work with no errors' do + pp = <<-EOS + include apt + apt::pin { 'vim-puppet': + ensure => present, + packages => 'test', + version => '1.0.0', + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/preferences.d/vim-puppet.pref') do + it { should be_file } + it { should contain 'Package: test' } + it { should contain 'Pin: version 1.0.0' } + end + end + end + + context 'codename' do + context 'testname' do + it 'should work with no errors' do + pp = <<-EOS + include apt + apt::pin { 'vim-puppet': + ensure => present, + codename => 'testname', + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/preferences.d/vim-puppet.pref') do + it { should be_file } + it { should contain 'Pin: release n=testname' } + end + end + end + + context 'release_version' do + context '1.1.1' do + it 'should work with no errors' do + pp = <<-EOS + include apt + apt::pin { 'vim-puppet': + ensure => present, + release_version => '1.1.1', + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/preferences.d/vim-puppet.pref') do + it { should be_file } + it { should contain 'Pin: release v=1.1.1' } + end + end + end + + context 'component' do + context 'testcomponent' do + it 'should work with no errors' do + pp = <<-EOS + include apt + apt::pin { 'vim-puppet': + ensure => present, + component => 'testcomponent', + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/preferences.d/vim-puppet.pref') do + it { should be_file } + it { should contain 'Pin: release c=testcomponent' } + end + end + end + + context 'originator' do + context 'testorigin' do + it 'should work with no errors' do + pp = <<-EOS + include apt + apt::pin { 'vim-puppet': + ensure => present, + originator => 'testorigin', + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/preferences.d/vim-puppet.pref') do + it { should be_file } + it { should contain 'Pin: release o=testorigin' } + end + end + end + + context 'label' do + context 'testlabel' do + it 'should work with no errors' do + pp = <<-EOS + include apt + apt::pin { 'vim-puppet': + ensure => present, + label => 'testlabel', + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/preferences.d/vim-puppet.pref') do + it { should be_file } + it { should contain 'Pin: release l=testlabel' } + end + end + end + +end diff --git a/spec/acceptance/release_spec.rb b/spec/acceptance/release_spec.rb new file mode 100644 index 0000000..44491e3 --- /dev/null +++ b/spec/acceptance/release_spec.rb @@ -0,0 +1,20 @@ +require 'spec_helper_acceptance' + +describe 'apt::release class' do + context 'release_id' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::release': release_id => 'precise', } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/01release') do + it { should be_file } + it { should contain 'APT::Default-Release "precise";' } + end + end + +end diff --git a/spec/acceptance/unattended_upgrade_spec.rb b/spec/acceptance/unattended_upgrade_spec.rb new file mode 100644 index 0000000..287e5ec --- /dev/null +++ b/spec/acceptance/unattended_upgrade_spec.rb @@ -0,0 +1,558 @@ +require 'spec_helper_acceptance' + +describe 'apt::unattended_upgrades class' do + context 'defaults' do + it 'should work with no errors' do + pp = <<-EOS + include apt + include apt::unattended_upgrades + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/10periodic') do + it { should be_file } + end + describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do + it { should be_file } + end + end + + context 'origins' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + origins => ['${distro_id}:${distro_codename}-test'], + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do + it { should be_file } + it { should contain '${distro_id}:${distro_codename}-test' } + end + end + + context 'blacklist' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + blacklist => ['puppet'] + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do + it { should be_file } + it { should contain 'puppet' } + end + end + + context 'update' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + update => '99' + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/10periodic') do + it { should be_file } + it { should contain 'APT::Periodic::Update-Package-Lists "99";' } + end + end + + context 'download' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + download => '99' + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/10periodic') do + it { should be_file } + it { should contain 'APT::Periodic::Download-Upgradeable-Packages "99";' } + end + end + + context 'upgrade' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + upgrade => '99' + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/10periodic') do + it { should be_file } + it { should contain 'APT::Periodic::Unattended-Upgrade "99";' } + end + end + + context 'autoclean' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + autoclean => '99' + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/10periodic') do + it { should be_file } + it { should contain 'APT::Periodic::AutocleanInterval "99";' } + end + end + + context 'auto_fix' do + context 'true' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + auto_fix => true + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do + it { should be_file } + it { should contain 'Unattended-Upgrade::AutoFixInterruptedDpkg "true";' } + end + end + + context 'false' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + auto_fix => false + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do + it { should be_file } + it { should contain 'Unattended-Upgrade::AutoFixInterruptedDpkg "false";' } + end + end + end + + context 'minimal_steps' do + context 'true' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + minimal_steps => true + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do + it { should be_file } + it { should contain 'Unattended-Upgrade::MinimalSteps "true";' } + end + end + + context 'false' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + minimal_steps => false + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do + it { should be_file } + it { should contain 'Unattended-Upgrade::MinimalSteps "false";' } + end + end + end + + context 'install_on_shutdown' do + context 'true' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + install_on_shutdown => true + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do + it { should be_file } + it { should contain 'Unattended-Upgrade::InstallOnShutdown "true";' } + end + end + + context 'false' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + install_on_shutdown => false + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do + it { should be_file } + it { should contain 'Unattended-Upgrade::InstallOnShutdown "false";' } + end + end + end + + context 'mail_to' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + mail_to => 'test@example.com' + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do + it { should be_file } + it { should contain 'Unattended-Upgrade::Mail "test@example.com";' } + end + end + + context 'mail_only_on_error' do + context 'true' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + mail_to => 'test@example.com', + mail_only_on_error => true + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do + it { should be_file } + it { should contain 'Unattended-Upgrade::MailOnlyOnError "true";' } + end + end + + context 'false' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + mail_to => 'test@example.com', + mail_only_on_error => false, + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do + it { should be_file } + it { should contain 'Unattended-Upgrade::MailOnlyOnError "false";' } + end + end + + context 'mail_to missing' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + mail_only_on_error => true, + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do + it { should be_file } + it { should_not contain 'Unattended-Upgrade::MailOnlyOnError "true";' } + end + end + end + + context 'remove_unused' do + context 'true' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + remove_unused => true + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do + it { should be_file } + it { should contain 'Unattended-Upgrade::Remove-Unused-Dependencies "true";' } + end + end + + context 'false' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + remove_unused => false, + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do + it { should be_file } + it { should contain 'Unattended-Upgrade::Remove-Unused-Dependencies "false";' } + end + end + end + + context 'auto_reboot' do + context 'true' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + auto_reboot => true + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do + it { should be_file } + it { should contain 'Unattended-Upgrade::Automatic-Reboot "true";' } + end + end + + context 'false' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + auto_reboot => false, + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do + it { should be_file } + it { should contain 'Unattended-Upgrade::Automatic-Reboot "false";' } + end + end + end + + context 'dl_limit' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + dl_limit => '99' + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/50unattended-upgrades') do + it { should be_file } + it { should contain 'Acquire::http::Dl-Limit "99"' } + end + end + + context 'enable' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + enable => '2' + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/10periodic') do + it { should be_file } + it { should contain 'APT::Periodic::Enable "2"' } + end + end + + context 'backup_interval' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + backup_interval => '2' + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/10periodic') do + it { should be_file } + it { should contain 'APT::Periodic::BackUpArchiveInterval "2";' } + end + end + + context 'backup_level' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + backup_level => '2' + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/10periodic') do + it { should be_file } + it { should contain 'APT::Periodic::BackUpLevel "2";' } + end + end + + context 'max_age' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + max_age => '2' + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/10periodic') do + it { should be_file } + it { should contain 'APT::Periodic::MaxAge "2";' } + end + end + + context 'min_age' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + min_age => '2' + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/10periodic') do + it { should be_file } + it { should contain 'APT::Periodic::MinAge "2";' } + end + end + + context 'max_size' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + max_size => '2' + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/10periodic') do + it { should be_file } + it { should contain 'APT::Periodic::MaxSize "2";' } + end + end + + context 'download_delta' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + download_delta => '2' + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/10periodic') do + it { should be_file } + it { should contain 'APT::Periodic::Download-Upgradeable-Packages-Debdelta "2";' } + end + end + + context 'verbose' do + it 'should work with no errors' do + pp = <<-EOS + include apt + class { 'apt::unattended_upgrades': + verbose => '2' + } + EOS + + apply_manifest(pp, :catch_failures => true) + end + + describe file('/etc/apt/apt.conf.d/10periodic') do + it { should be_file } + it { should contain 'APT::Periodic::Verbose "2";' } + end + end + +end