require 'spec_helper'
describe 'apt', :type => :class do
+ let(:facts) { { :lsbdistid => 'Debian', :osfamily => 'Debian' } }
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,
+ },
+ {
+ :purge_preferences => true,
+ :purge_preferences_d => true,
+ },
+ {
+ :disable_keys => false
}
].each do |param_set|
describe "when #{param_set == {} ? "using default" : "specifying"} class parameters" do
let :param_hash do
- param_set == {} ? default_params : params
+ default_params.merge(param_set)
end
let :params do
end
end
- it { should include_class("apt::params") }
-
- it { should contain_package("python-software-properties") }
+ it { should contain_class("apt::params") }
it {
- should create_file("sources.list")\
- .with_path("/etc/apt/sources.list")\
- .with_ensure("present")\
- .with_owner("root")\
- .with_group("root")\
- .with_mode(644)
+ if param_hash[:purge_sources_list]
+ should contain_file("sources.list").with({
+ '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 {
+ 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,
+ 'notify' => 'Exec[apt_update]'
+ })
+ else
+ should create_file("sources.list.d").with({
+ 'path' => "/etc/apt/sources.list.d",
+ 'ensure' => "directory",
+ 'owner' => "root",
+ 'group' => "root",
+ 'purge' => 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 {
- should create_file("sources.list.d")\
- .with_path("/etc/apt/sources.list.d")\
- .with_ensure("directory")\
- .with_owner("root")\
- .with_group("root")
+ 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
}
it {
- should create_exec("apt_update")\
- .with_command("/usr/bin/apt-get update")\
- .with_subscribe(["File[sources.list]", "File[sources.list.d]"])\
- .with_refreshonly(refresh_only_apt_update)
+ should contain_exec("apt_update").with({
+ 'command' => "/usr/bin/apt-get update",
+ 'refreshonly' => refresh_only_apt_update
+ })
}
it {
- if param_hash[:disable_keys]
- should create_exec("make-apt-insecure")\
- .with_command('/bin/echo "APT::Get::AllowUnauthenticated 1;" >> /etc/apt/apt.conf.d/99unauth')\
- .with_creates('/etc/apt/apt.conf.d/99unauth')
- else
- should_not create_exec("make-apt-insecure")\
- .with_command('/bin/echo "APT::Get::AllowUnauthenticated 1;" >> /etc/apt/apt.conf.d/99unauth')\
- .with_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"
+ })
+ 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]}\";\n",
+ 'notify' => "Exec[apt_update]"
+ )
+ else
+ should contain_file('configure-apt-proxy').with(
+ 'path' => '/etc/apt/apt.conf.d/proxy',
+ 'notify' => 'Exec[apt_update]',
+ 'ensure' => 'absent'
+ )
+ end
+ }
+ end
end
end
end