911c4de90f
`apt::ppa` and `apt::setting` don't actually include `apt::update` so anchors are unnecessary. Move `apt` to use contain instead of anchors, since it wasn't anchoring properly anyways. Update the tests to make sure it can have settings and ppas depending on each other without cycles.
115 lines
3.8 KiB
Ruby
115 lines
3.8 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe 'apt::setting' do
|
|
let(:pre_condition) { 'class { "apt": }' }
|
|
let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy' } }
|
|
let(:title) { 'conf-teddybear' }
|
|
|
|
let(:default_params) { { :content => 'di' } }
|
|
|
|
describe 'when using the defaults' do
|
|
context 'without source or content' do
|
|
it do
|
|
expect { is_expected.to compile }.to raise_error(Puppet::Error, /needs either of /)
|
|
end
|
|
end
|
|
|
|
context 'with title=conf-teddybear ' do
|
|
let(:params) { default_params }
|
|
it { is_expected.to contain_file('/etc/apt/apt.conf.d/50teddybear').that_notifies('Exec[apt_update]') }
|
|
end
|
|
|
|
context 'with title=pref-teddybear' do
|
|
let(:title) { 'pref-teddybear' }
|
|
let(:params) { default_params }
|
|
it { is_expected.to contain_file('/etc/apt/preferences.d/50teddybear').that_notifies('Exec[apt_update]') }
|
|
end
|
|
|
|
context 'with title=list-teddybear' do
|
|
let(:title) { 'list-teddybear' }
|
|
let(:params) { default_params }
|
|
it { is_expected.to contain_file('/etc/apt/sources.list.d/teddybear.list').that_notifies('Exec[apt_update]') }
|
|
end
|
|
|
|
context 'with source' do
|
|
let(:params) { { :source => 'puppet:///la/die/dah' } }
|
|
it {
|
|
is_expected.to contain_file('/etc/apt/apt.conf.d/50teddybear').that_notifies('Exec[apt_update]').with({
|
|
:ensure => 'file',
|
|
:owner => 'root',
|
|
:group => 'root',
|
|
:mode => '0644',
|
|
:source => "#{params[:source]}",
|
|
})}
|
|
end
|
|
|
|
context 'with content' do
|
|
let(:params) { default_params }
|
|
it { is_expected.to contain_file('/etc/apt/apt.conf.d/50teddybear').that_notifies('Exec[apt_update]').with({
|
|
:ensure => 'file',
|
|
:owner => 'root',
|
|
:group => 'root',
|
|
:mode => '0644',
|
|
:content => "#{params[:content]}",
|
|
})}
|
|
end
|
|
end
|
|
|
|
describe 'settings requiring settings, MODULES-769' do
|
|
let(:pre_condition) do
|
|
'class { "apt": }
|
|
apt::setting { "list-teddybear": content => "foo" }
|
|
'
|
|
end
|
|
let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian', :lsbdistcodename => 'wheezy' } }
|
|
let(:title) { 'conf-teddybear' }
|
|
let(:default_params) { { :content => 'di' } }
|
|
|
|
let(:params) { default_params.merge({ :require => 'Apt::Setting[list-teddybear]' }) }
|
|
|
|
it { is_expected.to compile.with_all_deps }
|
|
end
|
|
|
|
describe 'when trying to pull one over' do
|
|
context 'with source and content' do
|
|
let(:params) { default_params.merge({ :source => 'la' }) }
|
|
it do
|
|
expect { is_expected.to compile }.to raise_error(Puppet::Error, /cannot have both /)
|
|
end
|
|
end
|
|
|
|
context 'with title=ext-teddybear' do
|
|
let(:title) { 'ext-teddybear' }
|
|
let(:params) { default_params }
|
|
it do
|
|
expect { is_expected.to compile }.to raise_error(Puppet::Error, /must start with /)
|
|
end
|
|
end
|
|
|
|
context 'with ensure=banana' do
|
|
let(:params) { default_params.merge({ :ensure => 'banana' }) }
|
|
it do
|
|
expect { is_expected.to compile }.to raise_error(Puppet::Error, /"banana" does not /)
|
|
end
|
|
end
|
|
|
|
context 'with priority=1.2' do
|
|
let(:params) { default_params.merge({ :priority => 1.2 }) }
|
|
it do
|
|
expect { is_expected.to compile }.to raise_error(Puppet::Error, /be an integer /)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe 'with priority=100' do
|
|
let(:params) { default_params.merge({ :priority => 100 }) }
|
|
it { is_expected.to contain_file('/etc/apt/apt.conf.d/100teddybear').that_notifies('Exec[apt_update]') }
|
|
end
|
|
|
|
describe 'with ensure=absent' do
|
|
let(:params) { default_params.merge({ :ensure => 'absent' }) }
|
|
it { is_expected.to contain_file('/etc/apt/apt.conf.d/50teddybear').that_notifies('Exec[apt_update]').with({
|
|
:ensure => 'absent',
|
|
})}
|
|
end
|
|
end
|