Merge pull request #752 from antaflos/apt_auth_conf_support
[puppet-modules/puppetlabs-apt.git] / spec / classes / apt_update_spec.rb
1 require 'spec_helper'
2
3 describe 'apt::update', type: :class do
4   context "when apt::update['frequency']='always'" do
5     {
6       'a recent run'                                 => Time.now.to_i,
7       'we are due for a run'                         => 1_406_660_561,
8       'the update-success-stamp file does not exist' => -1,
9     }.each_pair do |desc, factval|
10       context "when $::apt_update_last_success indicates #{desc}" do
11         let(:facts) do
12           {
13             os: { family: 'Debian', name: 'Debian', release: { major: '8', full: '8.0' } },
14             lsbdistid: 'Debian',
15             osfamily: 'Debian',
16             apt_update_last_success: factval,
17             lsbdistcodename: 'jessie',
18             puppetversion: Puppet.version,
19           }
20         end
21         let(:pre_condition) do
22           "class{'::apt': update => {'frequency' => 'always' },}"
23         end
24
25         it 'triggers an apt-get update run' do
26           # set the apt_update exec's refreshonly attribute to false
27           is_expected.to contain_exec('apt_update').with('refreshonly' => false)
28         end
29       end
30     end
31     context 'when $::apt_update_last_success is nil' do
32       let(:facts) do
33         {
34           os: { family: 'Debian', name: 'Debian', release: { major: '8', full: '8.0' } },
35           lsbdistid: 'Debian',
36           osfamily: 'Debian',
37           lsbdistcodename: 'jessie',
38           puppetversion: Puppet.version,
39         }
40       end
41       let(:pre_condition) { "class{ '::apt': update => {'frequency' => 'always' },}" }
42
43       it 'triggers an apt-get update run' do
44         # set the apt_update exec\'s refreshonly attribute to false
45         is_expected.to contain_exec('apt_update').with('refreshonly' => false)
46       end
47     end
48   end
49   context "when apt::update['frequency']='reluctantly'" do
50     {
51       'a recent run'                                 => Time.now.to_i,
52       'we are due for a run'                         => 1_406_660_561,
53       'the update-success-stamp file does not exist' => -1,
54     }.each_pair do |desc, factval|
55       context "when $::apt_update_last_success indicates #{desc}" do
56         let(:facts) do
57           {
58             os: { family: 'Debian', name: 'Debian', release: { major: '8', full: '8.0' } },
59             lsbdistid: 'Debian',
60             osfamily: 'Debian',
61             apt_update_last_success: factval,
62             lsbdistcodename: 'jessie',
63             puppetversion: Puppet.version,
64           }
65         end
66         let(:pre_condition) { "class{ '::apt': update => {'frequency' => 'reluctantly' },}" }
67
68         it 'does not trigger an apt-get update run' do
69           # don't change the apt_update exec's refreshonly attribute. (it should be true)
70           is_expected.to contain_exec('apt_update').with('refreshonly' => true)
71         end
72       end
73     end
74     context 'when $::apt_update_last_success is nil' do
75       let(:facts) do
76         {
77           os: { family: 'Debian', name: 'Debian', release: { major: '8', full: '8.0' } },
78           lsbdistid: 'Debian',
79           osfamily: 'Debian',
80           lsbdistcodename: 'jessie',
81           puppetversion: Puppet.version,
82         }
83       end
84       let(:pre_condition) { "class{ '::apt': update => {'frequency' => 'reluctantly' },}" }
85
86       it 'does not trigger an apt-get update run' do
87         # don't change the apt_update exec's refreshonly attribute. (it should be true)
88         is_expected.to contain_exec('apt_update').with('refreshonly' => true)
89       end
90     end
91   end
92   ['daily', 'weekly'].each do |update_frequency|
93     context "when apt::update['frequency'] has the value of #{update_frequency}" do
94       { 'we are due for a run' => 1_406_660_561, 'the update-success-stamp file does not exist' => -1 }.each_pair do |desc, factval|
95         context "when $::apt_update_last_success indicates #{desc}" do
96           let(:facts) do
97             {
98               os: { family: 'Debian', name: 'Debian', release: { major: '8', full: '8.0' } },
99               lsbdistid: 'Debian',
100               osfamily: 'Debian',
101               apt_update_last_success: factval,
102               lsbdistcodename: 'jessie',
103               puppetversion: Puppet.version,
104             }
105           end
106           let(:pre_condition) { "class{ '::apt': update => {'frequency' => '#{update_frequency}',} }" }
107
108           it 'triggers an apt-get update run' do
109             # set the apt_update exec\'s refreshonly attribute to false
110             is_expected.to contain_exec('apt_update').with('refreshonly' => false)
111           end
112         end
113       end
114       context 'when the $::apt_update_last_success fact has a recent value' do
115         let(:facts) do
116           {
117             os: { family: 'Debian', name: 'Debian', release: { major: '8', full: '8.0' } },
118             lsbdistid: 'Debian',
119             osfamily: 'Debian',
120             lsbdistcodename: 'jessie',
121             apt_update_last_success: Time.now.to_i,
122             puppetversion: Puppet.version,
123           }
124         end
125         let(:pre_condition) { "class{ '::apt': update => {'frequency' => '#{update_frequency}',} }" }
126
127         it 'does not trigger an apt-get update run' do
128           # don't change the apt_update exec\'s refreshonly attribute. (it should be true)
129           is_expected.to contain_exec('apt_update').with('refreshonly' => true)
130         end
131       end
132       context 'when $::apt_update_last_success is nil' do
133         let(:facts) do
134           {
135             os: { family: 'Debian', name: 'Debian', release: { major: '8', full: '8.0' } },
136             lsbdistid: 'Debian',
137             osfamily: 'Debian',
138             lsbdistcodename: 'jessie',
139             apt_update_last_success: nil,
140             puppetversion: Puppet.version,
141           }
142         end
143         let(:pre_condition) { "class{ '::apt': update => {'frequency' => '#{update_frequency}',} }" }
144
145         it 'triggers an apt-get update run' do
146           # set the apt_update exec\'s refreshonly attribute to false
147           is_expected.to contain_exec('apt_update').with('refreshonly' => false)
148         end
149       end
150     end
151   end
152 end