Merge pull request #287 from oc243/master
[puppet-modules/puppetlabs-apt.git] / spec / classes / apt_spec.rb
1 require 'spec_helper'
2 describe 'apt', :type => :class do
3   let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian' } }
4   let :default_params do
5     {
6       :disable_keys => :undef,
7       :always_apt_update => false,
8       :purge_sources_list => false,
9       :purge_sources_list_d => false,
10     }
11   end
12
13   [{},
14     {
15       :disable_keys => true,
16       :always_apt_update => true,
17       :proxy_host => true,
18       :proxy_port => '3128',
19       :purge_sources_list => true,
20       :purge_sources_list_d => true,
21     },
22     {
23       :purge_preferences   => true,
24       :purge_preferences_d => true,
25     },
26     {
27       :disable_keys => false
28     }
29   ].each do |param_set|
30     describe "when #{param_set == {} ? "using default" : "specifying"} class parameters" do
31       let :param_hash do
32         default_params.merge(param_set)
33       end
34
35       let :params do
36         param_set
37       end
38
39       let :refresh_only_apt_update do
40         if param_hash[:always_apt_update]
41           false
42         else
43           true
44         end
45       end
46
47       it { should contain_class("apt::params") }
48
49       it {
50         if param_hash[:purge_sources_list]
51         should contain_file("sources.list").with({
52             'path'    => "/etc/apt/sources.list",
53             'ensure'  => "present",
54             'owner'   => "root",
55             'group'   => "root",
56             'mode'    => "0644",
57             "content" => "# Repos managed by puppet.\n"
58           })
59         else
60         should contain_file("sources.list").with({
61             'path'    => "/etc/apt/sources.list",
62             'ensure'  => "present",
63             'owner'   => "root",
64             'group'   => "root",
65             'mode'    => "0644",
66             'content' => nil
67           })
68         end
69       }
70       it {
71         if param_hash[:purge_sources_list_d]
72           should create_file("sources.list.d").with({
73             'path'    => "/etc/apt/sources.list.d",
74             'ensure'  => "directory",
75             'owner'   => "root",
76             'group'   => "root",
77             'purge'   => true,
78             'recurse' => true,
79             'notify'  => 'Exec[apt_update]'
80           })
81         else
82           should create_file("sources.list.d").with({
83             'path'    => "/etc/apt/sources.list.d",
84             'ensure'  => "directory",
85             'owner'   => "root",
86             'group'   => "root",
87             'purge'   => false,
88             'recurse' => false,
89             'notify'  => 'Exec[apt_update]'
90           })
91         end
92       }
93       it {
94         if param_hash[:purge_preferences]
95           should create_file('apt-preferences').with({
96             :ensure  => 'absent',
97             :path    => '/etc/apt/preferences',
98           })
99         else
100           should_not contain_file('apt-preferences')
101         end
102       }
103
104       it {
105         if param_hash[:purge_preferences_d]
106           should create_file("preferences.d").with({
107             'path'    => "/etc/apt/preferences.d",
108             'ensure'  => "directory",
109             'owner'   => "root",
110             'group'   => "root",
111             'purge'   => true,
112             'recurse' => true,
113           })
114         else
115           should create_file("preferences.d").with({
116             'path'    => "/etc/apt/preferences.d",
117             'ensure'  => "directory",
118             'owner'   => "root",
119             'group'   => "root",
120             'purge'   => false,
121             'recurse' => false,
122           })
123         end
124       }
125
126       it {
127         should contain_exec("apt_update").with({
128           'command'     => "/usr/bin/apt-get update",
129           'refreshonly' => refresh_only_apt_update
130         })
131       }
132
133       it {
134         if param_hash[:disable_keys] == true
135           should create_file("99unauth").with({
136             'content' => "APT::Get::AllowUnauthenticated 1;\n",
137             'ensure'  => "present",
138             'path'    => "/etc/apt/apt.conf.d/99unauth"
139           })
140         elsif param_hash[:disable_keys] == false
141           should create_file("99unauth").with({
142             'ensure' => "absent",
143             'path'   => "/etc/apt/apt.conf.d/99unauth"
144           })
145         elsif param_hash[:disable_keys] != :undef
146           should_not create_file("99unauth").with({
147             'path'   => "/etc/apt/apt.conf.d/99unauth"
148           })
149         end
150       }
151       describe 'when setting a proxy' do
152         it {
153           if param_hash[:proxy_host]
154             should contain_file('01proxy').with(
155               'path'    => '/etc/apt/apt.conf.d/01proxy',
156               'content' => "Acquire::http::Proxy \"http://#{param_hash[:proxy_host]}:#{param_hash[:proxy_port]}\";\n",
157               'notify'  => "Exec[apt_update]"
158             )
159           else
160             should contain_file('01proxy').with(
161               'path'    => '/etc/apt/apt.conf.d/01proxy',
162               'notify'  => 'Exec[apt_update]',
163               'ensure'  => 'absent'
164             )
165           end
166         }
167       end
168     end
169   end
170 end