'my_source'
end
- context 'defaults' do
- context 'without location' do
- let :facts do
- {
- os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
- osfamily: 'Debian',
- lsbdistcodename: 'wheezy',
- puppetversion: Puppet.version,
- }
- end
+ let :facts do
+ {
+ os: { family: 'Debian', name: 'Debian', release: { major: '8', full: '8.0' } },
+ lsbdistid: 'Debian',
+ lsbdistcodename: 'jessie',
+ operatingsystem: 'Debian',
+ osfamily: 'Debian',
+ }
+ end
+ context 'with defaults' do
+ context 'without location' do
it do
- expect {
- subject.call
- }.to raise_error(Puppet::Error, %r{source entry without specifying a location})
+ is_expected.to raise_error(Puppet::Error, %r{source entry without specifying a location})
end
end
context 'with location' do
- let :facts do
- {
- os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
- lsbdistid: 'Debian',
- lsbdistcodename: 'wheezy',
- osfamily: 'Debian',
- puppetversion: Puppet.version,
- }
- end
let(:params) { { location: 'hello.there' } }
it {
is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').without_content(%r{# my_source\ndeb-src hello.there wheezy main\n})
+ is_expected.not_to contain_package('apt-transport-https')
}
end
end
describe 'no defaults' do
- let :facts do
- {
- os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
- lsbdistid: 'Debian',
- lsbdistcodename: 'wheezy',
- osfamily: 'Debian',
- operatingsystem: 'Debian',
- lsbdistrelease: '7.0',
- puppetversion: Puppet.version,
- }
- end
-
context 'with complex pin' do
let :params do
{
end
it {
- is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(%r{hello.there wheezy main\n})
+ is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(%r{hello.there jessie main\n})
}
it { is_expected.to contain_file('/etc/apt/sources.list.d/my_source.list').that_notifies('Class[Apt::Update]') }
end
it {
- is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(/# foo\ndeb \[arch=x86_64 trusted=yes\] http:\/\/debian\.mirror\.iweb\.ca\/debian\/ sid testing\n/).without_content(%r{deb-src}) # rubocop:disable Metrics/LineLength
+ is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(%r{# foo\ndeb \[arch=x86_64 trusted=yes\] http://debian.mirror.iweb.ca/debian/ sid testing\n})
+ .without_content(%r{deb-src})
}
it {
location: 'http://debian.mirror.iweb.ca/debian/',
release: 'sid',
repos: 'testing',
- key: { 'id' => GPG_KEY_ID, 'server' => 'pgp.mit.edu',
+ key: { 'ensure' => 'refreshed',
+ 'id' => GPG_KEY_ID,
+ 'server' => 'pgp.mit.edu',
'content' => 'GPG key content',
'source' => 'http://apt.puppetlabs.com/pubkey.gpg' },
pin: '10',
end
it {
- is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(/# foo\ndeb \[arch=x86_64 trusted=yes\] http:\/\/debian\.mirror\.iweb\.ca\/debian\/ sid testing\n/).without_content(%r{deb-src}) # rubocop:disable Metrics/LineLength
+ is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(%r{# foo\ndeb \[arch=x86_64 trusted=yes\] http://debian.mirror.iweb.ca/debian/ sid testing\n})
+ .without_content(%r{deb-src})
}
it {
}
it {
- is_expected.to contain_apt__key("Add key: #{GPG_KEY_ID} from Apt::Source my_source").that_comes_before('Apt::Setting[list-my_source]').with(ensure: 'present',
+ is_expected.to contain_apt__key("Add key: #{GPG_KEY_ID} from Apt::Source my_source").that_comes_before('Apt::Setting[list-my_source]').with(ensure: 'refreshed',
id: GPG_KEY_ID,
server: 'pgp.mit.edu',
content: 'GPG key content',
source: 'http://apt.puppetlabs.com/pubkey.gpg')
}
end
+ end
- context 'with simple key' do
- let :params do
- {
- comment: 'foo',
- location: 'http://debian.mirror.iweb.ca/debian/',
- release: 'sid',
- repos: 'testing',
- key: GPG_KEY_ID,
- pin: '10',
- architecture: 'x86_64',
- allow_unsigned: true,
- }
- end
-
- it {
- is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(/# foo\ndeb \[arch=x86_64 trusted=yes\] http:\/\/debian\.mirror\.iweb\.ca\/debian\/ sid testing\n/).without_content(%r{deb-src}) # rubocop:disable Metrics/LineLength
+ context 'with allow_unsigned true' do
+ let :params do
+ {
+ location: 'hello.there',
+ allow_unsigned: true,
}
+ end
- it {
- is_expected.to contain_apt__pin('my_source').that_comes_before('Apt::Setting[list-my_source]').with(ensure: 'present',
- priority: '10',
- origin: 'debian.mirror.iweb.ca')
- }
+ it {
+ is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(%r{# my_source\ndeb \[trusted=yes\] hello.there jessie main\n})
+ }
+ end
- it {
- is_expected.to contain_apt__key("Add key: #{GPG_KEY_ID} from Apt::Source my_source").that_comes_before('Apt::Setting[list-my_source]').with(ensure: 'present',
- id: GPG_KEY_ID)
+ context 'with a https location, install apt-transport-https' do
+ let :params do
+ {
+ location: 'HTTPS://foo.bar',
+ allow_unsigned: false,
}
end
+
+ it {
+ is_expected.to contain_package('apt-transport-https')
+ }
end
- context 'allow_unsigned true' do
+ context 'with a https location and custom release, install apt-transport-https' do
let :facts do
{
- os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
+ os: { family: 'Debian', name: 'Debian', release: { major: '8', full: '8.0' } },
lsbdistid: 'Debian',
- lsbdistcodename: 'wheezy',
+ lsbdistcodename: 'jessie',
osfamily: 'Debian',
puppetversion: Puppet.version,
}
end
let :params do
{
- location: 'hello.there',
- allow_unsigned: true,
+ location: 'HTTPS://foo.bar',
+ allow_unsigned: false,
+ release: 'customrelease',
}
end
it {
- is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(%r{# my_source\ndeb \[trusted=yes\] hello.there wheezy main\n})
+ is_expected.to contain_package('apt-transport-https')
}
end
- context 'architecture equals x86_64' do
+ context 'with a https location, do not install apt-transport-https on oses not in list eg buster' do
let :facts do
{
- os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
+ os: { family: 'Debian', name: 'Debian', release: { major: '10', full: '10.0' } },
lsbdistid: 'Debian',
- lsbdistcodename: 'wheezy',
+ lsbdistcodename: 'buster',
osfamily: 'Debian',
- puppetversion: Puppet.version,
}
end
let :params do
{
- location: 'hello.there',
- include: { 'deb' => false, 'src' => true },
- architecture: 'x86_64',
+ location: 'https://foo.bar',
+ allow_unsigned: false,
}
end
it {
- is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(%r{# my_source\ndeb-src \[arch=x86_64\] hello.there wheezy main\n})
+ is_expected.not_to contain_package('apt-transport-https')
}
end
- context 'with architecture fact and unset architecture parameter' do
+ context 'with architecture equals x86_64' do
let :facts do
{
- architecture: 'amd64',
os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
lsbdistid: 'Debian',
lsbdistcodename: 'wheezy',
osfamily: 'Debian',
- puppetversion: Puppet.version,
}
end
let :params do
{
location: 'hello.there',
include: { 'deb' => false, 'src' => true },
+ architecture: 'x86_64',
}
end
it {
- is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(%r{# my_source\ndeb-src hello.there wheezy main\n})
+ is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(%r{# my_source\ndeb-src \[arch=x86_64\] hello.there wheezy main\n})
}
end
- context 'include_src => true' do
+ context 'with architecture fact and unset architecture parameter' do
let :facts do
- {
- os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
- lsbdistid: 'Debian',
- lsbdistcodename: 'wheezy',
- osfamily: 'Debian',
- puppetversion: Puppet.version,
- }
+ super().merge(architecture: 'amd64')
end
let :params do
{
location: 'hello.there',
- include: { 'src' => true },
+ include: { 'deb' => false, 'src' => true },
}
end
it {
- is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(%r{# my_source\ndeb hello.there wheezy main\ndeb-src hello.there wheezy main\n})
+ is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(%r{# my_source\ndeb-src hello.there jessie main\n})
}
end
- context 'include deb => false' do
- let :facts do
+ context 'with include_src => true' do
+ let :params do
{
- os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
- lsbdistid: 'debian',
- lsbdistcodename: 'wheezy',
- osfamily: 'debian',
- puppetversion: Puppet.version,
+ location: 'hello.there',
+ include: { 'src' => true },
}
end
+
+ it {
+ is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(%r{# my_source\ndeb hello.there jessie main\ndeb-src hello.there jessie main\n})
+ }
+ end
+
+ context 'with include deb => false' do
let :params do
{
include: { 'deb' => false },
it { is_expected.to contain_apt__setting('list-my_source').without_content(%r{deb hello.there wheezy main\n}) }
end
- context 'include src => true and include deb => false' do
- let :facts do
- {
- os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
- lsbdistid: 'debian',
- lsbdistcodename: 'wheezy',
- osfamily: 'debian',
- puppetversion: Puppet.version,
- }
- end
+ context 'with include src => true and include deb => false' do
let :params do
{
include: { 'deb' => false, 'src' => true },
end
it {
- is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(%r{deb-src hello.there wheezy main\n})
+ is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(%r{deb-src hello.there jessie main\n})
}
- it { is_expected.to contain_apt__setting('list-my_source').without_content(%r{deb hello.there wheezy main\n}) }
+ it { is_expected.to contain_apt__setting('list-my_source').without_content(%r{deb hello.there jessie main\n}) }
end
- context 'ensure => absent' do
- let :facts do
- {
- os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
- lsbdistid: 'Debian',
- lsbdistcodename: 'wheezy',
- osfamily: 'Debian',
- puppetversion: Puppet.version,
- }
- end
+ context 'with ensure => absent' do
let :params do
{
ensure: 'absent',
end
describe 'validation' do
- context 'no release' do
+ context 'with no release' do
let :facts do
{
- os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
- lsbdistid: 'Debian',
+ os: { family: 'Debian', name: 'Debian', release: { major: '8', full: '8.0' } },
osfamily: 'Debian',
- puppetversion: Puppet.version,
}
end
let(:params) { { location: 'hello.there' } }
it do
- expect {
- subject.call
- }.to raise_error(Puppet::Error, %r{lsbdistcodename fact not available: release parameter required})
+ is_expected.to raise_error(Puppet::Error, %r{lsbdistcodename fact not available: release parameter required})
end
end
- context 'release is empty string' do
- let :facts do
- {
- os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
- lsbdistid: 'Debian',
- osfamily: 'Debian',
- puppetversion: Puppet.version,
- }
- end
+ context 'with release is empty string' do
let(:params) { { location: 'hello.there', release: '' } }
it { is_expected.to contain_apt__setting('list-my_source').with_content(%r{hello\.there main}) }
end
- context 'invalid pin' do
- let :facts do
- {
- os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
- lsbdistid: 'Debian',
- lsbdistcodename: 'wheezy',
- osfamily: 'Debian',
- puppetversion: Puppet.version,
- }
- end
+ context 'with invalid pin' do
let :params do
{
location: 'hello.there',
end
it do
- expect {
- subject.call
- }.to raise_error(Puppet::Error, %r{expects a value})
+ is_expected.to raise_error(Puppet::Error, %r{expects a value})
end
end
context 'with notify_update = undef (default)' do
- let :facts do
- {
- os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
- lsbdistid: 'Debian',
- lsbdistcodename: 'wheezy',
- osfamily: 'Debian',
- puppetversion: Puppet.version,
- }
- end
let :params do
{
location: 'hello.there',
end
context 'with notify_update = true' do
- let :facts do
- {
- os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
- lsbdistid: 'Debian',
- lsbdistcodename: 'wheezy',
- osfamily: 'Debian',
- puppetversion: Puppet.version,
- }
- end
let :params do
{
location: 'hello.there',
end
context 'with notify_update = false' do
- let :facts do
- {
- os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } },
- lsbdistid: 'Debian',
- lsbdistcodename: 'wheezy',
- osfamily: 'Debian',
- puppetversion: Puppet.version,
- }
- end
let :params do
{
location: 'hello.there',