apache-formula/test/integration/modules/controls/config_spec.rb
l00d3r c4b8538128
fix(redhat): use correct vhostdir, sitesdir and logrotate script for redhat family (#376)
* fix(redhat): use correct dirs for redhat family

Red hat family distributions do not implement sites-enabled nor vhosts.d
directories and all virtual hosts are under /etc/httpd/conf.d

Redhat based distros don't have /etc/init.d/httpd to rotate logs.
Default for them uses systemctl reload to rotate logs
2021-10-28 09:35:24 +01:00

121 lines
3.5 KiB
Ruby

# frozen_string_literal: true
control 'apache configuration' do
title 'should match desired lines'
apachectl = 'apachectl -t'
case platform[:family]
when 'debian'
vhostdir = '/etc/apache2/sites-available'
logrotatedir = '/etc/logrotate.d/apache2'
logdir = '/var/log/apache2'
moddir = '/etc/apache2/mods-enabled'
sitesdir = '/etc/apache2/sites-enabled'
when 'suse'
vhostdir = '/etc/apache2/vhosts.d'
logrotatedir = '/etc/logrotate.d/apache2'
logdir = '/var/log/apache2'
moddir = '/etc/apache2/mods-enabled'
sitesdir = '/etc/apache2/vhosts.d'
when 'redhat', 'fedora'
vhostdir = '/etc/httpd/conf.d'
logrotatedir = '/etc/logrotate.d/httpd'
logdir = '/var/log/httpd'
moddir = '/etc/httpd/conf.modules.d'
sitesdir = '/etc/httpd/conf.d'
apachectl = 'httpd -t'
when 'gentoo'
vhostdir = '/etc/apache2/vhosts.d'
logrotatedir = '/etc/logrotate.d/apache2'
logdir = '/var/log/apache2'
moddir = '/etc/apache2/mods-enabled'
sitesdir = '/etc/apache2/sites-enabled'
# `linux` here is sufficient for `arch`
when 'linux', 'arch'
vhostdir = '/etc/httpd/conf/vhosts'
logrotatedir = '/etc/logrotate.d/httpd'
logdir = '/var/log/httpd'
moddir = '/etc/httpd/conf.modules.d'
sitesdir = '/etc/httpd/sites-enabled'
when 'bsd'
vhostdir = '/usr/local/etc/apache24/Includes'
logdir = '/var/log'
logrotatedir = '/usr/local/etc/logrotate.d/apache2'
moddir = '/usr/local/etc/apache24/modules.d'
# https://docs.freebsd.org/en/books/handbook/network-servers/#_virtual_hosting
# All done under `/usr/local/etc/apache24/httpd.conf`
sitesdir = '/usr/local/etc/apache24'
end
describe command(apachectl) do
its('stdout') { should eq '' }
its('stderr') { should include 'Syntax OK' }
its('exit_status') { should eq 0 }
end
describe file(vhostdir) do
it { should exist }
it { should be_directory }
its('type') { should eq :directory }
end
describe file(logrotatedir) do
it { should exist }
its('type') { should eq :file }
end
describe file(logdir) do
it { should exist }
it { should be_directory }
its('type') { should eq :directory }
end
describe file(moddir) do
it { should exist }
it { should be_directory }
its('type') { should eq :directory }
end
describe file(sitesdir) do
it { should exist }
it { should be_directory }
its('type') { should eq :directory }
end
end
control 'apache configuration (unique)' do
title 'should match desired lines'
config_file_group = 'root'
case platform[:family]
when 'debian'
config_file = '/etc/apache2/apache2.conf'
wwwdir = '/srv'
when 'suse'
config_file = '/etc/apache2/httpd.conf'
wwwdir = '/srv/www'
when 'redhat', 'fedora'
config_file = '/etc/httpd/conf/httpd.conf'
wwwdir = '/var/www'
when 'gentoo'
config_file = '/etc/apache2/httpd.conf'
wwwdir = '/var/www'
when 'linux', 'arch'
config_file = '/etc/httpd/conf/httpd.conf'
wwwdir = '/srv/http'
when 'bsd'
config_file = '/usr/local/etc/apache24/httpd.conf'
config_file_group = 'wheel'
wwwdir = '/usr/local/www/apache24/'
end
describe file(config_file) do
it { should be_file }
it { should be_grouped_into config_file_group }
its('mode') { should cmp '0644' }
its('content') do
should include(
'This file is managed by Salt! Do not edit by hand!'
)
end
end
describe file(wwwdir) do
it { should exist }
it { should be_directory }
its('type') { should eq :directory }
end
end