+ end
+
+ context 'with allow_insecure true' do
+ let :params do
+ {
+ location: 'hello.there',
+ allow_insecure: true,
+ }
+ end
+
+ it {
+ is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(%r{# my_source\ndeb \[allow-insecure=yes\] hello.there stretch main\n})
+ }
+ end
+
+ context 'with allow_unsigned true' do
+ let :params do
+ {
+ location: 'hello.there',
+ allow_unsigned: true,
+ }
+ end
+
+ it {
+ is_expected.to contain_apt__setting('list-my_source').with(ensure: 'present').with_content(%r{# my_source\ndeb \[trusted=yes\] hello.there stretch main\n})
+ }
+ end
+
+ context 'with keyring set' do
+ let :params do
+ {
+ location: 'hello.there',
+ keyring: '/usr/share/keyrings/foo-archive-keyring.gpg',
+ }
+ end
+
+ it {
+ is_expected.to contain_apt__setting('list-my_source')
+ .with(ensure: 'present')
+ .with_content(%r{# my_source\ndeb \[signed-by=/usr/share/keyrings/foo-archive-keyring.gpg\] hello.there stretch main\n})
+ }
+ end
+
+ context 'with keyring, architecture and allow_unsigned set' do
+ let :params do
+ {
+ location: 'hello.there',
+ architecture: 'amd64',
+ allow_unsigned: true,
+ keyring: '/usr/share/keyrings/foo-archive-keyring.gpg',
+ }
+ end
+
+ it {
+ is_expected.to contain_apt__setting('list-my_source')
+ .with(ensure: 'present')
+ .with_content(%r{# my_source\ndeb \[arch=amd64 trusted=yes signed-by=/usr/share/keyrings/foo-archive-keyring.gpg\] hello.there stretch main\n})
+ }
+ end
+
+ 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 'with a https location and custom release, install apt-transport-https' do
+ let :facts do
+ {
+ os: {
+ family: 'Debian',
+ name: 'Debian',
+ release: {
+ major: '9',
+ full: '9.0',
+ },
+ distro: {
+ codename: 'stretch',
+ id: 'Debian',
+ },
+ },
+ puppetversion: Puppet.version,
+ }
+ end
+ let :params do
+ {
+ location: 'HTTPS://foo.bar',
+ allow_unsigned: false,
+ release: 'customrelease',
+ }
+ end
+
+ it {
+ is_expected.to contain_package('apt-transport-https')
+ }
+ end
+
+ 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: '10',
+ full: '10.0',
+ },
+ distro: {
+ codename: 'buster',
+ id: 'Debian',
+ },
+ },
+ }
+ end
+ let :params do
+ {
+ location: 'https://foo.bar',
+ allow_unsigned: false,
+ }
+ end
+
+ it {
+ is_expected.not_to contain_package('apt-transport-https')
+ }
+ end
+
+ context 'with architecture equals x86_64' do
+ let :facts do
+ {
+ os: {
+ family: 'Debian',
+ name: 'Debian',
+ release: {
+ major: '7',
+ full: '7.0',
+ },
+ distro: {
+ codename: 'wheezy',
+ id: 'Debian',
+ },
+ },
+ }
+ 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 \[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 stretch 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 stretch main\ndeb-src hello.there stretch 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 stretch main\n})
+ }
+ it { is_expected.to contain_apt__setting('list-my_source').without_content(%r{deb hello.there stretch main\n}) }
+ end