Merge pull request #754 from paladox/patch-1
[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       puppetversion: Puppet.version,
13     }
14   end
15   let :title do
16     'norecommends'
17   end
18
19   describe 'when creating an apt preference' do
20     let :default_params do
21       {
22         priority: '00',
23         content: "Apt::Install-Recommends 0;\nApt::AutoRemove::InstallRecommends 1;\n",
24       }
25     end
26     let :params do
27       default_params
28     end
29
30     let :filename do
31       '/etc/apt/apt.conf.d/00norecommends'
32     end
33
34     it {
35       is_expected.to contain_file(filename).with('ensure' => 'present',
36                                                  'content'   => %r{Apt::Install-Recommends 0;\nApt::AutoRemove::InstallRecommends 1;},
37                                                  'owner'     => 'root',
38                                                  'group'     => 'root',
39                                                  'mode'      => '0644')
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                                                  'mode'      => '0644')
88     }
89   end
90 end