Added modules
This commit is contained in:
parent
c53c931217
commit
59ec520742
646 changed files with 35182 additions and 0 deletions
36
modules/apt/spec/acceptance/apt_builddep_spec.rb
Normal file
36
modules/apt/spec/acceptance/apt_builddep_spec.rb
Normal file
|
@ -0,0 +1,36 @@
|
|||
require 'spec_helper_acceptance'
|
||||
|
||||
describe 'apt::builddep', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
|
||||
|
||||
context 'reset' do
|
||||
it 'removes packages' do
|
||||
shell('apt-get -y remove znc')
|
||||
shell('apt-get -y remove g++')
|
||||
end
|
||||
end
|
||||
|
||||
context 'apt::builddep' do
|
||||
it 'should work with no errors' do
|
||||
pp = <<-EOS
|
||||
include '::apt'
|
||||
apt::builddep { 'znc': }
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
end
|
||||
|
||||
describe 'should install g++ as a dependency' do
|
||||
describe package('g++') do
|
||||
it { should be_installed }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'reset' do
|
||||
it 'removes packages' do
|
||||
shell('apt-get -y remove znc')
|
||||
shell('apt-get -y remove g++')
|
||||
end
|
||||
end
|
||||
|
||||
end
|
446
modules/apt/spec/acceptance/apt_key_provider_spec.rb
Normal file
446
modules/apt/spec/acceptance/apt_key_provider_spec.rb
Normal file
|
@ -0,0 +1,446 @@
|
|||
require 'spec_helper_acceptance'
|
||||
|
||||
PUPPETLABS_GPG_KEY_ID = '4BD6EC30'
|
||||
PUPPETLABS_APT_URL = 'apt.puppetlabs.com'
|
||||
PUPPETLABS_GPG_KEY_FILE = 'pubkey.gpg'
|
||||
CENTOS_GPG_KEY_ID = 'C105B9DE'
|
||||
CENTOS_REPO_URL = 'ftp.cvut.cz/centos'
|
||||
CENTOS_GPG_KEY_FILE = 'RPM-GPG-KEY-CentOS-6'
|
||||
|
||||
describe 'apt_key', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
|
||||
before(:each) do
|
||||
shell("apt-key del #{PUPPETLABS_GPG_KEY_ID}",
|
||||
:acceptable_exit_codes => [0,1,2])
|
||||
end
|
||||
|
||||
describe 'default options' do
|
||||
key_versions = {
|
||||
'32bit key id' => '4BD6EC30',
|
||||
'64bit key id' => '1054B7A24BD6EC30',
|
||||
'32bit lowercase key id' => '4bd6ec30',
|
||||
'64bit lowercase key id' => '1054b7a24bd6ec30',
|
||||
'0x formatted 32bit key id' => '0x4BD6EC30',
|
||||
'0x formatted 64bit key id' => '0x1054B7A24BD6EC30',
|
||||
'0x formatted 32bit lowercase key id' => '0x4bd6ec30',
|
||||
'0x formatted 64bit lowercase key id' => '0x1054b7a24bd6ec30',
|
||||
}
|
||||
|
||||
key_versions.each do |key, value|
|
||||
context "#{key}" do
|
||||
it 'works' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '#{value}',
|
||||
ensure => 'present',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
expect(apply_manifest(pp, :catch_failures => true).exit_code).to be_zero
|
||||
shell("apt-key list | grep #{PUPPETLABS_GPG_KEY_ID}")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'invalid length key id' do
|
||||
it 'fails' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '4B7A24BD6EC30',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :expect_failures => true) do |r|
|
||||
expect(r.stderr).to match(/Valid values match/)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'ensure =>' do
|
||||
context 'absent' do
|
||||
it 'is removed' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '#{PUPPETLABS_GPG_KEY_ID}',
|
||||
ensure => 'absent',
|
||||
}
|
||||
EOS
|
||||
|
||||
# Install the key first
|
||||
shell("apt-key adv --keyserver keyserver.ubuntu.com \
|
||||
--recv-keys #{PUPPETLABS_GPG_KEY_ID}")
|
||||
shell("apt-key list | grep #{PUPPETLABS_GPG_KEY_ID}")
|
||||
|
||||
# Time to remove it using Puppet
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
expect(apply_manifest(pp, :catch_failures => true).exit_code).to be_zero
|
||||
|
||||
shell("apt-key list | grep #{PUPPETLABS_GPG_KEY_ID}",
|
||||
:acceptable_exit_codes => [1])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'content =>' do
|
||||
context 'puppetlabs gpg key' do
|
||||
it 'works' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '#{PUPPETLABS_GPG_KEY_ID}',
|
||||
ensure => 'present',
|
||||
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
|
||||
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
expect(apply_manifest(pp, :catch_failures => true).exit_code).to be_zero
|
||||
shell("apt-key list | grep #{PUPPETLABS_GPG_KEY_ID}")
|
||||
end
|
||||
end
|
||||
|
||||
context 'bogus key' do
|
||||
it 'fails' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '#{PUPPETLABS_GPG_KEY_ID}',
|
||||
ensure => 'present',
|
||||
content => 'For posterity: such content, much bogus, wow',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :expect_failures => true) do |r|
|
||||
expect(r.stderr).to match(/no valid OpenPGP data found/)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'server =>' do
|
||||
context 'pgp.mit.edu' do
|
||||
it 'works' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '#{PUPPETLABS_GPG_KEY_ID}',
|
||||
ensure => 'present',
|
||||
server => 'pgp.mit.edu',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
expect(apply_manifest(pp, :catch_failures => true).exit_code).to be_zero
|
||||
shell("apt-key list | grep #{PUPPETLABS_GPG_KEY_ID}")
|
||||
end
|
||||
end
|
||||
|
||||
context 'nonexistant.key.server' do
|
||||
it 'fails' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '#{PUPPETLABS_GPG_KEY_ID}',
|
||||
ensure => 'present',
|
||||
server => 'nonexistant.key.server',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :expect_failures => true) do |r|
|
||||
expect(r.stderr).to match(/(Host not found|Couldn't resolve host)/)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'source =>' do
|
||||
context 'http://' do
|
||||
it 'works' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '#{PUPPETLABS_GPG_KEY_ID}',
|
||||
ensure => 'present',
|
||||
source => 'http://#{PUPPETLABS_APT_URL}/#{PUPPETLABS_GPG_KEY_FILE}',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
expect(apply_manifest(pp, :catch_failures => true).exit_code).to be_zero
|
||||
shell("apt-key list | grep #{PUPPETLABS_GPG_KEY_ID}")
|
||||
end
|
||||
|
||||
it 'fails with a 404' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '#{PUPPETLABS_GPG_KEY_ID}',
|
||||
ensure => 'present',
|
||||
source => 'http://#{PUPPETLABS_APT_URL}/herpderp.gpg',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :expect_failures => true) do |r|
|
||||
expect(r.stderr).to match(/404 Not Found/)
|
||||
end
|
||||
end
|
||||
|
||||
it 'fails with a socket error' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '#{PUPPETLABS_GPG_KEY_ID}',
|
||||
ensure => 'present',
|
||||
source => 'http://apt.puppetlabss.com/herpderp.gpg',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :expect_failures => true) do |r|
|
||||
expect(r.stderr).to match(/could not resolve/)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'ftp://' do
|
||||
before(:each) do
|
||||
shell("apt-key del #{CENTOS_GPG_KEY_ID}",
|
||||
:acceptable_exit_codes => [0,1,2])
|
||||
end
|
||||
|
||||
it 'works' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'CentOS 6':
|
||||
id => '#{CENTOS_GPG_KEY_ID}',
|
||||
ensure => 'present',
|
||||
source => 'ftp://#{CENTOS_REPO_URL}/#{CENTOS_GPG_KEY_FILE}',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
expect(apply_manifest(pp, :catch_failures => true).exit_code).to be_zero
|
||||
shell("apt-key list | grep #{CENTOS_GPG_KEY_ID}")
|
||||
end
|
||||
|
||||
it 'fails with a 550' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'CentOS 6':
|
||||
id => '#{CENTOS_GPG_KEY_ID}',
|
||||
ensure => 'present',
|
||||
source => 'ftp://#{CENTOS_REPO_URL}/herpderp.gpg',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :expect_failures => true) do |r|
|
||||
expect(r.stderr).to match(/550 Failed to open/)
|
||||
end
|
||||
end
|
||||
|
||||
it 'fails with a socket error' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '#{PUPPETLABS_GPG_KEY_ID}',
|
||||
ensure => 'present',
|
||||
source => 'ftp://apt.puppetlabss.com/herpderp.gpg',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :expect_failures => true) do |r|
|
||||
expect(r.stderr).to match(/could not resolve/)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'https://' do
|
||||
it 'works' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '#{PUPPETLABS_GPG_KEY_ID}',
|
||||
ensure => 'present',
|
||||
source => 'https://#{PUPPETLABS_APT_URL}/#{PUPPETLABS_GPG_KEY_FILE}',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
expect(apply_manifest(pp, :catch_failures => true).exit_code).to be_zero
|
||||
shell("apt-key list | grep #{PUPPETLABS_GPG_KEY_ID}")
|
||||
end
|
||||
|
||||
it 'fails with a 404' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '4BD6EC30',
|
||||
ensure => 'present',
|
||||
source => 'https://#{PUPPETLABS_APT_URL}/herpderp.gpg',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :expect_failures => true) do |r|
|
||||
expect(r.stderr).to match(/404 Not Found/)
|
||||
end
|
||||
end
|
||||
|
||||
it 'fails with a socket error' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '4BD6EC30',
|
||||
ensure => 'present',
|
||||
source => 'https://apt.puppetlabss.com/herpderp.gpg',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :expect_failures => true) do |r|
|
||||
expect(r.stderr).to match(/could not resolve/)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context '/path/that/exists' do
|
||||
before(:each) do
|
||||
shell("curl -o /tmp/puppetlabs-pubkey.gpg \
|
||||
http://#{PUPPETLABS_APT_URL}/#{PUPPETLABS_GPG_KEY_FILE}")
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
shell('rm /tmp/puppetlabs-pubkey.gpg')
|
||||
end
|
||||
|
||||
it 'works' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '4BD6EC30',
|
||||
ensure => 'present',
|
||||
source => '/tmp/puppetlabs-pubkey.gpg',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
expect(apply_manifest(pp, :catch_failures => true).exit_code).to be_zero
|
||||
shell("apt-key list | grep #{PUPPETLABS_GPG_KEY_ID}")
|
||||
end
|
||||
end
|
||||
|
||||
context '/path/that/does/not/exist' do
|
||||
it 'fails' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '#{PUPPETLABS_GPG_KEY_ID}',
|
||||
ensure => 'present',
|
||||
source => '/tmp/totally_bogus.file',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :expect_failures => true) do |r|
|
||||
expect(r.stderr).to match(/does not exist/)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context '/path/that/exists/with/bogus/content' do
|
||||
before(:each) do
|
||||
shell('echo "here be dragons" > /tmp/fake-key.gpg')
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
shell('rm /tmp/fake-key.gpg')
|
||||
end
|
||||
it 'fails' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '#{PUPPETLABS_GPG_KEY_ID}',
|
||||
ensure => 'present',
|
||||
source => '/tmp/fake-key.gpg',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :expect_failures => true) do |r|
|
||||
expect(r.stderr).to match(/no valid OpenPGP data found/)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'keyserver_options =>' do
|
||||
context 'debug' do
|
||||
it 'works' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '#{PUPPETLABS_GPG_KEY_ID}',
|
||||
ensure => 'present',
|
||||
keyserver_options => 'debug',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
expect(apply_manifest(pp, :catch_failures => true).exit_code).to be_zero
|
||||
shell("apt-key list | grep #{PUPPETLABS_GPG_KEY_ID}")
|
||||
end
|
||||
|
||||
it 'fails on invalid options' do
|
||||
pp = <<-EOS
|
||||
apt_key { 'puppetlabs':
|
||||
id => '#{PUPPETLABS_GPG_KEY_ID}',
|
||||
ensure => 'present',
|
||||
keyserver_options => 'this is totally bonkers',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :expect_failures => true) do |r|
|
||||
expect(r.stderr).to match(/--keyserver-options this is totally/)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
200
modules/apt/spec/acceptance/apt_key_spec.rb
Normal file
200
modules/apt/spec/acceptance/apt_key_spec.rb
Normal file
|
@ -0,0 +1,200 @@
|
|||
require 'spec_helper_acceptance'
|
||||
|
||||
describe 'apt::key', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
|
||||
context 'apt::key' do
|
||||
it 'should work with no errors' do
|
||||
pp = <<-EOS
|
||||
include '::apt'
|
||||
apt::key { 'puppetlabs':
|
||||
key => '4BD6EC30',
|
||||
key_server => 'pgp.mit.edu',
|
||||
}
|
||||
|
||||
apt::key { 'jenkins':
|
||||
key => 'D50582E6',
|
||||
key_source => 'http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key',
|
||||
}
|
||||
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')
|
||||
end
|
||||
it 'finds jenkins key' do
|
||||
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
|
||||
end
|
||||
|
||||
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 '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
|
||||
|
||||
mQINBEw3u0ABEAC1+aJQpU59fwZ4mxFjqNCgfZgDhONDSYQFMRnYC1dzBpJHzI6b
|
||||
fUBQeaZ8rh6N4kZ+wq1eL86YDXkCt4sCvNTP0eF2XaOLbmxtV9bdpTIBep9bQiKg
|
||||
5iZaz+brUZlFk/MyJ0Yz//VQ68N1uvXccmD6uxQsVO+gx7rnarg/BGuCNaVtGwy+
|
||||
S98g8Begwxs9JmGa8pMCcSxtC7fAfAEZ02cYyrw5KfBvFI3cHDdBqrEJQKwKeLKY
|
||||
GHK3+H1TM4ZMxPsLuR/XKCbvTyl+OCPxU2OxPjufAxLlr8BWUzgJv6ztPe9imqpH
|
||||
Ppp3KuLFNorjPqWY5jSgKl94W/CO2x591e++a1PhwUn7iVUwVVe+mOEWnK5+Fd0v
|
||||
VMQebYCXS+3dNf6gxSvhz8etpw20T9Ytg4EdhLvCJRV/pYlqhcq+E9le1jFOHOc0
|
||||
Nc5FQweUtHGaNVyn8S1hvnvWJBMxpXq+Bezfk3X8PhPT/l9O2lLFOOO08jo0OYiI
|
||||
wrjhMQQOOSZOb3vBRvBZNnnxPrcdjUUm/9cVB8VcgI5KFhG7hmMCwH70tpUWcZCN
|
||||
NlI1wj/PJ7Tlxjy44f1o4CQ5FxuozkiITJvh9CTg+k3wEmiaGz65w9jRl9ny2gEl
|
||||
f4CR5+ba+w2dpuDeMwiHJIs5JsGyJjmA5/0xytB7QvgMs2q25vWhygsmUQARAQAB
|
||||
tEdQdXBwZXQgTGFicyBSZWxlYXNlIEtleSAoUHVwcGV0IExhYnMgUmVsZWFzZSBL
|
||||
ZXkpIDxpbmZvQHB1cHBldGxhYnMuY29tPokCPgQTAQIAKAUCTDe7QAIbAwUJA8Jn
|
||||
AAYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQEFS3okvW7DAZaw//aLmE/eob
|
||||
pXpIUVyCUWQxEvPtM/h/SAJsG3KoHN9u216ews+UHsL/7F91ceVXQQdD2e8CtYWF
|
||||
eLNM0RSM9i/KM60g4CvIQlmNqdqhi1HsgGqInZ72/XLAXun0gabfC36rLww2kel+
|
||||
aMpRf58SrSuskY321NnMEJl4OsHV2hfNtAIgw2e/zm9RhoMpGKxoHZCvFhnP7u2M
|
||||
2wMq7iNDDWb6dVsLpzdlVf242zCbubPCxxQXOpA56rzkUPuJ85mdVw4i19oPIFIZ
|
||||
VL5owit1SxCOxBg4b8oaMS36hEl3qtZG834rtLfcqAmqjhx6aJuJLOAYN84QjDEU
|
||||
3NI5IfNRMvluIeTcD4Dt5FCYahN045tW1Rc6s5GAR8RW45GYwQDzG+kkkeeGxwEh
|
||||
qCW7nOHuwZIoVJufNhd28UFn83KGJHCQt4NBBr3K5TcY6bDQEIrpSplWSDBbd3p1
|
||||
IaoZY1WSDdP9OTVOSbsz0JiglWmUWGWCdd/CMSW/D7/3VUOJOYRDwptvtSYcjJc8
|
||||
1UV+1zB+rt5La/OWe4UOORD+jU1ATijQEaFYxBbqBBkFboAEXq9btRQyegqk+eVp
|
||||
HhzacP5NYFTMThvHuTapNytcCso5au/cMywqCgY1DfcMJyjocu4bCtrAd6w4kGKN
|
||||
MUdwNDYQulHZDI+UjJInhramyngdzZLjdeGJARwEEAECAAYFAkw3wEYACgkQIVr+
|
||||
UOQUcDKvEwgAoBuOPnPioBwYp8oHVPTo/69cJn1225kfraUYGebCcrRwuoKd8Iyh
|
||||
R165nXYJmD8yrAFBk8ScUVKsQ/pSnqNrBCrlzQD6NQvuIWVFegIdjdasrWX6Szj+
|
||||
N1OllbzIJbkE5eo0WjCMEKJVI/GTY2AnTWUAm36PLQC5HnSATykqwxeZDsJ/s8Rc
|
||||
kd7+QN5sBVytG3qb45Q7jLJpLcJO6KYH4rz9ZgN7LzyyGbu9DypPrulADG9OrL7e
|
||||
lUnsGDG4E1M8Pkgk9Xv9MRKao1KjYLD5zxOoVtdeoKEQdnM+lWMJin1XvoqJY7FT
|
||||
DJk6o+cVqqHkdKL+sgsscFVQljgCEd0EgIkCHAQQAQgABgUCTPlA6QAKCRBcE9bb
|
||||
kwUuAxdYD/40FxAeNCYByxkr/XRT0gFT+NCjPuqPWCM5tf2NIhSapXtb2+32WbAf
|
||||
DzVfqWjC0G0RnQBve+vcjpY4/rJu4VKIDGIT8CtnKOIyEcXTNFOehi65xO4ypaei
|
||||
BPSb3ip3P0of1iZZDQrNHMW5VcyL1c+PWT/6exXSGsePtO/89tc6mupqZtC05f5Z
|
||||
XG4jswMF0U6Q5s3S0tG7Y+oQhKNFJS4sH4rHe1o5CxKwNRSzqccA0hptKy3MHUZ2
|
||||
+zeHzuRdRWGjb2rUiVxnIvPPBGxF2JHhB4ERhGgbTxRZ6wZbdW06BOE8r7pGrUpU
|
||||
fCw/WRT3gGXJHpGPOzFAvr3Xl7VcDUKTVmIajnpd3SoyD1t2XsvJlSQBOWbViucH
|
||||
dvE4SIKQ77vBLRlZIoXXVb6Wu7Vq+eQs1ybjwGOhnnKjz8llXcMnLzzN86STpjN4
|
||||
qGTXQy/E9+dyUP1sXn3RRwb+ZkdI77m1YY95QRNgG/hqh77IuWWg1MtTSgQnP+F2
|
||||
7mfo0/522hObhdAe73VO3ttEPiriWy7tw3bS9daP2TAVbYyFqkvptkBb1OXRUSzq
|
||||
UuWjBmZ35UlXjKQsGeUHlOiEh84aondF90A7gx0X/ktNIPRrfCGkHJcDu+HVnR7x
|
||||
Kk+F0qb9+/pGLiT3rqeQTr8fYsb4xLHT7uEg1gVFB1g0kd+RQHzV74kCPgQTAQIA
|
||||
KAIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AFAk/x5PoFCQtIMjoACgkQEFS3
|
||||
okvW7DAIKQ/9HvZyf+LHVSkCk92Kb6gckniin3+5ooz67hSr8miGBfK4eocqQ0H7
|
||||
bdtWjAILzR/IBY0xj6OHKhYP2k8TLc7QhQjt0dRpNkX+Iton2AZryV7vUADreYz4
|
||||
4B0bPmhiE+LL46ET5IThLKu/KfihzkEEBa9/t178+dO9zCM2xsXaiDhMOxVE32gX
|
||||
vSZKP3hmvnK/FdylUY3nWtPedr+lHpBLoHGaPH7cjI+MEEugU3oAJ0jpq3V8n4w0
|
||||
jIq2V77wfmbD9byIV7dXcxApzciK+ekwpQNQMSaceuxLlTZKcdSqo0/qmS2A863Y
|
||||
ZQ0ZBe+Xyf5OI33+y+Mry+vl6Lre2VfPm3udgR10E4tWXJ9Q2CmG+zNPWt73U1FD
|
||||
7xBI7PPvOlyzCX4QJhy2Fn/fvzaNjHp4/FSiCw0HvX01epcersyun3xxPkRIjwwR
|
||||
M9m5MJ0o4hhPfa97zibXSh8XXBnosBQxeg6nEnb26eorVQbqGx0ruu/W2m5/JpUf
|
||||
REsFmNOBUbi8xlKNS5CZypH3Zh88EZiTFolOMEh+hT6s0l6znBAGGZ4m/Unacm5y
|
||||
DHmg7unCk4JyVopQ2KHMoqG886elu+rm0ASkhyqBAk9sWKptMl3NHiYTRE/m9VAk
|
||||
ugVIB2pi+8u84f+an4Hml4xlyijgYu05pqNvnLRyJDLd61hviLC8GYU=
|
||||
=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
|
138
modules/apt/spec/acceptance/apt_ppa_spec.rb
Normal file
138
modules/apt/spec/acceptance/apt_ppa_spec.rb
Normal file
|
@ -0,0 +1,138 @@
|
|||
require 'spec_helper_acceptance'
|
||||
|
||||
if fact('operatingsystem') == 'Ubuntu'
|
||||
describe 'apt::ppa', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
|
||||
|
||||
context 'reset' do
|
||||
it 'removes ppa' do
|
||||
shell('rm /etc/apt/sources.list.d/canonical-kernel-team-ppa-*', :acceptable_exit_codes => [0,1,2])
|
||||
shell('rm /etc/apt/sources.list.d/raravena80-collectd5-*', :acceptable_exit_codes => [0,1,2])
|
||||
end
|
||||
end
|
||||
|
||||
context 'adding a ppa that doesnt exist' do
|
||||
it 'should work with no errors' do
|
||||
pp = <<-EOS
|
||||
include '::apt'
|
||||
apt::ppa { 'ppa:canonical-kernel-team/ppa': }
|
||||
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
|
||||
|
||||
context 'reading a removed ppa.' do
|
||||
it 'setup' do
|
||||
# This leaves a blank file
|
||||
shell('echo > /etc/apt/sources.list.d/raravena80-collectd5-$(lsb_release -c -s).list')
|
||||
end
|
||||
|
||||
it 'should read it successfully' do
|
||||
pp = <<-EOS
|
||||
include '::apt'
|
||||
apt::ppa { 'ppa:raravena80/collectd5': }
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
end
|
||||
end
|
||||
|
||||
context 'reset' do
|
||||
it 'removes added ppas' do
|
||||
shell('rm /etc/apt/sources.list.d/canonical-kernel-team-ppa-*')
|
||||
shell('rm /etc/apt/sources.list.d/raravena80-collectd5-*')
|
||||
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', :unless => default[:platform].match(/10\.04/) 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
|
||||
end
|
326
modules/apt/spec/acceptance/apt_source_spec.rb
Normal file
326
modules/apt/spec/acceptance/apt_source_spec.rb
Normal file
|
@ -0,0 +1,326 @@
|
|||
require 'spec_helper_acceptance'
|
||||
|
||||
describe 'apt::source', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
|
||||
|
||||
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 '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',
|
||||
release => 'precise',
|
||||
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 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 '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
|
||||
|
||||
end
|
280
modules/apt/spec/acceptance/apt_spec.rb
Normal file
280
modules/apt/spec/acceptance/apt_spec.rb
Normal file
|
@ -0,0 +1,280 @@
|
|||
require 'spec_helper_acceptance'
|
||||
|
||||
describe 'apt class', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
|
||||
|
||||
context 'reset' do
|
||||
it 'fixes the sources.list' do
|
||||
shell('cp /etc/apt/sources.list /tmp')
|
||||
end
|
||||
end
|
||||
|
||||
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 => '7042',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
end
|
||||
|
||||
describe file('/etc/apt/apt.conf.d/01proxy') do
|
||||
it { should be_file }
|
||||
it { should contain 'Acquire::http::Proxy "http://localhost:7042\";' }
|
||||
end
|
||||
describe file('/etc/apt/apt.conf.d/proxy') do
|
||||
it { should_not be_file }
|
||||
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 => '7042',
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
end
|
||||
|
||||
describe file('/etc/apt/apt.conf.d/01proxy') do
|
||||
it { should be_file }
|
||||
it { should contain 'Acquire::http::Proxy "http://localhost:7042\";' }
|
||||
end
|
||||
describe file('/etc/apt/apt.conf.d/proxy') do
|
||||
it { should_not be_file }
|
||||
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' do
|
||||
context 'false' do
|
||||
it 'creates a preferences file' do
|
||||
shell("echo 'original' > /etc/apt/preferences")
|
||||
end
|
||||
|
||||
it 'should work with no errors' do
|
||||
pp = <<-EOS
|
||||
class { 'apt': purge_preferences => false }
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
end
|
||||
|
||||
describe file('/etc/apt/preferences') do
|
||||
it { should be_file }
|
||||
it 'is not managed by Puppet' do
|
||||
shell("grep 'original' /etc/apt/preferences", {:acceptable_exit_codes => 0})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'true' do
|
||||
it 'creates a preferences file' do
|
||||
shell('touch /etc/apt/preferences')
|
||||
end
|
||||
|
||||
it 'should work with no errors' do
|
||||
pp = <<-EOS
|
||||
class { 'apt': purge_preferences => true }
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
end
|
||||
|
||||
describe file('/etc/apt/preferences') 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
|
||||
|
||||
context 'reset' do
|
||||
it 'fixes the sources.list' do
|
||||
shell('cp /tmp/sources.list /etc/apt')
|
||||
end
|
||||
end
|
||||
|
||||
end
|
73
modules/apt/spec/acceptance/backports_spec.rb
Normal file
73
modules/apt/spec/acceptance/backports_spec.rb
Normal file
|
@ -0,0 +1,73 @@
|
|||
require 'spec_helper_acceptance'
|
||||
|
||||
codename = fact('lsbdistcodename')
|
||||
case fact('operatingsystem')
|
||||
when 'Ubuntu'
|
||||
repos = 'main universe multiverse restricted'
|
||||
when 'Debian'
|
||||
repos = 'main contrib non-free'
|
||||
end
|
||||
|
||||
describe 'apt::backports class', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) 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 => '#{codename}' }
|
||||
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 "#{codename}-backports #{repos}" }
|
||||
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 #{repos}" }
|
||||
end
|
||||
end
|
||||
|
||||
context 'pin_priority' do
|
||||
it 'should work with no errors' do
|
||||
pp = <<-EOS
|
||||
class { 'apt::backports': pin_priority => 500, }
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
end
|
||||
describe file('/etc/apt/preferences.d/backports.pref') do
|
||||
it { should be_file }
|
||||
it { should contain "Pin-Priority: 500" }
|
||||
end
|
||||
end
|
||||
|
||||
context 'reset' do
|
||||
it 'deletes backport files' do
|
||||
shell('rm -rf /etc/apt/sources.list.d/backports.list')
|
||||
shell('rm -rf /etc/apt/preferences.d/backports.pref')
|
||||
end
|
||||
end
|
||||
|
||||
end
|
17
modules/apt/spec/acceptance/class_spec.rb
Normal file
17
modules/apt/spec/acceptance/class_spec.rb
Normal file
|
@ -0,0 +1,17 @@
|
|||
require 'spec_helper_acceptance'
|
||||
|
||||
describe 'apt class', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
|
||||
|
||||
context 'default parameters' do
|
||||
# Using puppet_apply as a helper
|
||||
it 'should work with no errors' do
|
||||
pp = <<-EOS
|
||||
class { 'apt': }
|
||||
EOS
|
||||
|
||||
# Run it twice and test for idempotency
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
end
|
||||
end
|
||||
end
|
66
modules/apt/spec/acceptance/conf_spec.rb
Normal file
66
modules/apt/spec/acceptance/conf_spec.rb
Normal file
|
@ -0,0 +1,66 @@
|
|||
require 'spec_helper_acceptance'
|
||||
|
||||
describe 'apt::conf define', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) 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
|
76
modules/apt/spec/acceptance/force_spec.rb
Normal file
76
modules/apt/spec/acceptance/force_spec.rb
Normal file
|
@ -0,0 +1,76 @@
|
|||
require 'spec_helper_acceptance'
|
||||
|
||||
codename = fact('lsbdistcodename')
|
||||
|
||||
describe 'apt::force define', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
|
||||
context 'defaults' do
|
||||
it 'should work with no errors' do
|
||||
pp = <<-EOS
|
||||
include apt
|
||||
apt::force { 'vim': }
|
||||
EOS
|
||||
|
||||
shell('apt-get remove -y vim')
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
end
|
||||
|
||||
describe package('vim') do
|
||||
it { should be_installed }
|
||||
end
|
||||
end
|
||||
|
||||
context 'release' do
|
||||
it 'should work with no errors' do
|
||||
pp = <<-EOS
|
||||
include apt
|
||||
apt::force { 'vim': release => '#{codename}' }
|
||||
EOS
|
||||
|
||||
shell('apt-get remove -y vim')
|
||||
apply_manifest(pp, :catch_failures => true) do |r|
|
||||
expect(r.stdout).to match(/apt-get -y -t #{codename} install vim/)
|
||||
end
|
||||
end
|
||||
|
||||
describe package('vim') do
|
||||
it { should be_installed }
|
||||
end
|
||||
end
|
||||
|
||||
context 'version' do
|
||||
it 'should work with no errors' do
|
||||
pp = <<-EOS
|
||||
include apt
|
||||
apt::force { 'vim': version => '1.1.1' }
|
||||
EOS
|
||||
|
||||
shell('apt-get remove -y vim')
|
||||
apply_manifest(pp, :catch_failures => false) do |r|
|
||||
expect(r.stdout).to match(/apt-get -y install vim=1.1.1/)
|
||||
end
|
||||
end
|
||||
|
||||
describe package('vim') do
|
||||
it { should_not be_installed }
|
||||
end
|
||||
end
|
||||
|
||||
context 'timeout' do
|
||||
it 'should work with no errors' do
|
||||
pp = <<-EOS
|
||||
include apt
|
||||
apt::force { 'ocaml': timeout => '1' }
|
||||
EOS
|
||||
|
||||
shell('apt-get clean')
|
||||
apply_manifest(pp, :expect_failures => true) do |r|
|
||||
expect(r.stderr).to match(/Error: Command exceeded timeout/)
|
||||
end
|
||||
end
|
||||
|
||||
describe package('ocaml') do
|
||||
it { should_not be_installed }
|
||||
end
|
||||
end
|
||||
|
||||
end
|
10
modules/apt/spec/acceptance/nodesets/debian-70rc1-x64.yml
Normal file
10
modules/apt/spec/acceptance/nodesets/debian-70rc1-x64.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
HOSTS:
|
||||
debian-70rc1-x64:
|
||||
roles:
|
||||
- master
|
||||
platform: debian-70rc1-x64
|
||||
box : debian-70rc1-x64-vbox4210-nocm
|
||||
box_url : http://puppet-vagrant-boxes.puppetlabs.com/debian-70rc1-x64-vbox4210-nocm.box
|
||||
hypervisor : vagrant
|
||||
CONFIG:
|
||||
type: foss
|
11
modules/apt/spec/acceptance/nodesets/debian-73-x64.yml
Normal file
11
modules/apt/spec/acceptance/nodesets/debian-73-x64.yml
Normal file
|
@ -0,0 +1,11 @@
|
|||
HOSTS:
|
||||
debian-73-x64:
|
||||
roles:
|
||||
- master
|
||||
platform: debian-7-amd64
|
||||
box : debian-73-x64-virtualbox-nocm
|
||||
box_url : http://puppet-vagrant-boxes.puppetlabs.com/debian-73-x64-virtualbox-nocm.box
|
||||
hypervisor : vagrant
|
||||
CONFIG:
|
||||
log_level: debug
|
||||
type: git
|
11
modules/apt/spec/acceptance/nodesets/default.yml
Normal file
11
modules/apt/spec/acceptance/nodesets/default.yml
Normal file
|
@ -0,0 +1,11 @@
|
|||
HOSTS:
|
||||
ubuntu-server-12042-x64:
|
||||
roles:
|
||||
- master
|
||||
platform: ubuntu-server-12.04-amd64
|
||||
box : ubuntu-server-12042-x64-vbox4210-nocm
|
||||
box_url : http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-12042-x64-vbox4210-nocm.box
|
||||
hypervisor : vagrant
|
||||
CONFIG:
|
||||
type: foss
|
||||
vagrant_ssh_port_random: true
|
|
@ -0,0 +1,11 @@
|
|||
HOSTS:
|
||||
ubuntu-server-10044-x64:
|
||||
roles:
|
||||
- master
|
||||
platform: ubuntu-10.04-amd64
|
||||
box : ubuntu-server-10044-x64-vbox4210-nocm
|
||||
box_url : http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-10044-x64-vbox4210-nocm.box
|
||||
hypervisor : vagrant
|
||||
CONFIG:
|
||||
log_level: debug
|
||||
type: git
|
|
@ -0,0 +1,10 @@
|
|||
HOSTS:
|
||||
ubuntu-server-12042-x64:
|
||||
roles:
|
||||
- master
|
||||
platform: ubuntu-server-12.04-amd64
|
||||
box : ubuntu-server-12042-x64-vbox4210-nocm
|
||||
box_url : http://puppet-vagrant-boxes.puppetlabs.com/ubuntu-server-12042-x64-vbox4210-nocm.box
|
||||
hypervisor : vagrant
|
||||
CONFIG:
|
||||
type: foss
|
|
@ -0,0 +1,11 @@
|
|||
HOSTS:
|
||||
ubuntu-server-1404-x64:
|
||||
roles:
|
||||
- master
|
||||
platform: ubuntu-14.04-amd64
|
||||
box : puppetlabs/ubuntu-14.04-64-nocm
|
||||
box_url : https://vagrantcloud.com/puppetlabs/ubuntu-14.04-64-nocm
|
||||
hypervisor : vagrant
|
||||
CONFIG:
|
||||
log_level : debug
|
||||
type: git
|
286
modules/apt/spec/acceptance/pin_spec.rb
Normal file
286
modules/apt/spec/acceptance/pin_spec.rb
Normal file
|
@ -0,0 +1,286 @@
|
|||
require 'spec_helper_acceptance'
|
||||
|
||||
describe 'apt::pin define', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) 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
|
||||
|
||||
context 'array' do
|
||||
it 'should work with no errors' do
|
||||
pp = <<-EOS
|
||||
include apt
|
||||
apt::pin { 'array':
|
||||
ensure => present,
|
||||
packages => ['apache', 'ntop'],
|
||||
}
|
||||
EOS
|
||||
|
||||
apply_manifest(pp, :catch_failures => true)
|
||||
end
|
||||
|
||||
describe file('/etc/apt/preferences.d/array.pref') do
|
||||
it { should be_file }
|
||||
it { should contain 'Package: apache ntop' }
|
||||
it { should contain 'Pin: release a=array' }
|
||||
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
|
26
modules/apt/spec/acceptance/release_spec.rb
Normal file
26
modules/apt/spec/acceptance/release_spec.rb
Normal file
|
@ -0,0 +1,26 @@
|
|||
require 'spec_helper_acceptance'
|
||||
|
||||
describe 'apt::release class', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) 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
|
||||
|
||||
context 'reset' do
|
||||
it 'cleans up' do
|
||||
shell('rm -rf /etc/apt/apt.conf.d/01release')
|
||||
end
|
||||
end
|
||||
|
||||
end
|
562
modules/apt/spec/acceptance/unattended_upgrade_spec.rb
Normal file
562
modules/apt/spec/acceptance/unattended_upgrade_spec.rb
Normal file
|
@ -0,0 +1,562 @@
|
|||
require 'spec_helper_acceptance'
|
||||
|
||||
describe 'apt::unattended_upgrades class', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
|
||||
context 'defaults' do
|
||||
it 'should work with no errors' do
|
||||
pp = <<-EOS
|
||||
include apt
|
||||
include apt::unattended_upgrades
|
||||
EOS
|
||||
|
||||
# Attempted workaround for problems seen on debian with
|
||||
# something holding the package database open.
|
||||
#shell('killall -9 apt-get')
|
||||
#shell('killall -9 dpkg')
|
||||
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
|
10
modules/apt/spec/acceptance/unsupported_spec.rb
Normal file
10
modules/apt/spec/acceptance/unsupported_spec.rb
Normal file
|
@ -0,0 +1,10 @@
|
|||
require 'spec_helper_acceptance'
|
||||
|
||||
describe 'unsupported distributions and OSes', :if => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
|
||||
it 'class apt fails' do
|
||||
pp = <<-EOS
|
||||
class { 'apt': }
|
||||
EOS
|
||||
expect(apply_manifest(pp, :expect_failures => true).stderr).to match(/This module only works on Debian or derivatives like Ubuntu/i)
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue