(maint) Update apt custom facts
[puppet-modules/puppetlabs-apt.git] / spec / defines / conf_spec.rb
1 require 'spec_helper'
2 describe 'apt::conf', type: :define do
3   let :pre_condition do
4     'class { "apt": }'
5   end
6   let(:facts) do
7     {
8       os: { family: 'Debian', name: 'Debian', release: { major: '8', full: '8.0' } },
9       lsbdistid: 'Debian',
10       osfamily: 'Debian',
11       lsbdistcodename: 'jessie',
12     }
13   end
14   let :title do
15     'norecommends'
16   end
17
18   describe 'when creating an apt preference' do
19     let :default_params do
20       {
21         priority: '00',
22         content: "Apt::Install-Recommends 0;\nApt::AutoRemove::InstallRecommends 1;\n",
23       }
24     end
25     let :params do
26       default_params
27     end
28
29     let :filename do
30       '/etc/apt/apt.conf.d/00norecommends'
31     end
32
33     it {
34       is_expected.to contain_file(filename).with('ensure' => 'present',
35                                                  'content'   => %r{Apt::Install-Recommends 0;\nApt::AutoRemove::InstallRecommends 1;},
36                                                  'owner'     => 'root',
37                                                  'group'     => 'root',
38                                                  'mode'      => '0644')
39     }
40
41     context 'with notify_update = true (default)' do
42       let :params do
43         default_params
44       end
45
46       it { is_expected.to contain_apt__setting("conf-#{title}").with_notify_update(true) }
47     end
48
49     context 'with notify_update = false' do
50       let :params do
51         default_params.merge(notify_update: false)
52       end
53
54       it { is_expected.to contain_apt__setting("conf-#{title}").with_notify_update(false) }
55     end
56   end
57
58   describe 'when creating a preference without content' do
59     let :params do
60       {
61         priority: '00',
62       }
63     end
64
65     it 'fails' do
66       is_expected.to raise_error(%r{pass in content})
67     end
68   end
69
70   describe 'when removing an apt preference' do
71     let :params do
72       {
73         ensure: 'absent',
74         priority: '00',
75       }
76     end
77
78     let :filename do
79       '/etc/apt/apt.conf.d/00norecommends'
80     end
81
82     it {
83       is_expected.to contain_file(filename).with('ensure' => 'absent',
84                                                  'owner'     => 'root',
85                                                  'group'     => 'root',
86                                                  'mode'      => '0644')
87     }
88   end
89 end