9f43b2db26
The 2.x series added a changed behavior for backport pinning to pin to origin instead of release. Pinning to release is the correct behavior for backports though.
268 lines
7.7 KiB
Ruby
268 lines
7.7 KiB
Ruby
#!/usr/bin/env rspec
|
|
require 'spec_helper'
|
|
|
|
describe 'apt::backports', :type => :class do
|
|
let (:pre_condition) { "class{ '::apt': }" }
|
|
describe 'debian/ubuntu tests' do
|
|
context 'defaults on deb' do
|
|
let(:facts) do
|
|
{
|
|
:lsbdistid => 'Debian',
|
|
:osfamily => 'Debian',
|
|
:lsbdistcodename => 'wheezy',
|
|
:puppetversion => Puppet.version,
|
|
}
|
|
end
|
|
it { is_expected.to contain_apt__source('backports').with({
|
|
:location => 'http://httpredir.debian.org/debian',
|
|
:key => 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553',
|
|
:repos => 'main contrib non-free',
|
|
:release => 'wheezy-backports',
|
|
:pin => { 'priority' => 200, 'release' => 'wheezy-backports' },
|
|
})
|
|
}
|
|
end
|
|
context 'defaults on squeeze' do
|
|
let(:facts) do
|
|
{
|
|
:lsbdistid => 'Debian',
|
|
:osfamily => 'Debian',
|
|
:lsbdistcodename => 'squeeze',
|
|
:puppetversion => Puppet.version,
|
|
}
|
|
end
|
|
it { is_expected.to contain_apt__source('backports').with({
|
|
:location => 'http://httpredir.debian.org/debian-backports',
|
|
:key => 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553',
|
|
:repos => 'main contrib non-free',
|
|
:release => 'squeeze-backports',
|
|
:pin => { 'priority' => 200, 'release' => 'squeeze-backports' },
|
|
})
|
|
}
|
|
end
|
|
context 'defaults on ubuntu' do
|
|
let(:facts) do
|
|
{
|
|
:lsbdistid => 'Ubuntu',
|
|
:osfamily => 'Debian',
|
|
:lsbdistcodename => 'trusty',
|
|
:puppetversion => Puppet.version,
|
|
}
|
|
end
|
|
it { is_expected.to contain_apt__source('backports').with({
|
|
:location => 'http://archive.ubuntu.com/ubuntu',
|
|
:key => '630239CC130E1A7FD81A27B140976EAF437D05B5',
|
|
:repos => 'main universe multiverse restricted',
|
|
:release => 'trusty-backports',
|
|
:pin => { 'priority' => 200, 'release' => 'trusty-backports' },
|
|
})
|
|
}
|
|
end
|
|
context 'set everything' do
|
|
let(:facts) do
|
|
{
|
|
:lsbdistid => 'Ubuntu',
|
|
:osfamily => 'Debian',
|
|
:lsbdistcodename => 'trusty',
|
|
:puppetversion => Puppet.version,
|
|
}
|
|
end
|
|
let(:params) do
|
|
{
|
|
:location => 'http://archive.ubuntu.com/ubuntu-test',
|
|
:release => 'vivid',
|
|
:repos => 'main',
|
|
:key => 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553',
|
|
:pin => '90',
|
|
}
|
|
end
|
|
it { is_expected.to contain_apt__source('backports').with({
|
|
:location => 'http://archive.ubuntu.com/ubuntu-test',
|
|
:key => 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553',
|
|
:repos => 'main',
|
|
:release => 'vivid',
|
|
:pin => { 'priority' => 90, 'release' => 'vivid' },
|
|
})
|
|
}
|
|
end
|
|
context 'set things with hashes' do
|
|
let(:facts) do
|
|
{
|
|
:lsbdistid => 'Ubuntu',
|
|
:osfamily => 'Debian',
|
|
:lsbdistcodename => 'trusty',
|
|
:puppetversion => Puppet.version,
|
|
}
|
|
end
|
|
let(:params) do
|
|
{
|
|
:key => {
|
|
'id' => 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553',
|
|
},
|
|
:pin => {
|
|
'priority' => '90',
|
|
},
|
|
}
|
|
end
|
|
it { is_expected.to contain_apt__source('backports').with({
|
|
:key => { 'id' => 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553' },
|
|
:pin => { 'priority' => '90' },
|
|
})
|
|
}
|
|
end
|
|
end
|
|
describe 'mint tests' do
|
|
let(:facts) do
|
|
{
|
|
:lsbdistid => 'linuxmint',
|
|
:osfamily => 'Debian',
|
|
:lsbdistcodename => 'qiana',
|
|
:puppetversion => Puppet.version,
|
|
}
|
|
end
|
|
context 'sets all the needed things' do
|
|
let(:params) do
|
|
{
|
|
:location => 'http://archive.ubuntu.com/ubuntu',
|
|
:release => 'trusty-backports',
|
|
:repos => 'main universe multiverse restricted',
|
|
:key => '630239CC130E1A7FD81A27B140976EAF437D05B5',
|
|
}
|
|
end
|
|
it { is_expected.to contain_apt__source('backports').with({
|
|
:location => 'http://archive.ubuntu.com/ubuntu',
|
|
:key => '630239CC130E1A7FD81A27B140976EAF437D05B5',
|
|
:repos => 'main universe multiverse restricted',
|
|
:release => 'trusty-backports',
|
|
:pin => { 'priority' => 200, 'release' => 'trusty-backports' },
|
|
})
|
|
}
|
|
end
|
|
context 'missing location' do
|
|
let(:params) do
|
|
{
|
|
:release => 'trusty-backports',
|
|
:repos => 'main universe multiverse restricted',
|
|
:key => '630239CC130E1A7FD81A27B140976EAF437D05B5',
|
|
}
|
|
end
|
|
it do
|
|
expect {
|
|
subject.call
|
|
}.to raise_error(Puppet::Error, /If not on Debian or Ubuntu, you must explicitly pass location, release, repos, and key/)
|
|
end
|
|
end
|
|
context 'missing release' do
|
|
let(:params) do
|
|
{
|
|
:location => 'http://archive.ubuntu.com/ubuntu',
|
|
:repos => 'main universe multiverse restricted',
|
|
:key => '630239CC130E1A7FD81A27B140976EAF437D05B5',
|
|
}
|
|
end
|
|
it do
|
|
expect {
|
|
subject.call
|
|
}.to raise_error(Puppet::Error, /If not on Debian or Ubuntu, you must explicitly pass location, release, repos, and key/)
|
|
end
|
|
end
|
|
context 'missing repos' do
|
|
let(:params) do
|
|
{
|
|
:location => 'http://archive.ubuntu.com/ubuntu',
|
|
:release => 'trusty-backports',
|
|
:key => '630239CC130E1A7FD81A27B140976EAF437D05B5',
|
|
}
|
|
end
|
|
it do
|
|
expect {
|
|
subject.call
|
|
}.to raise_error(Puppet::Error, /If not on Debian or Ubuntu, you must explicitly pass location, release, repos, and key/)
|
|
end
|
|
end
|
|
context 'missing key' do
|
|
let(:params) do
|
|
{
|
|
:location => 'http://archive.ubuntu.com/ubuntu',
|
|
:release => 'trusty-backports',
|
|
:repos => 'main universe multiverse restricted',
|
|
}
|
|
end
|
|
it do
|
|
expect {
|
|
subject.call
|
|
}.to raise_error(Puppet::Error, /If not on Debian or Ubuntu, you must explicitly pass location, release, repos, and key/)
|
|
end
|
|
end
|
|
end
|
|
describe 'validation' do
|
|
let(:facts) do
|
|
{
|
|
:lsbdistid => 'Ubuntu',
|
|
:osfamily => 'Debian',
|
|
:lsbdistcodename => 'trusty',
|
|
:puppetversion => Puppet.version,
|
|
}
|
|
end
|
|
context 'invalid location' do
|
|
let(:params) do
|
|
{
|
|
:location => true
|
|
}
|
|
end
|
|
it do
|
|
expect {
|
|
subject.call
|
|
}.to raise_error(Puppet::Error, /is not a string/)
|
|
end
|
|
end
|
|
context 'invalid release' do
|
|
let(:params) do
|
|
{
|
|
:release => true
|
|
}
|
|
end
|
|
it do
|
|
expect {
|
|
subject.call
|
|
}.to raise_error(Puppet::Error, /is not a string/)
|
|
end
|
|
end
|
|
context 'invalid repos' do
|
|
let(:params) do
|
|
{
|
|
:repos => true
|
|
}
|
|
end
|
|
it do
|
|
expect {
|
|
subject.call
|
|
}.to raise_error(Puppet::Error, /is not a string/)
|
|
end
|
|
end
|
|
context 'invalid key' do
|
|
let(:params) do
|
|
{
|
|
:key => true
|
|
}
|
|
end
|
|
it do
|
|
expect {
|
|
subject.call
|
|
}.to raise_error(Puppet::Error, /is not a string/)
|
|
end
|
|
end
|
|
context 'invalid pin' do
|
|
let(:params) do
|
|
{
|
|
:pin => true
|
|
}
|
|
end
|
|
it do
|
|
expect {
|
|
subject.call
|
|
}.to raise_error(Puppet::Error, /pin must be either a string, number or hash/)
|
|
end
|
|
end
|
|
end
|
|
end
|