5790341890
Introducing a totally rewritten and tested apt::key. This commit also patches the spec's of apt::source because it was passing in data that is no longer allowed by the new validation rules in apt::key. It does its best to not touch any other specs and where we touch them only minimally to ensure that we're not introducing breaking changes.
172 lines
5.2 KiB
Ruby
172 lines
5.2 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe 'apt::source', :type => :define do
|
|
let(:facts) { { :lsbdistid => 'Debian' } }
|
|
GPG_KEY_ID = '4BD6EC30'
|
|
|
|
let :title do
|
|
'my_source'
|
|
end
|
|
|
|
let :default_params do
|
|
{
|
|
:ensure => 'present',
|
|
:location => '',
|
|
:release => 'karmic',
|
|
:repos => 'main',
|
|
:include_src => true,
|
|
:required_packages => false,
|
|
:key => false,
|
|
:key_server => false,
|
|
:key_content => false,
|
|
:key_source => false,
|
|
:pin => false
|
|
}
|
|
end
|
|
|
|
[{},
|
|
{
|
|
:location => 'http://example.com',
|
|
:release => 'precise',
|
|
:repos => 'security',
|
|
:include_src => false,
|
|
:required_packages => 'apache',
|
|
:key => GPG_KEY_ID,
|
|
:key_server => 'keyserver.debian.com',
|
|
:pin => '600',
|
|
:key_content => 'ABCD1234'
|
|
},
|
|
{
|
|
:key => GPG_KEY_ID,
|
|
:key_server => 'keyserver.debian.com',
|
|
},
|
|
{
|
|
:ensure => 'absent',
|
|
:location => 'http://example.com',
|
|
:release => 'precise',
|
|
:repos => 'security',
|
|
},
|
|
{
|
|
:release => '',
|
|
},
|
|
{
|
|
:release => 'custom',
|
|
},
|
|
{
|
|
:architecture => 'amd64',
|
|
}
|
|
].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 :facts do
|
|
{:lsbdistcodename => 'karmic', :lsbdistid => 'Ubuntu'}
|
|
end
|
|
|
|
let :params do
|
|
param_set
|
|
end
|
|
|
|
let :filename do
|
|
"/etc/apt/sources.list.d/#{title}.list"
|
|
end
|
|
|
|
let :content do
|
|
content = "# #{title}"
|
|
if param_hash[:architecture]
|
|
arch = "[arch=#{param_hash[:architecture]}] "
|
|
end
|
|
content << "\ndeb #{arch}#{param_hash[:location]} #{param_hash[:release]} #{param_hash[:repos]}\n"
|
|
|
|
if param_hash[:include_src]
|
|
content << "deb-src #{arch}#{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({
|
|
'ensure' => param_hash[:ensure],
|
|
'path' => filename,
|
|
'owner' => 'root',
|
|
'group' => 'root',
|
|
'mode' => '0644',
|
|
'content' => content,
|
|
})
|
|
}
|
|
|
|
it {
|
|
if param_hash[:pin]
|
|
should contain_apt__pin(title).with({
|
|
"priority" => param_hash[:pin],
|
|
"before" => "File[#{title}.list]"
|
|
})
|
|
else
|
|
should_not contain_apt__pin(title).with({
|
|
"priority" => param_hash[:pin],
|
|
"before" => "File[#{title}.list]"
|
|
})
|
|
end
|
|
}
|
|
|
|
it {
|
|
should contain_exec("apt_update").with({
|
|
"command" => "/usr/bin/apt-get update",
|
|
"refreshonly" => true
|
|
})
|
|
}
|
|
|
|
it {
|
|
if param_hash[:required_packages]
|
|
should contain_exec("Required packages: '#{param_hash[:required_packages]}' for #{title}").with({
|
|
"command" => "/usr/bin/apt-get -y install #{param_hash[:required_packages]}",
|
|
"subscribe" => "File[#{title}.list]",
|
|
"refreshonly" => true,
|
|
"before" => 'Exec[apt_update]',
|
|
})
|
|
else
|
|
should_not contain_exec("Required packages: '#{param_hash[:required_packages]}' for #{title}").with({
|
|
"command" => "/usr/bin/apt-get -y install #{param_hash[:required_packages]}",
|
|
"subscribe" => "File[#{title}.list]",
|
|
"refreshonly" => true
|
|
})
|
|
end
|
|
}
|
|
|
|
it {
|
|
key_server = param_hash[:key_server] || nil
|
|
key_content = param_hash[:key_content] || nil
|
|
key_source = param_hash[:key_source] || nil
|
|
if param_hash[:key]
|
|
should contain_apt__key("Add key: #{param_hash[:key]} from Apt::Source #{title}").with({
|
|
"key" => param_hash[:key],
|
|
"ensure" => :present,
|
|
"key_server" => key_server,
|
|
"key_content" => key_content,
|
|
"key_source" => key_source,
|
|
"before" => "File[#{title}.list]"
|
|
})
|
|
else
|
|
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]"
|
|
})
|
|
end
|
|
}
|
|
end
|
|
end
|
|
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', :lsbdistid => 'Ubuntu' } }
|
|
it { should contain_apt__source(title) }
|
|
end
|
|
end
|