module-puppetlabs-apt/spec/classes/apt_backports_spec.rb
Philipp Wagner e651d7d25c Install software-properties-common for xenial
Instead of adding every newer release of Ubuntu, let's assume that the
package name that is used today will be used in the future, until the
next change is necessary.
2016-05-02 13:53:09 +02:00

272 lines
7.8 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',
:lsbdistrelease => '14.04',
: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',
:lsbdistrelease => '14.04',
: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',
:lsbdistrelease => '14.04',
: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',
:lsbdistrelease => '14.04',
: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