This work adds a test for every parameter in every class/define in apt.
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
}
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
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
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
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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+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