manifests: use modern os facts
[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: {
11         family: 'Debian',
12         name: 'Debian',
13         release: {
14           major: '8',
15           full: '8.0',
16         },
17         distro: {
18           codename: 'jessie',
19           id: 'Debian',
20         },
21       },
22     }
23   end
24   let :title do
25     'norecommends'
26   end
27
28   describe 'when creating an apt preference' do
29     let :default_params do
30       {
31         priority: '00',
32         content: "Apt::Install-Recommends 0;\nApt::AutoRemove::InstallRecommends 1;\n",
33       }
34     end
35     let :params do
36       default_params
37     end
38
39     let :filename do
40       '/etc/apt/apt.conf.d/00norecommends'
41     end
42
43     it {
44       is_expected.to contain_file(filename).with('ensure' => 'present',
45                                                  'content'   => %r{Apt::Install-Recommends 0;\nApt::AutoRemove::InstallRecommends 1;},
46                                                  'owner'     => 'root',
47                                                  'group'     => 'root')
48     }
49
50     context 'with notify_update = true (default)' do
51       let :params do
52         default_params
53       end
54
55       it { is_expected.to contain_apt__setting("conf-#{title}").with_notify_update(true) }
56     end
57
58     context 'with notify_update = false' do
59       let :params do
60         default_params.merge(notify_update: false)
61       end
62
63       it { is_expected.to contain_apt__setting("conf-#{title}").with_notify_update(false) }
64     end
65   end
66
67   describe 'when creating a preference without content' do
68     let :params do
69       {
70         priority: '00',
71       }
72     end
73
74     it 'fails' do
75       is_expected.to raise_error(%r{pass in content})
76     end
77   end
78
79   describe 'when removing an apt preference' do
80     let :params do
81       {
82         ensure: 'absent',
83         priority: '00',
84       }
85     end
86
87     let :filename do
88       '/etc/apt/apt.conf.d/00norecommends'
89     end
90
91     it {
92       is_expected.to contain_file(filename).with('ensure' => 'absent',
93                                                  'owner'     => 'root',
94                                                  'group'     => 'root')
95     }
96   end
97 end