11d90cb57195132f11acbaf44416097525e7f469
[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         end
100       }
101
102       it {
103         if param_hash[:purge_preferences_d]
104           should create_file("preferences.d").with({
105             'path'    => "/etc/apt/preferences.d",
106             'ensure'  => "directory",
107             'owner'   => "root",
108             'group'   => "root",
109             'purge'   => true,
110             'recurse' => true,
111           })
112         else
113           should create_file("preferences.d").with({
114             'path'    => "/etc/apt/preferences.d",
115             'ensure'  => "directory",
116             'owner'   => "root",
117             'group'   => "root",
118             'purge'   => false,
119             'recurse' => false,
120           })
121         end
122       }
123
124       it {
125         should contain_exec("apt_update").with({
126           'command'     => "/usr/bin/apt-get update",
127           'refreshonly' => refresh_only_apt_update
128         })
129       }
130
131       it {
132         if param_hash[:disable_keys] == true
133           should create_file("99unauth").with({
134             'content' => "APT::Get::AllowUnauthenticated 1;\n",
135             'ensure'  => "present",
136             'path'    => "/etc/apt/apt.conf.d/99unauth"
137           })
138         elsif param_hash[:disable_keys] == false
139           should create_file("99unauth").with({
140             'ensure' => "absent",
141             'path'   => "/etc/apt/apt.conf.d/99unauth"
142           })
143         elsif param_hash[:disable_keys] != :undef
144           should_not create_file("99unauth").with({
145             'path'   => "/etc/apt/apt.conf.d/99unauth"
146           })
147         end
148       }
149       describe 'when setting a proxy' do
150         it {
151           if param_hash[:proxy_host]
152             should contain_file('01proxy').with(
153               'path'    => '/etc/apt/apt.conf.d/01proxy',
154               'content' => "Acquire::http::Proxy \"http://#{param_hash[:proxy_host]}:#{param_hash[:proxy_port]}\";\n",
155               'notify'  => "Exec[apt_update]"
156             )
157           else
158             should contain_file('01proxy').with(
159               'path'    => '/etc/apt/apt.conf.d/01proxy',
160               'notify'  => 'Exec[apt_update]',
161               'ensure'  => 'absent'
162             )
163           end
164         }
165       end
166     end
167   end
168 end