Merge pull request #681 from HelenCampbell/emptystringing
[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) { {
7     :os => { :family => 'Debian', :name => 'Debian', :release => { :major => '7', :full => '7.0' }},
8     :lsbdistid       => 'Debian',
9     :osfamily        => 'Debian',
10     :lsbdistcodename => 'wheezy',
11     :puppetversion   => Puppet.version,
12   } }
13   let :title do
14     'norecommends'
15   end
16
17   describe "when creating an apt preference" do
18     let :default_params do
19       {
20         :priority => '00',
21         :content  => "Apt::Install-Recommends 0;\nApt::AutoRemove::InstallRecommends 1;\n"
22       }
23     end
24     let :params do
25       default_params
26     end
27
28     let :filename do
29       "/etc/apt/apt.conf.d/00norecommends"
30     end
31
32     it { is_expected.to contain_file(filename).with({
33           'ensure'    => 'present',
34           'content'   => /Apt::Install-Recommends 0;\nApt::AutoRemove::InstallRecommends 1;/,
35           'owner'     => 'root',
36           'group'     => 'root',
37           'mode'      => '0644',
38         })
39       }
40
41     context "with notify_update = true (default)" do
42       let :params do
43         default_params
44       end
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({
51           :notify_update => false
52         })
53       end
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       expect { subject.call } .to raise_error(/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 { is_expected.to contain_file(filename).with({
83         'ensure'    => 'absent',
84         'owner'     => 'root',
85         'group'     => 'root',
86         'mode'      => '0644',
87       })
88     }
89   end
90 end