Merge pull request #403 from WolverineFan/fix_apt_updates_facts
[puppet-modules/puppetlabs-apt.git] / spec / unit / facter / apt_has_updates_spec.rb
1 require 'spec_helper'
2
3 describe 'apt_has_updates fact' do
4   subject { Facter.fact(:apt_has_updates).value }
5   after(:each) { Facter.clear }
6
7   describe 'on non-Debian distro' do
8     before {
9       Facter.fact(:osfamily).expects(:value).at_least(1).returns 'RedHat'
10     }
11     it { should be_nil }
12   end
13
14   describe 'on Debian based distro missing update-notifier-common' do
15     before {
16       Facter.fact(:osfamily).expects(:value).at_least(1).returns 'Debian'
17       File.stubs(:executable?) # Stub all other calls
18       File.expects(:executable?).with('/usr/lib/update-notifier/apt-check').returns false
19     }
20     it { should be_nil }
21   end
22
23   describe 'on Debian based distro with broken packages' do
24     before {
25       Facter.fact(:osfamily).expects(:value).at_least(1).returns 'Debian'
26       File.stubs(:executable?) # Stub all other calls
27       Facter::Util::Resolution.stubs(:exec) # Catch all other calls
28       File.expects(:executable?).with('/usr/lib/update-notifier/apt-check').returns true
29       Facter::Util::Resolution.expects(:exec).with('/usr/lib/update-notifier/apt-check 2>&1').returns "E: Error: BrokenCount > 0"
30     }
31     it { should be_nil }
32   end
33
34   describe 'on Debian based distro with unknown error with semicolons' do
35     before {
36       Facter.fact(:osfamily).expects(:value).at_least(1).returns 'Debian'
37       File.stubs(:executable?) # Stub all other calls
38       Facter::Util::Resolution.stubs(:exec) # Catch all other calls
39       File.expects(:executable?).with('/usr/lib/update-notifier/apt-check').returns true
40       Facter::Util::Resolution.expects(:exec).with('/usr/lib/update-notifier/apt-check 2>&1').returns "E: Unknown Error: 'This error contains something that could be parsed like 4;3' (10)"
41     }
42     it { should be_nil }
43   end
44
45   describe 'on Debian based distro' do
46     before {
47       Facter.fact(:osfamily).expects(:value).at_least(1).returns 'Debian'
48       File.stubs(:executable?) # Stub all other calls
49       Facter::Util::Resolution.stubs(:exec) # Catch all other calls
50       File.expects(:executable?).with('/usr/lib/update-notifier/apt-check').returns true
51       Facter::Util::Resolution.expects(:exec).with('/usr/lib/update-notifier/apt-check 2>&1').returns "4;3"
52     }
53     it { should be true }
54   end
55 end
56