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