(#13289) Clean up style violations and fix corresponding tests
[puppet-modules/puppetlabs-apt.git] / spec / classes / apt_spec.rb
index 5ac64f2b2eaa9e0cf3d4371dd09bb07dbd8d56b0..000793d092783a3740be5cca53e4518bd2fe819a 100644 (file)
@@ -2,15 +2,24 @@ require 'spec_helper'
 describe 'apt', :type => :class do
   let :default_params do
     {
-      :disable_keys => false,
-      :always_apt_update => false
+      :disable_keys => :undef,
+      :always_apt_update => false,
+      :purge_sources_list => false,
+      :purge_sources_list_d => false,
     }
   end
 
   [{},
-   {
+    {
       :disable_keys => true,
-      :always_apt_update => true
+      :always_apt_update => true,
+      :proxy_host => true,
+      :proxy_port => '3128',
+      :purge_sources_list => true,
+      :purge_sources_list_d => true,
+    },
+    {
+      :disable_keys => false
     }
   ].each do |param_set|
     describe "when #{param_set == {} ? "using default" : "specifying"} class parameters" do
@@ -35,22 +44,46 @@ describe 'apt', :type => :class do
       it { should contain_package("python-software-properties") }
 
       it {
+        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
-        })
+            'path'    => "/etc/apt/sources.list",
+            'ensure'  => "present",
+            'owner'   => "root",
+            'group'   => "root",
+            'mode'    => "0644",
+            "content" => "# Repos managed by puppet.\n"
+          })
+        else
+        should contain_file("sources.list").with({
+            'path'    => "/etc/apt/sources.list",
+            'ensure'  => "present",
+            'owner'   => "root",
+            'group'   => "root",
+            'mode'    => "0644",
+            'content' => nil
+          })
+        end
       }
-
       it {
-        should create_file("sources.list.d").with({
-          "path"    => "/etc/apt/sources.list.d",
-          "ensure"  => "directory",
-          "owner"   => "root",
-          "group"   => "root"
-        })
+        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
+          })
+        else
+          should create_file("sources.list.d").with({
+            'path'    => "/etc/apt/sources.list.d",
+            'ensure'  => "directory",
+            'owner'   => "root",
+            'group'   => "root",
+            'purge'   => false,
+            'recurse' => false
+          })
+        end
       }
 
       it {
@@ -62,18 +95,40 @@ describe 'apt', :type => :class do
       }
 
       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
       }
+      describe 'when setting a proxy' do
+        it {
+          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]}\";"
+            )
+          else
+            should_not contain_file('configure_apt_proxy')
+          end
+        }
+      end
     end
   end
+
+  describe "it should not error if package['python-software-properties'] is already defined" do
+    let(:pre_condition) { 'package { "python-software-properties": }->Class["Apt"]' }
+    it { should contain_package("python-software-properties") }
+  end
 end