Merge pull request #435 from mhaskel/setting_fix
[puppet-modules/puppetlabs-apt.git] / spec / defines / setting_spec.rb
1 require 'spec_helper'
2
3 describe 'apt::setting' do
4   let(:pre_condition) { 'class { "apt": }' }
5   let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian' } }
6   let(:title) { 'teddybear' }
7
8   let(:default_params) { { :setting_type => 'conf', :content => 'di' } }
9
10   describe 'when using the defaults' do
11     context 'without setting_type' do
12       it do
13         expect { should compile }.to raise_error(Puppet::Error, /Must pass setting_type /)
14       end
15     end
16
17     context 'without source or content' do
18       let(:params) { { :setting_type => 'conf' } }
19       it do
20         expect { should compile }.to raise_error(Puppet::Error, /needs either of /)
21       end
22     end
23
24     context 'with setting_type=conf' do
25       let(:params) { default_params }
26       it { should contain_file('/etc/apt/apt.conf.d/50teddybear') }
27     end
28
29     context 'with setting_type=pref' do
30       let(:params) { { :setting_type => 'pref', :content => 'di' } }
31       it { should contain_file('/etc/apt/preferences.d/50teddybear') }
32     end
33
34     context 'with setting_type=list' do
35       let(:params) { { :setting_type => 'list', :content => 'di' } }
36       it { should contain_file('/etc/apt/sources.list.d/teddybear.list') }
37     end
38
39     context 'with source' do
40       let(:params) { { :setting_type => 'conf', :source => 'puppet:///la/die/dah' } }
41       it {
42         should contain_file('/etc/apt/apt.conf.d/50teddybear').with({
43         :ensure => 'file',
44         :owner  => 'root',
45         :group  => 'root',
46         :mode   => '0644',
47         :source => "#{params[:source]}",
48       })}
49     end
50
51     context 'with content' do
52       let(:params) { default_params }
53       it { should contain_file('/etc/apt/apt.conf.d/50teddybear').with({
54         :ensure  => 'file',
55         :owner   => 'root',
56         :group   => 'root',
57         :mode    => '0644',
58         :content => "#{params[:content]}",
59       })}
60     end
61   end
62
63   describe 'when trying to pull one over' do
64     context 'with source and content' do
65       let(:params) { default_params.merge({ :source => 'la' }) }
66       it do
67         expect { should compile }.to raise_error(Puppet::Error, /cannot have both /)
68       end
69     end
70
71     context 'with setting_type=ext' do
72       let(:params) { default_params.merge({ :setting_type => 'ext' }) }
73       it do
74         expect { should compile }.to raise_error(Puppet::Error, /"ext" does not /)
75       end
76     end
77
78     context 'with ensure=banana' do
79       let(:params) { default_params.merge({ :ensure => 'banana' }) }
80       it do
81         expect { should compile }.to raise_error(Puppet::Error, /"banana" does not /)
82       end
83     end
84
85     context 'with priority=1.2' do
86       let(:params) { default_params.merge({ :priority => 1.2 }) }
87       it do
88         expect { should compile }.to raise_error(Puppet::Error, /be an integer /)
89       end
90     end
91   end
92
93   describe 'with priority=100' do
94     let(:params) { default_params.merge({ :priority => 100 }) }
95     it { should contain_file('/etc/apt/apt.conf.d/100teddybear') }
96   end
97
98   describe 'with ensure=absent' do
99     let(:params) { default_params.merge({ :ensure => 'absent' }) }
100     it { should contain_file('/etc/apt/apt.conf.d/50teddybear').with({
101       :ensure => 'absent',
102     })}
103   end
104
105   describe 'with file_perms' do
106     context "{'owner' => 'roosevelt'}" do
107       let(:params) { default_params.merge({ :file_perms => {'owner' => 'roosevelt'} }) }
108       it { should contain_file('/etc/apt/apt.conf.d/50teddybear').with({
109         :owner => 'roosevelt',
110         :group => 'root',
111         :mode  => '0644',
112       })}
113     end
114
115     context "'group' => 'roosevelt'}" do
116       let(:params) { default_params.merge({ :file_perms => {'group' => 'roosevelt'} }) }
117       it { should contain_file('/etc/apt/apt.conf.d/50teddybear').with({
118         :owner => 'root',
119         :group => 'roosevelt',
120         :mode  => '0644',
121       })}
122     end
123
124     context "'owner' => 'roosevelt'}" do
125       let(:params) { default_params.merge({ :file_perms => {'mode' => '0600'} }) }
126       it { should contain_file('/etc/apt/apt.conf.d/50teddybear').with({
127         :owner => 'root',
128         :group => 'root',
129         :mode  => '0600',
130       })}
131     end
132   end
133 end