diff --git a/spec/classes/mod/alias_spec.rb b/spec/classes/mod/alias_spec.rb
index 324bcd1b..fc0a84f1 100644
--- a/spec/classes/mod/alias_spec.rb
+++ b/spec/classes/mod/alias_spec.rb
@@ -1,121 +1,137 @@
require 'spec_helper'
describe 'apache::mod::alias', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'default configuration with parameters' do
context 'on a Debian OS', :compile do
let :facts do
{
id: 'root',
kernel: 'Linux',
lsbdistcodename: 'jessie',
osfamily: 'Debian',
operatingsystem: 'Debian',
operatingsystemrelease: '8',
path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
is_pe: false,
}
end
it { is_expected.to contain_apache__mod('alias') }
it { is_expected.to contain_file('alias.conf').with(content: %r{Alias \/icons\/ "\/usr\/share\/apache2\/icons\/"}) }
end
context 'on a RedHat 6-based OS', :compile do
let :facts do
{
id: 'root',
kernel: 'Linux',
osfamily: 'RedHat',
operatingsystem: 'RedHat',
operatingsystemrelease: '6',
path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
is_pe: false,
}
end
it { is_expected.to contain_apache__mod('alias') }
it { is_expected.to contain_file('alias.conf').with(content: %r{Alias \/icons\/ "\/var\/www\/icons\/"}) }
end
context 'on a RedHat 7-based OS', :compile do
let :facts do
{
id: 'root',
kernel: 'Linux',
osfamily: 'RedHat',
operatingsystem: 'RedHat',
operatingsystemrelease: '7',
path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
is_pe: false,
}
end
it { is_expected.to contain_apache__mod('alias') }
it { is_expected.to contain_file('alias.conf').with(content: %r{Alias \/icons\/ "\/usr\/share\/httpd\/icons\/"}) }
end
+ context 'on a RedHat 8-based OS', :compile do
+ let :facts do
+ {
+ id: 'root',
+ kernel: 'Linux',
+ osfamily: 'RedHat',
+ operatingsystem: 'RedHat',
+ operatingsystemrelease: '8',
+ path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
+ is_pe: false,
+ }
+ end
+
+ it { is_expected.to contain_apache__mod('alias') }
+ it { is_expected.to contain_file('alias.conf').with(content: %r{Alias \/icons\/ "\/usr\/share\/httpd\/icons\/"}) }
+ end
context 'with icons options', :compile do
let :pre_condition do
'class { apache: default_mods => false }'
end
let :facts do
{
id: 'root',
kernel: 'Linux',
osfamily: 'RedHat',
operatingsystem: 'RedHat',
operatingsystemrelease: '7',
path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
is_pe: false,
}
end
let :params do
{
'icons_options' => 'foo',
}
end
it { is_expected.to contain_apache__mod('alias') }
it { is_expected.to contain_file('alias.conf').with(content: %r{Options foo}) }
end
context 'with icons path change', :compile do
let :pre_condition do
'class { apache: default_mods => false }'
end
let :facts do
{
id: 'root',
kernel: 'Linux',
osfamily: 'RedHat',
operatingsystem: 'RedHat',
operatingsystemrelease: '7',
path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
is_pe: false,
}
end
let :params do
{
'icons_prefix' => 'apache-icons',
}
end
it { is_expected.to contain_apache__mod('alias') }
it { is_expected.to contain_file('alias.conf').with(content: %r{Alias \/apache-icons\/ "\/usr\/share\/httpd\/icons\/"}) }
end
context 'on a FreeBSD OS', :compile do
let :facts do
{
id: 'root',
kernel: 'FreeBSD',
osfamily: 'FreeBSD',
operatingsystem: 'FreeBSD',
operatingsystemrelease: '10',
path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
is_pe: false,
}
end
it { is_expected.to contain_apache__mod('alias') }
it { is_expected.to contain_file('alias.conf').with(content: %r{Alias \/icons\/ "\/usr\/local\/www\/apache24\/icons\/"}) }
end
end
end
diff --git a/spec/classes/mod/status_spec.rb b/spec/classes/mod/status_spec.rb
index 09c6bb74..440804bb 100644
--- a/spec/classes/mod/status_spec.rb
+++ b/spec/classes/mod/status_spec.rb
@@ -1,328 +1,354 @@
require 'spec_helper'
# Helper function for testing the contents of `status.conf`
# Apache < 2.4
def status_conf_spec(allow_from, extended_status, status_path)
expected =
"\n"\
" SetHandler server-status\n"\
" Order deny,allow\n"\
" Deny from all\n"\
" Allow from #{Array(allow_from).join(' ')}\n"\
"\n"\
"ExtendedStatus #{extended_status}\n"\
"\n"\
"\n"\
" # Show Proxy LoadBalancer status in mod_status\n"\
" ProxyStatus On\n"\
"\n"
it do
is_expected.to contain_file('status.conf').with_content(expected)
end
end
# Apache >= 2.4
def require_directives(requires)
if requires == :undef
" Require ip 127.0.0.1 ::1\n"
elsif requires.is_a?(String)
if ['', 'unmanaged'].include? requires.downcase
''
else
" Require #{requires}\n"
end
elsif requires.is_a?(Array)
requires.map { |req| " Require #{req}\n" }.join('')
elsif requires.is_a?(Hash)
if requires.key?(:enforce)
\
" \n" + \
requires[:requires].map { |req| " Require #{req}\n" }.join('') + \
" \n"
else
requires[:requires].map { |req| " Require #{req}\n" }.join('')
end
end
end
def status_conf_spec_require(requires, extended_status, status_path)
expected =
"\n"\
" SetHandler server-status\n"\
"#{require_directives(requires)}"\
"\n"\
"ExtendedStatus #{extended_status}\n"\
"\n"\
"\n"\
" # Show Proxy LoadBalancer status in mod_status\n"\
" ProxyStatus On\n"\
"\n"
it do
is_expected.to contain_file('status.conf').with_content(expected)
end
end
describe 'apache::mod::status', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'default configuration with parameters' do
context 'on a Debian 6 OS with default params' do
let :facts do
{
osfamily: 'Debian',
operatingsystemrelease: '6',
lsbdistcodename: 'squeeze',
operatingsystem: 'Debian',
id: 'root',
kernel: 'Linux',
path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
is_pe: false,
}
end
it { is_expected.to contain_apache__mod('status') }
status_conf_spec(['127.0.0.1', '::1'], 'On', '/server-status')
it {
is_expected.to contain_file('status.conf').with(ensure: 'file',
path: '/etc/apache2/mods-available/status.conf')
}
it {
is_expected.to contain_file('status.conf symlink').with(ensure: 'link',
path: '/etc/apache2/mods-enabled/status.conf')
}
end
context 'on a RedHat 6 OS with default params' do
let :facts do
{
osfamily: 'RedHat',
operatingsystemrelease: '6',
operatingsystem: 'RedHat',
id: 'root',
kernel: 'Linux',
path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
is_pe: false,
}
end
it { is_expected.to contain_apache__mod('status') }
status_conf_spec(['127.0.0.1', '::1'], 'On', '/server-status')
it { is_expected.to contain_file('status.conf').with_path('/etc/httpd/conf.d/status.conf') }
end
valid_requires = {
undef: :undef,
empty: '',
unmanaged: 'unmanaged',
string: 'ip 127.0.0.1 192.168',
array: [
'ip 127.0.0.1',
'ip ::1',
'host localhost',
],
hash: {
requires: [
'ip 10.1',
'host somehost',
],
},
enforce: {
enforce: 'all',
requires: [
'ip 127.0.0.1',
'host localhost',
],
},
}
valid_requires.each do |req_key, req_value|
context "on a Debian 8 OS with default params and #{req_key} requires" do
let :facts do
{
osfamily: 'Debian',
operatingsystemrelease: '8',
lsbdistcodename: 'squeeze',
operatingsystem: 'Debian',
id: 'root',
kernel: 'Linux',
path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
is_pe: false,
}
end
let :params do
{
requires: req_value,
}
end
it { is_expected.to contain_apache__mod('status') }
status_conf_spec_require(req_value, 'On', '/server-status')
it {
is_expected.to contain_file('status.conf').with(ensure: 'file',
path: '/etc/apache2/mods-available/status.conf')
}
it {
is_expected.to contain_file('status.conf symlink').with(ensure: 'link',
path: '/etc/apache2/mods-enabled/status.conf')
}
end
context "on a RedHat 7 OS with default params and #{req_key} requires" do
let :facts do
{
osfamily: 'RedHat',
operatingsystemrelease: '7',
operatingsystem: 'RedHat',
id: 'root',
kernel: 'Linux',
path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
is_pe: false,
}
end
let :params do
{
requires: req_value,
}
end
it { is_expected.to contain_apache__mod('status') }
status_conf_spec_require(req_value, 'On', '/server-status')
it { is_expected.to contain_file('status.conf').with_path('/etc/httpd/conf.modules.d/status.conf') }
end
+
+ context "on a RedHat 8 OS with default params and #{req_key} requires" do
+ let :facts do
+ {
+ osfamily: 'RedHat',
+ operatingsystemrelease: '8',
+ operatingsystem: 'RedHat',
+ id: 'root',
+ kernel: 'Linux',
+ path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
+ is_pe: false,
+ }
+ end
+
+ let :params do
+ {
+ requires: req_value,
+ }
+ end
+
+ it { is_expected.to contain_apache__mod('status') }
+
+ status_conf_spec_require(req_value, 'On', '/server-status')
+
+ it { is_expected.to contain_file('status.conf').with_path('/etc/httpd/conf.modules.d/status.conf') }
+ end
end
context "with custom parameters $allow_from => ['10.10.10.10','11.11.11.11'], $extended_status => 'Off', $status_path => '/custom-status'" do
let :facts do
{
osfamily: 'Debian',
operatingsystemrelease: '6',
lsbdistcodename: 'squeeze',
operatingsystem: 'Debian',
id: 'root',
kernel: 'Linux',
path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
is_pe: false,
}
end
let :params do
{
allow_from: ['10.10.10.10', '11.11.11.11'],
extended_status: 'Off',
status_path: '/custom-status',
}
end
status_conf_spec(['10.10.10.10', '11.11.11.11'], 'Off', '/custom-status')
end
context "with valid parameter type $allow_from => ['10.10.10.10']" do
let :facts do
{
osfamily: 'Debian',
operatingsystemrelease: '6',
lsbdistcodename: 'squeeze',
operatingsystem: 'Debian',
id: 'root',
kernel: 'Linux',
path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
is_pe: false,
}
end
let :params do
{ allow_from: ['10.10.10.10'] }
end
it 'expects to succeed array validation' do
expect {
is_expected.to contain_file('status.conf')
}.not_to raise_error
end
end
context "with invalid parameter type $allow_from => '10.10.10.10'" do
let :facts do
{
osfamily: 'Debian',
operatingsystemrelease: '6',
operatingsystem: 'Debian',
id: 'root',
kernel: 'Linux',
path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
is_pe: false,
}
end
let :params do
{ allow_from: '10.10.10.10' }
end
it 'expects to fail array validation' do
expect {
is_expected.to contain_file('status.conf')
}.to raise_error(Puppet::Error)
end
end
# Only On or Off are valid options
['On', 'Off'].each do |valid_param|
context "with valid value $extended_status => '#{valid_param}'" do
let :facts do
{
osfamily: 'Debian',
operatingsystemrelease: '6',
lsbdistcodename: 'squeeze',
operatingsystem: 'Debian',
id: 'root',
kernel: 'Linux',
path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
is_pe: false,
}
end
let :params do
{ extended_status: valid_param }
end
it 'expects to succeed regular expression validation' do
expect {
is_expected.to contain_file('status.conf')
}.not_to raise_error
end
end
end
['Yes', 'No'].each do |invalid_param|
context "with invalid value $extended_status => '#{invalid_param}'" do
let :facts do
{
osfamily: 'Debian',
operatingsystemrelease: '6',
operatingsystem: 'Debian',
id: 'root',
kernel: 'Linux',
path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
is_pe: false,
}
end
let :params do
{ extended_status: invalid_param }
end
it 'expects to fail regular expression validation' do
expect {
is_expected.to contain_file('status.conf')
}.to raise_error(Puppet::Error)
end
end
end
end
end