+ 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})
+ }
+ end
+
+ context 'with architecture fact and unset architecture parameter' do
+ let :facts do
+ super().merge(architecture: 'amd64')
+ end
+ let :params do
+ {
+ location: 'hello.there',
+ 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-src hello.there jessie main\n})
+ }
+ end
+
+ context 'with include_src => true' do
+ let :params do
+ {
+ 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 },
+ location: 'hello.there',
+ }
+ end
+
+ it {
+ is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').without_content(%r{deb-src hello.there wheezy main\n})
+ }
+ it { is_expected.to contain_apt__setting('list-my_source').without_content(%r{deb hello.there wheezy main\n}) }
+ end
+
+ context 'with include src => true and include deb => false' do
+ let :params do
+ {
+ include: { 'deb' => false, 'src' => true },
+ location: 'hello.there',
+ }
+ end
+
+ it {
+ 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 jessie main\n}) }
+ end
+
+ context 'with ensure => absent' do
+ let :params do
+ {
+ ensure: 'absent',
+ }
+ end
+
+ it {
+ is_expected.to contain_apt__setting('list-my_source').with(ensure: 'absent')
+ }
+ end
+
+ describe 'validation' do
+ context 'with no release' do
+ let :facts do
+ {
+ os: { family: 'Debian', name: 'Debian', release: { major: '8', full: '8.0' } },
+ osfamily: 'Debian',
+ }
+ end
+ let(:params) { { location: 'hello.there' } }
+
+ it do
+ is_expected.to raise_error(Puppet::Error, %r{lsbdistcodename fact not available: release parameter required})
+ end
+ 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 'with invalid pin' do
+ let :params do
+ {
+ location: 'hello.there',
+ pin: true,
+ }
+ end
+
+ it do
+ is_expected.to raise_error(Puppet::Error, %r{expects a value})
+ end
+ end
+
+ context 'with notify_update = undef (default)' do
+ let :params do
+ {
+ location: 'hello.there',
+ }
+ end
+
+ it { is_expected.to contain_apt__setting("list-#{title}").with_notify_update(true) }
+ end
+
+ context 'with notify_update = true' do
+ let :params do
+ {
+ location: 'hello.there',
+ notify_update: true,
+ }
+ end
+
+ it { is_expected.to contain_apt__setting("list-#{title}").with_notify_update(true) }
+ end
+
+ context 'with notify_update = false' do
+ let :params do
+ {
+ location: 'hello.there',
+ notify_update: false,
+ }
+ end
+
+ it { is_expected.to contain_apt__setting("list-#{title}").with_notify_update(false) }
+ end
+ end
+end