Make apt.conf.d/proxy world readable and add a newline
[puppet-modules/puppetlabs-apt.git] / spec / classes / apt_spec.rb
index 294892f3244b95983533d315bedd818a85c0ea8a..7f88dddc3986cc2005357c2e8a1bc210020dfc29 100644 (file)
@@ -1,20 +1,30 @@
 require 'spec_helper'
 describe 'apt', :type => :class do
+  let(:facts) { { :lsbdistid => 'Debian' } }
   let :default_params do
     {
-      :disable_keys => false,
+      :disable_keys => :undef,
       :always_apt_update => false,
-      :purge => false
+      :purge_sources_list => false,
+      :purge_sources_list_d => false,
     }
   end
 
   [{},
-   {
+    {
       :disable_keys => true,
       :always_apt_update => true,
       :proxy_host => true,
       :proxy_port => '3128',
-      :purge => true
+      :purge_sources_list => true,
+      :purge_sources_list_d => true,
+    },
+    {
+      :purge_preferences   => true,
+      :purge_preferences_d => true,
+    },
+    {
+      :disable_keys => false
     }
   ].each do |param_set|
     describe "when #{param_set == {} ? "using default" : "specifying"} class parameters" do
@@ -34,18 +44,16 @@ describe 'apt', :type => :class do
         end
       end
 
-      it { should include_class("apt::params") }
-
-      it { should contain_package("python-software-properties") }
+      it { should contain_class("apt::params") }
 
       it {
-        if param_hash[:purge]
+        if param_hash[:purge_sources_list]
         should contain_file("sources.list").with({
             'path'    => "/etc/apt/sources.list",
             'ensure'  => "present",
             'owner'   => "root",
             'group'   => "root",
-            'mode'    => 644,
+            'mode'    => "0644",
             "content" => "# Repos managed by puppet.\n"
           })
         else
@@ -54,20 +62,21 @@ describe 'apt', :type => :class do
             'ensure'  => "present",
             'owner'   => "root",
             'group'   => "root",
-            'mode'    => 644,
+            'mode'    => "0644",
             'content' => nil
           })
         end
       }
       it {
-        if param_hash[:purge]
+        if param_hash[:purge_sources_list_d]
           should create_file("sources.list.d").with({
             'path'    => "/etc/apt/sources.list.d",
             'ensure'  => "directory",
             'owner'   => "root",
             'group'   => "root",
             'purge'   => true,
-            'recurse' => true
+            'recurse' => true,
+            'notify'  => 'Exec[apt_update]'
           })
         else
           should create_file("sources.list.d").with({
@@ -76,7 +85,51 @@ describe 'apt', :type => :class do
             'owner'   => "root",
             'group'   => "root",
             'purge'   => false,
-            'recurse' => false
+            'recurse' => false,
+            'notify'  => 'Exec[apt_update]'
+          })
+        end
+      }
+      it {
+        if param_hash[:purge_preferences]
+          should create_file('apt-preferences').with({
+            :ensure  => 'present',
+            :path    => '/etc/apt/preferences',
+            :owner   => 'root',
+            :group   => 'root',
+            :mode    => '0644',
+            :content => /Explanation/,
+          })
+        else
+          should create_file('apt-preferences').with({
+            :ensure  => 'present',
+            :path    => '/etc/apt/preferences',
+            :owner   => 'root',
+            :group   => 'root',
+            :mode    => '0644',
+            :content => nil,
+          })
+        end
+      }
+
+      it {
+        if param_hash[:purge_preferences_d]
+          should create_file("preferences.d").with({
+            'path'    => "/etc/apt/preferences.d",
+            'ensure'  => "directory",
+            'owner'   => "root",
+            'group'   => "root",
+            'purge'   => true,
+            'recurse' => true,
+          })
+        else
+          should create_file("preferences.d").with({
+            'path'    => "/etc/apt/preferences.d",
+            'ensure'  => "directory",
+            'owner'   => "root",
+            'group'   => "root",
+            'purge'   => false,
+            'recurse' => false,
           })
         end
       }
@@ -84,21 +137,25 @@ describe 'apt', :type => :class do
       it {
         should contain_exec("apt_update").with({
           'command'     => "/usr/bin/apt-get update",
-          'subscribe'   => ["File[sources.list]", "File[sources.list.d]"],
           'refreshonly' => refresh_only_apt_update
         })
       }
 
       it {
-        if param_hash[:disable_keys]
-          should contain_exec("make-apt-insecure").with({
-            'command'   => '/bin/echo "APT::Get::AllowUnauthenticated 1;" >> /etc/apt/apt.conf.d/99unauth',
-            'creates'   => '/etc/apt/apt.conf.d/99unauth'
+        if param_hash[:disable_keys] == true
+          should create_file("99unauth").with({
+            'content' => "APT::Get::AllowUnauthenticated 1;\n",
+            'ensure'  => "present",
+            'path'    => "/etc/apt/apt.conf.d/99unauth"
           })
-        else
-          should_not contain_exec("make-apt-insecure").with({
-            'command'   => '/bin/echo "APT::Get::AllowUnauthenticated 1;" >> /etc/apt/apt.conf.d/99unauth',
-            'creates'   => '/etc/apt/apt.conf.d/99unauth'
+        elsif param_hash[:disable_keys] == false
+          should create_file("99unauth").with({
+            'ensure' => "absent",
+            'path'   => "/etc/apt/apt.conf.d/99unauth"
+          })
+        elsif param_hash[:disable_keys] != :undef
+          should_not create_file("99unauth").with({
+            'path'   => "/etc/apt/apt.conf.d/99unauth"
           })
         end
       }
@@ -107,10 +164,15 @@ describe 'apt', :type => :class do
           if param_hash[:proxy_host]
             should contain_file('configure-apt-proxy').with(
               'path'    => '/etc/apt/apt.conf.d/proxy',
-              'content' => "Acquire::http::Proxy \"http://#{param_hash[:proxy_host]}:#{param_hash[:proxy_port]}\";"
+              'content' => "Acquire::http::Proxy \"http://#{param_hash[:proxy_host]}:#{param_hash[:proxy_port]}\";\n",
+              'notify'  => "Exec[apt_update]"
             )
           else
-            should_not contain_file('configure_apt_proxy')
+            should contain_file('configure-apt-proxy').with(
+              'path'    => '/etc/apt/apt.conf.d/proxy',
+              'notify'  => 'Exec[apt_update]',
+              'ensure'  => 'absent'
+            )
           end
         }
       end