2012-01-23 22:08:00 +01:00
|
|
|
require 'spec_helper'
|
|
|
|
describe 'apt::source', :type => :define do
|
|
|
|
let :title do
|
|
|
|
'my_source'
|
|
|
|
end
|
|
|
|
|
|
|
|
let :default_params do
|
|
|
|
{
|
2012-05-04 01:59:13 +02:00
|
|
|
:ensure => 'present',
|
2012-01-23 22:08:00 +01:00
|
|
|
:location => '',
|
|
|
|
:release => 'karmic',
|
|
|
|
:repos => 'main',
|
|
|
|
:include_src => true,
|
|
|
|
:required_packages => false,
|
|
|
|
:key => false,
|
|
|
|
:key_server => 'keyserver.ubuntu.com',
|
2012-02-24 19:10:03 +01:00
|
|
|
:key_content => false,
|
|
|
|
:key_source => false,
|
|
|
|
:pin => false
|
2012-01-23 22:08:00 +01:00
|
|
|
}
|
|
|
|
end
|
|
|
|
|
|
|
|
[{},
|
|
|
|
{
|
2012-05-26 00:32:49 +02:00
|
|
|
:location => 'http://example.com',
|
2012-01-23 22:08:00 +01:00
|
|
|
:release => 'precise',
|
|
|
|
:repos => 'security',
|
|
|
|
:include_src => false,
|
|
|
|
:required_packages => 'apache',
|
|
|
|
:key => 'key_name',
|
|
|
|
:key_server => 'keyserver.debian.com',
|
|
|
|
:pin => '600',
|
|
|
|
:key_content => 'ABCD1234'
|
2012-02-24 07:08:39 +01:00
|
|
|
},
|
|
|
|
{
|
|
|
|
:key => 'key_name',
|
|
|
|
:key_server => 'keyserver.debian.com',
|
|
|
|
:key_content => false,
|
2012-05-04 01:59:13 +02:00
|
|
|
},
|
|
|
|
{
|
|
|
|
:ensure => 'absent',
|
2012-05-26 00:32:49 +02:00
|
|
|
:location => 'http://example.com',
|
2012-05-04 01:59:13 +02:00
|
|
|
:release => 'precise',
|
|
|
|
:repos => 'security',
|
2012-07-03 23:49:01 +02:00
|
|
|
},
|
|
|
|
{
|
|
|
|
:release => '',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
:release => 'custom',
|
2013-05-30 00:52:32 +02:00
|
|
|
},
|
|
|
|
{
|
|
|
|
:architecture => 'amd64',
|
2012-01-23 22:08:00 +01:00
|
|
|
}
|
|
|
|
].each do |param_set|
|
|
|
|
describe "when #{param_set == {} ? "using default" : "specifying"} class parameters" do
|
|
|
|
let :param_hash do
|
2012-02-24 07:08:39 +01:00
|
|
|
default_params.merge(param_set)
|
2012-01-23 22:08:00 +01:00
|
|
|
end
|
|
|
|
|
2012-02-24 23:03:51 +01:00
|
|
|
let :facts do
|
|
|
|
{:lsbdistcodename => 'karmic'}
|
|
|
|
end
|
|
|
|
|
2012-01-23 22:08:00 +01:00
|
|
|
let :params do
|
|
|
|
param_set
|
|
|
|
end
|
|
|
|
|
|
|
|
let :filename do
|
|
|
|
"/etc/apt/sources.list.d/#{title}.list"
|
|
|
|
end
|
|
|
|
|
|
|
|
let :content do
|
|
|
|
content = "# #{title}"
|
2013-05-30 00:52:32 +02:00
|
|
|
if param_hash[:architecture]
|
2013-10-23 12:29:47 +02:00
|
|
|
arch = "[arch=#{param_hash[:architecture]}] "
|
2013-05-30 00:52:32 +02:00
|
|
|
end
|
2013-10-14 14:27:17 +02:00
|
|
|
content << "\ndeb #{arch}#{param_hash[:location]} #{param_hash[:release]} #{param_hash[:repos]}\n"
|
2013-05-30 00:52:32 +02:00
|
|
|
|
2012-01-23 22:08:00 +01:00
|
|
|
if param_hash[:include_src]
|
2013-10-14 14:27:17 +02:00
|
|
|
content << "deb-src #{arch}#{param_hash[:location]} #{param_hash[:release]} #{param_hash[:repos]}\n"
|
2012-01-23 22:08:00 +01:00
|
|
|
end
|
|
|
|
content
|
|
|
|
end
|
|
|
|
|
2012-02-04 02:24:09 +01:00
|
|
|
it { should contain_apt__params }
|
2012-01-23 22:08:00 +01:00
|
|
|
|
2012-02-04 02:24:09 +01:00
|
|
|
it { should contain_file("#{title}.list").with({
|
2012-05-04 01:59:13 +02:00
|
|
|
'ensure' => param_hash[:ensure],
|
2012-02-24 07:08:39 +01:00
|
|
|
'path' => filename,
|
2012-03-21 14:20:13 +01:00
|
|
|
'owner' => 'root',
|
|
|
|
'group' => 'root',
|
|
|
|
'mode' => '0644',
|
|
|
|
'content' => content,
|
2012-02-04 02:24:09 +01:00
|
|
|
})
|
2012-01-23 22:08:00 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
it {
|
|
|
|
if param_hash[:pin]
|
2012-05-25 20:20:46 +02:00
|
|
|
should contain_apt__pin(title).with({
|
2012-02-04 02:24:09 +01:00
|
|
|
"priority" => param_hash[:pin],
|
|
|
|
"before" => "File[#{title}.list]"
|
|
|
|
})
|
2012-01-23 22:08:00 +01:00
|
|
|
else
|
2012-05-25 20:20:46 +02:00
|
|
|
should_not contain_apt__pin(title).with({
|
2012-02-04 02:24:09 +01:00
|
|
|
"priority" => param_hash[:pin],
|
|
|
|
"before" => "File[#{title}.list]"
|
|
|
|
})
|
2012-01-23 22:08:00 +01:00
|
|
|
end
|
|
|
|
}
|
|
|
|
|
|
|
|
it {
|
2012-05-04 00:44:17 +02:00
|
|
|
should contain_exec("apt_update").with({
|
2012-02-04 02:24:09 +01:00
|
|
|
"command" => "/usr/bin/apt-get update",
|
|
|
|
"refreshonly" => true
|
|
|
|
})
|
2012-01-23 22:08:00 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
it {
|
|
|
|
if param_hash[:required_packages]
|
2012-02-24 06:04:57 +01:00
|
|
|
should contain_exec("Required packages: '#{param_hash[:required_packages]}' for #{title}").with({
|
|
|
|
"command" => "/usr/bin/apt-get -y install #{param_hash[:required_packages]}",
|
2012-02-04 02:24:09 +01:00
|
|
|
"subscribe" => "File[#{title}.list]",
|
2013-06-03 11:57:58 +02:00
|
|
|
"refreshonly" => true,
|
|
|
|
"before" => 'Exec[apt_update]',
|
2012-02-04 02:24:09 +01:00
|
|
|
})
|
2012-01-23 22:08:00 +01:00
|
|
|
else
|
2012-02-24 06:04:57 +01:00
|
|
|
should_not contain_exec("Required packages: '#{param_hash[:required_packages]}' for #{title}").with({
|
|
|
|
"command" => "/usr/bin/apt-get -y install #{param_hash[:required_packages]}",
|
2012-02-04 02:24:09 +01:00
|
|
|
"subscribe" => "File[#{title}.list]",
|
|
|
|
"refreshonly" => true
|
|
|
|
})
|
2012-01-23 22:08:00 +01:00
|
|
|
end
|
|
|
|
}
|
|
|
|
|
|
|
|
it {
|
|
|
|
if param_hash[:key]
|
2012-02-24 19:10:03 +01:00
|
|
|
should contain_apt__key("Add key: #{param_hash[:key]} from Apt::Source #{title}").with({
|
|
|
|
"key" => param_hash[:key],
|
|
|
|
"ensure" => :present,
|
|
|
|
"key_server" => param_hash[:key_server],
|
|
|
|
"key_content" => param_hash[:key_content],
|
|
|
|
"key_source" => param_hash[:key_source],
|
|
|
|
"before" => "File[#{title}.list]"
|
2012-02-04 02:24:09 +01:00
|
|
|
})
|
2012-02-24 07:08:39 +01:00
|
|
|
else
|
2012-02-24 19:10:03 +01:00
|
|
|
should_not contain_apt__key("Add key: #{param_hash[:key]} from Apt::Source #{title}").with({
|
|
|
|
"key" => param_hash[:key],
|
|
|
|
"ensure" => :present,
|
|
|
|
"key_server" => param_hash[:key_server],
|
|
|
|
"key_content" => param_hash[:key_content],
|
|
|
|
"key_source" => param_hash[:key_source],
|
|
|
|
"before" => "File[#{title}.list]"
|
2012-02-04 02:24:09 +01:00
|
|
|
})
|
2012-01-23 22:08:00 +01:00
|
|
|
end
|
|
|
|
}
|
|
|
|
end
|
|
|
|
end
|
Modify apt::source release parameter test
This commit modifies the release parameter test in apt::source to work
correctly within puppet-rspec for edge-case resource definitions. Previously,
the test for the $release parameter was written as
`if ! $release { fail() }`
This commit updates the test to be written as
`if $release == undef { fail() }`
Additionally, the tests for correct behavior in the presence or absence of a
$release parameter have been beefed up.
The reason for making this change relates to examples such as the following
resource definition:
apt::source { "jenkins":
location => "http://pkg.jenkins-ci.org/debian",
release => "",
repos => "binary/",
key => "D50582E6",
key_source => "http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key",
include_src => false,
}
Note that the $release parameter is given as the empty string. In practice,
this is perfectly valid and everything will work great. However, it seems that
the empty string gets interpreted by something in puppet-rspec as something
equivalent to "False", and thus when testing, the above resource definition
would fail with "Puppet::Error: lsbdistcodename fact not available: release
parameter required" even though the $release parameter has been explicitely
specified (as the empty string).
See also: https://github.com/rtyler/puppet-jenkins/issues/9
2012-03-07 19:10:46 +01:00
|
|
|
describe "without release should raise a Puppet::Error" do
|
|
|
|
let(:default_params) { Hash.new }
|
|
|
|
let(:facts) { Hash.new }
|
|
|
|
it { expect { should raise_error(Puppet::Error) } }
|
|
|
|
let(:facts) { { :lsbdistcodename => 'lucid' } }
|
|
|
|
it { should contain_apt__source(title) }
|
|
|
|
end
|
2012-01-23 22:08:00 +01:00
|
|
|
end
|