5decab57e99b4c91dbec16825553cc17fc7dd31e
[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     }
39
40     context 'with notify_update = true (default)' do
41       let :params do
42         default_params
43       end
44
45       it { is_expected.to contain_apt__setting("conf-#{title}").with_notify_update(true) }
46     end
47
48     context 'with notify_update = false' do
49       let :params do
50         default_params.merge(notify_update: false)
51       end
52
53       it { is_expected.to contain_apt__setting("conf-#{title}").with_notify_update(false) }
54     end
55   end
56
57   describe 'when creating a preference without content' do
58     let :params do
59       {
60         priority: '00',
61       }
62     end
63
64     it 'fails' do
65       is_expected.to raise_error(%r{pass in content})
66     end
67   end
68
69   describe 'when removing an apt preference' do
70     let :params do
71       {
72         ensure: 'absent',
73         priority: '00',
74       }
75     end
76
77     let :filename do
78       '/etc/apt/apt.conf.d/00norecommends'
79     end
80
81     it {
82       is_expected.to contain_file(filename).with('ensure' => 'absent',
83                                                  'owner'     => 'root',
84                                                  'group'     => 'root')
85     }
86   end
87 end