module-puppetlabs-apt/spec/defines/source_spec.rb
Matthaus Litteken 9059c4e2a8 Fix source specs to test all key permutations
Previously only one should in each block was being evaluated. This moves each
should to its own block so that all values are tested. It also adds another set
of params so that all useful permutations of key, key_server, and key_content
are generated. It also replaces the previous ternary assignment for param_set
with a hash merge.
2012-02-23 22:14:38 -08:00

159 lines
5.5 KiB
Ruby

require 'spec_helper'
describe 'apt::source', :type => :define do
let :title do
'my_source'
end
let :default_params do
{
:location => '',
:release => 'karmic',
:repos => 'main',
:include_src => true,
:required_packages => false,
:key => false,
:key_server => 'keyserver.ubuntu.com',
:pin => false,
:key_content => false
}
end
[{},
{
:location => 'somewhere',
:release => 'precise',
:repos => 'security',
:include_src => false,
:required_packages => 'apache',
:key => 'key_name',
:key_server => 'keyserver.debian.com',
:pin => '600',
:key_content => 'ABCD1234'
},
{
:key => 'key_name',
:key_server => 'keyserver.debian.com',
:key_content => false,
}
].each do |param_set|
describe "when #{param_set == {} ? "using default" : "specifying"} class parameters" do
let :param_hash do
default_params.merge(param_set)
end
let :params do
param_set
end
let :filename do
"/etc/apt/sources.list.d/#{title}.list"
end
let :content do
content = "# #{title}"
content << "\ndeb #{param_hash[:location]} #{param_hash[:release]} #{param_hash[:repos]}\n"
if param_hash[:include_src]
content << "deb-src #{param_hash[:location]} #{param_hash[:release]} #{param_hash[:repos]}\n"
end
content
end
it { should contain_apt__params }
it { should contain_file("#{title}.list").with({
'path' => filename,
'ensure' => "file",
'owner' => "root",
'group' => "root",
'mode' => 644,
'content' => content
})
}
it {
if param_hash[:pin]
should contain_apt__pin(param_hash[:release]).with({
"priority" => param_hash[:pin],
"before" => "File[#{title}.list]"
})
else
should_not contain_apt__pin(param_hash[:release]).with({
"priority" => param_hash[:pin],
"before" => "File[#{title}.list]"
})
end
}
it {
should contain_exec("#{title} apt update").with({
"command" => "/usr/bin/apt-get update",
"subscribe" => "File[#{title}.list]",
"refreshonly" => true
})
}
it {
if param_hash[:required_packages]
should contain_exec("/usr/bin/apt-get -y install #{param_hash[:required_packages]}").with({
"subscribe" => "File[#{title}.list]",
"refreshonly" => true
})
else
should_not contain_exec("/usr/bin/apt-get -y install #{param_hash[:required_packages]}").with({
"subscribe" => "File[#{title}.list]",
"refreshonly" => true
})
end
}
it {
if param_hash[:key]
if param_hash[:key_content]
should contain_exec("Add key: #{param_hash[:key]} from content for #{title}").with({
"command" => "/bin/echo '#{param_hash[:key_content]}' | /usr/bin/apt-key add -",
"unless" => "/usr/bin/apt-key list | /bin/grep '#{param_hash[:key]}'",
"before" => "File[#{title}.list]"
})
else
should_not contain_exec("Add key: #{param_hash[:key]} from content for #{title}").with({
"command" => "/bin/echo '#{param_hash[:key_content]}' | /usr/bin/apt-key add -",
"unless" => "/usr/bin/apt-key list | /bin/grep '#{param_hash[:key]}'",
"before" => "File[#{title}.list]"
})
end
else
should_not contain_exec("Add key: #{param_hash[:key]} from content for #{title}").with({
"command" => "/bin/echo '#{param_hash[:key_content]}' | /usr/bin/apt-key add -",
"unless" => "/usr/bin/apt-key list | /bin/grep '#{param_hash[:key]}'",
"before" => "File[#{title}.list]"
})
end
}
it {
if param_hash[:key]
if param_hash[:key_content]
should_not contain_exec("Add key: #{param_hash[:key]} from #{param_hash[:key_server]} for #{title}").with({
"command" => "/usr/bin/apt-key adv --keyserver #{param_hash[:key_server]} --recv-keys #{param_hash[:key]}",
"unless" => "/usr/bin/apt-key list | /bin/grep #{param_hash[:key]}",
"before" => "File[#{title}.list]"
})
else
should contain_exec("Add key: #{param_hash[:key]} from #{param_hash[:key_server]} for #{title}").with({
"command" => "/usr/bin/apt-key adv --keyserver #{param_hash[:key_server]} --recv-keys #{param_hash[:key]}",
"unless" => "/usr/bin/apt-key list | /bin/grep #{param_hash[:key]}",
"before" => "File[#{title}.list]"
})
end
else
should_not contain_exec("Add key: #{param_hash[:key]} from #{param_hash[:key_server]} for #{title}").with({
"command" => "/usr/bin/apt-key adv --keyserver #{param_hash[:key_server]} --recv-keys #{param_hash[:key]}",
"unless" => "/usr/bin/apt-key list | /bin/grep #{param_hash[:key]}",
"before" => "File[#{title}.list]"
})
end
}
end
end
end