X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=spec%2Fclasses%2Fapt_spec.rb;h=4421180ba459998f725b01ffa008efb18572125f;hb=23ce10e3caa92eaf9b2bbc4b2a67838780e22dda;hp=011286d876bc96fd78cf9a73a81e233a2b160252;hpb=16c73c8ab4786a485cce0faaf2085100b77ec870;p=puppet-modules%2Fpuppetlabs-apt.git diff --git a/spec/classes/apt_spec.rb b/spec/classes/apt_spec.rb index 011286d..4421180 100644 --- a/spec/classes/apt_spec.rb +++ b/spec/classes/apt_spec.rb @@ -32,14 +32,22 @@ preferences_d = { ensure: 'directory', recurse: false, notify: 'Class[Apt::Update]' } +apt_conf_d = { ensure: 'directory', + path: '/etc/apt/apt.conf.d', + owner: 'root', + group: 'root', + mode: '0644', + purge: false, + recurse: false, + notify: 'Class[Apt::Update]' } + describe 'apt' 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', osfamily: 'Debian', - lsbdistcodename: 'wheezy', - puppetversion: Puppet.version, + lsbdistcodename: 'jessie', } end @@ -60,6 +68,10 @@ describe 'apt' do is_expected.to contain_file('preferences.d').that_notifies('Class[Apt::Update]').only_with(preferences_d) } + it { + is_expected.to contain_file('apt.conf.d').that_notifies('Class[Apt::Update]').only_with(apt_conf_d) + } + it { is_expected.to contain_file('/etc/apt/auth.conf').with_ensure('absent') } it 'lays down /etc/apt/apt.conf.d/15update-stamp' do @@ -159,7 +171,8 @@ describe 'apt' do { update: { 'frequency' => 'always', 'timeout' => 1, 'tries' => 3 }, purge: { 'sources.list' => false, 'sources.list.d' => false, - 'preferences' => false, 'preferences.d' => false }, + 'preferences' => false, 'preferences.d' => false, + 'apt.conf.d' => false }, } end @@ -181,6 +194,11 @@ describe 'apt' do recurse: false) } + it { + is_expected.to contain_file('apt.conf.d').with(purge: false, + recurse: false) + } + it { is_expected.to contain_exec('apt_update').with(refreshonly: false, timeout: 1, @@ -189,59 +207,149 @@ describe 'apt' do end context 'with entries for /etc/apt/auth.conf' do - let(:params) do - { - auth_conf_entries: [ - { machine: 'deb.example.net', - login: 'foologin', - password: 'secret' }, - { machine: 'apt.example.com', - login: 'aptlogin', - password: 'supersecret' }, - ], - } - end + facts_hash = { + 'Ubuntu 14.04' => { + os: { family: 'Debian', name: 'Ubuntu', release: { major: '14', full: '14.04' } }, + osfamily: 'Debian', + lsbdistcodename: 'trusty', + lsbdistid: 'Ubuntu', + lsbdistrelease: '14.04', + }, + 'Ubuntu 16.04' => { + os: { family: 'Debian', name: 'Ubuntu', release: { major: '16', full: '16.04' } }, + osfamily: 'Debian', + lsbdistcodename: 'xenial', + lsbdistid: 'Ubuntu', + lsbdistrelease: '16.04', + }, + 'Ubuntu 18.04' => { + os: { family: 'Debian', name: 'Ubuntu', release: { major: '18', full: '18.04' } }, + osfamily: 'Debian', + lsbdistcodename: 'bionic', + lsbdistid: 'Ubuntu', + lsbdistrelease: '18.04', + }, + 'Debian 7.0' => { + os: { family: 'Debian', name: 'Debian', release: { major: '7', full: '7.0' } }, + lsbdistid: 'Debian', + osfamily: 'Debian', + lsbdistcodename: 'wheezy', + }, + 'Debian 8.0' => { + os: { family: 'Debian', name: 'Debian', release: { major: '8', full: '8.0' } }, + lsbdistid: 'Debian', + osfamily: 'Debian', + lsbdistcodename: 'jessie', + }, + 'Debian 9.0' => { + os: { family: 'Debian', name: 'Debian', release: { major: '9', full: '9.0' } }, + lsbdistid: 'Debian', + osfamily: 'Debian', + lsbdistcodename: 'stretch', + }, + 'Debian 10.0' => { + os: { family: 'Debian', name: 'Debian', release: { major: '10', full: '10.0' } }, + lsbdistid: 'Debian', + osfamily: 'Debian', + lsbdistcodename: 'buster', + }, + } - auth_conf_content = "// This file is managed by Puppet. DO NOT EDIT. + facts_hash.each do |os, facts| + context "on #{os}" do + let(:facts) do + facts + end + let(:params) do + { + auth_conf_entries: [ + { + machine: 'deb.example.net', + login: 'foologin', + password: 'secret', + }, + { + machine: 'apt.example.com', + login: 'aptlogin', + password: 'supersecret', + }, + ], + } + end + + context 'with manage_auth_conf => true' do + let(:params) do + super().merge(manage_auth_conf: true) + end + + # Going forward starting with Ubuntu 16.04 and Debian 9.0 + # /etc/apt/auth.conf is owned by _apt. In previous versions it is + # root. + auth_conf_owner = case os + when 'Ubuntu 14.04', 'Debian 7.0', 'Debian 8.0' + 'root' + else + '_apt' + end + + auth_conf_content = "// This file is managed by Puppet. DO NOT EDIT. machine deb.example.net login foologin password secret machine apt.example.com login aptlogin password supersecret " - it { - is_expected.to contain_file('/etc/apt/auth.conf').with(ensure: 'present', - owner: 'root', - group: 'root', - mode: '0600', - notify: 'Class[Apt::Update]', - content: auth_conf_content) - } - end + it { + is_expected.to contain_file('/etc/apt/auth.conf').with(ensure: 'present', + owner: auth_conf_owner, + group: 'root', + mode: '0600', + notify: 'Class[Apt::Update]', + content: auth_conf_content) + } + end + + context 'with manage_auth_conf => false' do + let(:params) do + super().merge(manage_auth_conf: false) + end + + it { + is_expected.not_to contain_file('/etc/apt/auth.conf') + } + end + end - context 'with improperly specified entries for /etc/apt/auth.conf' do - let(:params) do - { - auth_conf_entries: [ - { machinn: 'deb.example.net', - username: 'foologin', - password: 'secret' }, - { machine: 'apt.example.com', - login: 'aptlogin', - password: 'supersecret' }, - ], - } + context 'with improperly specified entries for /etc/apt/auth.conf' do + let(:params) do + { + auth_conf_entries: [ + { + machinn: 'deb.example.net', + username: 'foologin', + password: 'secret', + }, + { + machine: 'apt.example.com', + login: 'aptlogin', + password: 'supersecret', + }, + ], + } + end + + it { is_expected.to raise_error(Puppet::Error) } + end end - - it { is_expected.to raise_error(Puppet::Error) } end context 'with sources defined on valid osfamily' do let :facts do - { os: { family: 'Debian', name: 'Ubuntu', release: { major: '16', full: '16.04' } }, + { + os: { family: 'Debian', name: 'Ubuntu', release: { major: '16', full: '16.04' } }, osfamily: 'Debian', lsbdistcodename: 'xenial', lsbdistid: 'Ubuntu', lsbdistrelease: '16.04', - puppetversion: Puppet.version } + } end let(:params) do { sources: { @@ -281,8 +389,7 @@ machine apt.example.com login aptlogin password supersecret os: { family: 'Debian', name: 'Ubuntu', release: { major: '16', full: '16.04' } }, osfamily: 'Debian', lsbdistcodename: 'xenial', - lsbdistid: 'Debian', - puppetversion: Puppet.version, + lsbdistid: 'Ubuntu', } end let(:params) do @@ -311,8 +418,7 @@ machine apt.example.com login aptlogin password supersecret os: { family: 'Debian', name: 'Ubuntu', release: { major: '16', full: '16.04' } }, osfamily: 'Debian', lsbdistcodename: 'xenial', - lsbdistid: 'Debian', - puppetversion: Puppet.version, + lsbdistid: 'Ubuntu', } end let(:params) do @@ -341,9 +447,8 @@ machine apt.example.com login aptlogin password supersecret os: { family: 'Debian', name: 'Ubuntu', release: { major: '16', full: '16.04' } }, osfamily: 'Debian', lsbdistcodename: 'xenial', - lsbdistid: 'ubuntu', + lsbdistid: 'Ubuntu', lsbdistrelease: '16.04', - puppetversion: Puppet.version, } end let(:params) do @@ -363,8 +468,7 @@ machine apt.example.com login aptlogin password supersecret os: { family: 'Debian', name: 'Ubuntu', release: { major: '16', full: '16.04' } }, osfamily: 'Debian', lsbdistcodename: 'xenial', - lsbdistid: 'Debian', - puppetversion: Puppet.version, + lsbdistid: 'Ubuntu', } end let(:params) do @@ -384,8 +488,7 @@ machine apt.example.com login aptlogin password supersecret os: { family: 'Debian', name: 'Ubuntu', release: { major: '16', full: '16.04' } }, osfamily: 'Debian', lsbdistcodename: 'xenial', - lsbdistid: 'Debian', - puppetversion: Puppet.version, + lsbdistid: 'Ubuntu', } end let(:params) do @@ -431,5 +534,13 @@ machine apt.example.com login aptlogin password supersecret is_expected.to raise_error(Puppet::Error) end end + + context "with purge['apt.conf.d']=>'banana'" do + let(:params) { { purge: { 'apt.conf.d' => 'banana' } } } + + it do + is_expected.to raise_error(Puppet::Error) + end + end end end