diff --git a/spec/classes/apache_spec.rb b/spec/classes/apache_spec.rb
index f6a14c97..c2b27fde 100644
--- a/spec/classes/apache_spec.rb
+++ b/spec/classes/apache_spec.rb
@@ -1,911 +1,828 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache', type: :class do
context 'on a Debian OS' do
- let :facts do
- {
- id: 'root',
- kernel: 'Linux',
- lsbdistcodename: 'squeeze',
- osfamily: 'Debian',
- operatingsystem: 'Debian',
- operatingsystemrelease: '6',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it {
is_expected.to contain_package('httpd').with(
'notify' => 'Class[Apache::Service]',
'ensure' => 'installed',
)
}
it { is_expected.to contain_user('www-data') }
it { is_expected.to contain_group('www-data') }
it { is_expected.to contain_class('apache::service') }
it {
- is_expected.to contain_file('/var/www').with(
+ is_expected.to contain_file('/var/www/html').with(
'ensure' => 'directory',
)
}
it {
is_expected.to contain_file('/etc/apache2/sites-enabled').with(
'ensure' => 'directory', 'recurse' => 'true',
'purge' => 'true'
).that_notifies('Class[Apache::Service]').that_requires('Package[httpd]')
}
it {
is_expected.to contain_file('/etc/apache2/mods-enabled').with(
'ensure' => 'directory', 'recurse' => 'true',
'purge' => 'true'
).that_notifies('Class[Apache::Service]').that_requires('Package[httpd]')
}
it {
is_expected.to contain_file('/etc/apache2/mods-available').with(
'ensure' => 'directory', 'recurse' => 'true',
'purge' => 'false'
).that_notifies('Class[Apache::Service]').that_requires('Package[httpd]')
}
it {
is_expected.to contain_concat('/etc/apache2/ports.conf').with(
'owner' => 'root', 'group' => 'root',
'mode' => '0644'
).that_notifies('Class[Apache::Service]')
}
# Assert that load files are placed and symlinked for these mods, but no conf file.
- ['auth_basic', 'authn_file', 'authz_default', 'authz_groupfile', 'authz_host', 'authz_user', 'dav', 'env'].each do |modname|
+ ['auth_basic', 'authn_file', 'authz_groupfile', 'authz_host', 'authz_user', 'dav', 'env'].each do |modname|
it {
is_expected.to contain_file("#{modname}.load").with(
'path' => "/etc/apache2/mods-available/#{modname}.load",
'ensure' => 'file',
)
}
it {
is_expected.to contain_file("#{modname}.load symlink").with(
'path' => "/etc/apache2/mods-enabled/#{modname}.load",
'ensure' => 'link',
'target' => "/etc/apache2/mods-available/#{modname}.load",
)
}
it { is_expected.not_to contain_file("#{modname}.conf") }
it { is_expected.not_to contain_file("#{modname}.conf symlink") }
end
context 'with Apache version < 2.4' do
let :params do
{ apache_version: '2.2' }
end
it { is_expected.to contain_file('/etc/apache2/apache2.conf').with_content %r{^Include "/etc/apache2/conf\.d/\*\.conf"$} }
end
context 'with Apache version >= 2.4' do
let :params do
{
apache_version: '2.4',
use_optional_includes: true,
}
end
it { is_expected.to contain_file('/etc/apache2/apache2.conf').with_content %r{^IncludeOptional "/etc/apache2/conf\.d/\*\.conf"$} }
end
context 'when specifying slash encoding behaviour' do
let :params do
{ allow_encoded_slashes: 'nodecode' }
end
it { is_expected.to contain_file('/etc/apache2/apache2.conf').with_content %r{^AllowEncodedSlashes nodecode$} }
end
context 'when specifying fileETag behaviour' do
let :params do
{ file_e_tag: 'None' }
end
it { is_expected.to contain_file('/etc/apache2/apache2.conf').with_content %r{^FileETag None$} }
end
context 'when specifying canonical name behaviour' do
let :params do
{ use_canonical_name: 'dns' }
end
it { is_expected.to contain_file('/etc/apache2/apache2.conf').with_content %r{^UseCanonicalName dns$} }
end
context 'when specifying default character set' do
let :params do
{ default_charset: 'none' }
end
it { is_expected.to contain_file('/etc/apache2/apache2.conf').with_content %r{^AddDefaultCharset none$} }
end
# Assert that both load files and conf files are placed and symlinked for these mods
['alias', 'autoindex', 'dav_fs', 'deflate', 'dir', 'mime', 'negotiation', 'setenvif'].each do |modname|
it {
is_expected.to contain_file("#{modname}.load").with(
'path' => "/etc/apache2/mods-available/#{modname}.load",
'ensure' => 'file',
)
}
it {
is_expected.to contain_file("#{modname}.load symlink").with(
'path' => "/etc/apache2/mods-enabled/#{modname}.load",
'ensure' => 'link',
'target' => "/etc/apache2/mods-available/#{modname}.load",
)
}
it {
is_expected.to contain_file("#{modname}.conf").with(
'path' => "/etc/apache2/mods-available/#{modname}.conf",
'ensure' => 'file',
)
}
it {
is_expected.to contain_file("#{modname}.conf symlink").with(
'path' => "/etc/apache2/mods-enabled/#{modname}.conf",
'ensure' => 'link',
'target' => "/etc/apache2/mods-available/#{modname}.conf",
)
}
end
describe "Check default type with Apache version < 2.2 when default_type => 'none'" do
let :params do
{
apache_version: '2.2',
default_type: 'none',
}
end
it { is_expected.to contain_file('/etc/apache2/apache2.conf').with_content %r{^DefaultType none$} }
end
describe "Check default type with Apache version < 2.2 when default_type => 'text/plain'" do
let :params do
{
apache_version: '2.2',
default_type: 'text/plain',
}
end
it { is_expected.to contain_file('/etc/apache2/apache2.conf').with_content %r{^DefaultType text/plain$} }
end
describe 'Check default type with Apache version >= 2.4' do
let :params do
{ apache_version: '2.4' }
end
it { is_expected.to contain_file('/etc/apache2/apache2.conf').without_content %r{^DefaultType [.]*$} }
end
describe "Don't create user resource when parameter manage_user is false" do
let :params do
{ manage_user: false }
end
it { is_expected.not_to contain_user('www-data') }
it { is_expected.to contain_file('/etc/apache2/apache2.conf').with_content %r{^User www-data\n} }
end
describe "Don't create group resource when parameter manage_group is false" do
let :params do
{ manage_group: false }
end
it { is_expected.not_to contain_group('www-data') }
it { is_expected.to contain_file('/etc/apache2/apache2.conf').with_content %r{^Group www-data\n} }
end
describe 'Add extra LogFormats When parameter log_formats is a hash' do
let :params do
{ log_formats: {
'vhost_common' => '%v %h %l %u %t "%r" %>s %b',
'vhost_combined' => '%v %h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i"',
} }
end
it { is_expected.to contain_file('/etc/apache2/apache2.conf').with_content %r{^LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common\n} }
it { is_expected.to contain_file('/etc/apache2/apache2.conf').with_content %r{^LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%\{Referer\}i\" \"%\{User-agent\}i\"" vhost_combined\n} }
end
describe 'Override existing LogFormats When parameter log_formats is a hash' do
let :params do
{ log_formats: {
'common' => '%v %h %l %u %t "%r" %>s %b',
'combined' => '%v %h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i"',
} }
end
expected = [
%r{^LogFormat "%v %h %l %u %t \"%r\" %>s %b" common\n},
%r{^LogFormat "%v %h %l %u %t \"%r\" %>s %b" common\n},
%r{^LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%\{Referer\}i\" \"%\{User-agent\}i\"" combined\n},
]
unexpected = [
%r{^LogFormat "%h %l %u %t \"%r\" %>s %b \"%\{Referer\}i\" \"%\{User-agent\}i\"" combined\n},
%r{^LogFormat "%h %l %u %t \"%r\" %>s %b \"%\{Referer\}i\" \"%\{User-agent\}i\"" combined\n},
]
it 'Expected to contain' do
expected.each do |reg|
is_expected.to contain_file('/etc/apache2/apache2.conf').with_content reg
end
end
it 'Not expected to contain' do
unexpected.each do |reg|
is_expected.to contain_file('/etc/apache2/apache2.conf').without_content reg
end
end
end
- context '8' do
- let :facts do
- super().merge(lsbdistcodename: 'jessie',
- operatingsystemrelease: '8.0.0')
+ describe 'Alternate mpm_modules when declaring mpm_module => prefork' do
+ let :params do
+ { mpm_module: 'worker' }
end
- it {
- is_expected.to contain_file('/var/www/html').with(
- 'ensure' => 'directory',
- )
- }
- describe 'Alternate mpm_modules when declaring mpm_module => prefork' do
- let :params do
- { mpm_module: 'worker' }
- end
-
- it { is_expected.to contain_exec('/usr/sbin/a2dismod event') }
- it { is_expected.to contain_exec('/usr/sbin/a2dismod prefork') }
- end
+ it { is_expected.to contain_exec('/usr/sbin/a2dismod event') }
+ it { is_expected.to contain_exec('/usr/sbin/a2dismod prefork') }
end
- context 'on Ubuntu 14.04' do
- let :facts do
- super().merge(operatingsystem: 'Ubuntu',
- lsbdistrelease: '14.04',
- operatingsystemrelease: '14.04')
- end
+ context 'on Ubuntu 18.04' do
+ include_examples 'Ubuntu 18.04'
it {
is_expected.to contain_file('/var/www/html').with(
'ensure' => 'directory',
)
}
end
end
- context 'on a RedHat 5 OS' do
- let :facts do
- {
- id: 'root',
- kernel: 'Linux',
- osfamily: 'RedHat',
- operatingsystem: 'RedHat',
- operatingsystemrelease: '5',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ context 'on a RedHat 8 OS' do
+ include_examples 'RedHat 8'
it { is_expected.to contain_class('apache::params') }
it {
is_expected.to contain_package('httpd').with(
'notify' => 'Class[Apache::Service]',
'ensure' => 'installed',
)
}
it { is_expected.to contain_user('apache') }
it { is_expected.to contain_group('apache') }
it { is_expected.to contain_class('apache::service') }
it {
is_expected.to contain_file('/var/www/html').with(
'ensure' => 'directory',
)
}
it {
is_expected.to contain_file('/etc/httpd/conf.d').with(
'ensure' => 'directory', 'recurse' => 'true',
'purge' => 'true'
).that_notifies('Class[Apache::Service]').that_requires('Package[httpd]')
}
it {
is_expected.to contain_concat('/etc/httpd/conf/ports.conf').with(
'owner' => 'root', 'group' => 'root',
'mode' => '0644'
).that_notifies('Class[Apache::Service]')
}
describe 'Alternate confd/mod/vhosts directory' do
let :params do
{
vhost_dir: '/etc/httpd/site.d',
confd_dir: '/etc/httpd/conf.d',
mod_dir: '/etc/httpd/mod.d',
}
end
['mod.d', 'site.d', 'conf.d'].each do |dir|
it {
is_expected.to contain_file("/etc/httpd/#{dir}").with(
'ensure' => 'directory', 'recurse' => 'true',
'purge' => 'true'
).that_notifies('Class[Apache::Service]').that_requires('Package[httpd]')
}
end
# Assert that load files are placed for these mods, but no conf file.
- ['auth_basic', 'authn_file', 'authz_default', 'authz_groupfile', 'authz_host', 'authz_user', 'dav', 'env'].each do |modname|
+ ['auth_basic', 'authn_file', 'authz_groupfile', 'authz_host', 'authz_user', 'dav', 'env'].each do |modname|
it {
is_expected.to contain_file("#{modname}.load").with_path(
"/etc/httpd/mod.d/#{modname}.load",
)
}
it {
is_expected.not_to contain_file("#{modname}.conf").with_path(
"/etc/httpd/mod.d/#{modname}.conf",
)
}
end
# Assert that both load files and conf files are placed for these mods
['alias', 'autoindex', 'dav_fs', 'deflate', 'dir', 'mime', 'negotiation', 'setenvif'].each do |modname|
it {
is_expected.to contain_file("#{modname}.load").with_path(
"/etc/httpd/mod.d/#{modname}.load",
)
}
it {
is_expected.to contain_file("#{modname}.conf").with_path(
"/etc/httpd/mod.d/#{modname}.conf",
)
}
end
- it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^Include "/etc/httpd/site\.d/\*"$} }
+ it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^IncludeOptional "/etc/httpd/site\.d/\*"$} }
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^Include "/etc/httpd/mod\.d/\*\.conf"$} }
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^Include "/etc/httpd/mod\.d/\*\.load"$} }
end
describe 'Alternate confd/mod/vhosts directory with Apache version < 2.4' do
let :params do
{
vhost_dir: '/etc/httpd/site.d',
confd_dir: '/etc/httpd/conf.d',
mod_dir: '/etc/httpd/mod.d',
apache_version: '2.2',
}
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^Include "/etc/httpd/conf\.d/\*\.conf"$} }
end
describe 'Alternate confd/mod/vhosts directory with Apache version >= 2.4' do
let :params do
{
vhost_dir: '/etc/httpd/site.d',
confd_dir: '/etc/httpd/conf.d',
mod_dir: '/etc/httpd/mod.d',
apache_version: '2.4',
use_optional_includes: true,
}
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^IncludeOptional "/etc/httpd/conf\.d/\*\.conf"$} }
end
describe 'Alternate confd/mod/vhosts directory with Apache version < 2.4' do
let :params do
{
vhost_dir: '/etc/httpd/site.d',
confd_dir: '/etc/httpd/conf.d',
mod_dir: '/etc/httpd/mod.d',
apache_version: '2.2',
rewrite_lock: '/var/lock/subsys/rewrite-lock',
}
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^RewriteLock /var/lock/subsys/rewrite-lock$} }
end
describe 'Alternate confd/mod/vhosts directory with Apache version < 2.4' do
let :params do
{
vhost_dir: '/etc/httpd/site.d',
confd_dir: '/etc/httpd/conf.d',
mod_dir: '/etc/httpd/mod.d',
apache_version: '2.2',
}
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').without_content %r{^RewriteLock [.]*$} }
end
describe 'Alternate confd/mod/vhosts directory with Apache version >= 2.4' do
let :params do
{
vhost_dir: '/etc/httpd/site.d',
confd_dir: '/etc/httpd/conf.d',
mod_dir: '/etc/httpd/mod.d',
apache_version: '2.4',
rewrite_lock: '/var/lock/subsys/rewrite-lock',
}
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').without_content %r{^RewriteLock [.]*$} }
end
describe 'Alternate confd/mod/vhosts directory when specifying slash encoding behaviour' do
let :params do
{
vhost_dir: '/etc/httpd/site.d',
confd_dir: '/etc/httpd/conf.d',
mod_dir: '/etc/httpd/mod.d',
allow_encoded_slashes: 'nodecode',
}
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^AllowEncodedSlashes nodecode$} }
end
describe 'Alternate confd/mod/vhosts directory when specifying default character set' do
let :params do
{
vhost_dir: '/etc/httpd/site.d',
confd_dir: '/etc/httpd/conf.d',
mod_dir: '/etc/httpd/mod.d',
default_charset: 'none',
}
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^AddDefaultCharset none$} }
end
describe "Alternate confd/mod/vhosts directory with Apache version < 2.4 when default_type => 'none'" do
let :params do
{
vhost_dir: '/etc/httpd/site.d',
confd_dir: '/etc/httpd/conf.d',
mod_dir: '/etc/httpd/mod.d',
apache_version: '2.2',
default_type: 'none',
}
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^DefaultType none$} }
end
describe "Alternate confd/mod/vhosts directory with Apache version < 2.4 when default_type => 'text/plain'" do
let :params do
{
vhost_dir: '/etc/httpd/site.d',
confd_dir: '/etc/httpd/conf.d',
mod_dir: '/etc/httpd/mod.d',
apache_version: '2.2',
default_type: 'text/plain',
}
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^DefaultType text/plain$} }
end
describe 'Alternate confd/mod/vhosts directory with Apache version >= 2.4' do
let :params do
{
vhost_dir: '/etc/httpd/site.d',
confd_dir: '/etc/httpd/conf.d',
mod_dir: '/etc/httpd/mod.d',
apache_version: '2.4',
}
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').without_content %r{^DefaultType [.]*$} }
end
describe 'Alternate conf directory' do
let :params do
{ conf_dir: '/opt/rh/root/etc/httpd/conf' }
end
it {
is_expected.to contain_file('/opt/rh/root/etc/httpd/conf/httpd.conf').with(
'ensure' => 'file',
).that_notifies('Class[Apache::Service]').that_requires(['Package[httpd]', 'Concat[/etc/httpd/conf/ports.conf]'])
}
end
describe 'Alternate conf.d directory' do
let :params do
{ confd_dir: '/etc/httpd/special_conf.d' }
end
it {
is_expected.to contain_file('/etc/httpd/special_conf.d').with(
'ensure' => 'directory', 'recurse' => 'true',
'purge' => 'true'
).that_notifies('Class[Apache::Service]').that_requires('Package[httpd]')
}
end
describe 'Alternate mpm_modules when declaring mpm_module is false' do
let :params do
{ mpm_module: false }
end
unexpected = ['apache::mod::event', 'apache::mod::itk', 'apache::mod::peruser', 'apache::mod::prefork', 'apache::mod::worker']
it 'does not declare mpm modules' do
unexpected.each do |not_expect|
is_expected.not_to contain_class(not_expect)
end
end
end
describe 'Alternate mpm_modules when declaring mpm_module => prefork' do
let :params do
{ mpm_module: 'prefork' }
end
it { is_expected.to contain_class('apache::mod::prefork') }
it { is_expected.not_to contain_class('apache::mod::event') }
it { is_expected.not_to contain_class('apache::mod::itk') }
it { is_expected.not_to contain_class('apache::mod::peruser') }
it { is_expected.not_to contain_class('apache::mod::worker') }
end
describe 'Alternate mpm_modules when declaring mpm_module => worker' do
let :params do
{ mpm_module: 'worker' }
end
it { is_expected.to contain_class('apache::mod::worker') }
it { is_expected.not_to contain_class('apache::mod::event') }
it { is_expected.not_to contain_class('apache::mod::itk') }
it { is_expected.not_to contain_class('apache::mod::peruser') }
it { is_expected.not_to contain_class('apache::mod::prefork') }
end
describe 'different templates for httpd.conf with default' do
let :params do
{ conf_template: 'apache/httpd.conf.erb' }
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^# Security\n} }
end
describe 'different templates for httpd.conf with non-default' do
let :params do
{ conf_template: 'site_apache/fake.conf.erb' }
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^Fake template for rspec.$} }
end
describe 'default mods without' do
let :params do
{ default_mods: false }
end
it { is_expected.to contain_apache__mod('authz_host') }
it { is_expected.not_to contain_apache__mod('env') }
end
describe 'default mods custom' do
let :params do
{ default_mods: ['info', 'alias', 'mime', 'env', 'setenv', 'expires'] }
end
it { is_expected.to contain_apache__mod('authz_host') }
it { is_expected.to contain_apache__mod('env') }
it { is_expected.to contain_class('apache::mod::info') }
it { is_expected.to contain_class('apache::mod::mime') }
end
describe "Don't create user resource when parameter manage_user is false" do
let :params do
{ manage_user: false }
end
it { is_expected.not_to contain_user('apache') }
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^User apache\n} }
end
describe "Don't create group resource when parameter manage_group is false" do
let :params do
{ manage_group: false }
end
it { is_expected.not_to contain_group('apache') }
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^Group apache\n} }
end
describe 'sendfile with invalid value' do
let :params do
{ sendfile: 'foo' }
end
it 'fails' do
expect {
catalogue
}.to raise_error(Puppet::PreformattedError, %r{Evaluation Error: Error while evaluating a Resource Statement, Class\[Apache\]: parameter 'sendfile' expects a match for Enum\['Off', 'On', 'off', 'on'\]}) # rubocop:disable Layout/LineLength
end
end
describe 'sendfile On' do
let :params do
{ sendfile: 'On' }
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^EnableSendfile On\n} }
end
describe 'sendfile Off' do
let :params do
{ sendfile: 'Off' }
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^EnableSendfile Off\n} }
end
describe 'hostname lookup with invalid value' do
let :params do
{ hostname_lookups: 'foo' }
end
it 'fails' do
expect {
catalogue
}.to raise_error(Puppet::Error, %r{Evaluation Error})
end
end
describe 'hostname_lookups On' do
let :params do
{ hostname_lookups: 'On' }
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^HostnameLookups On\n} }
end
describe 'hostname_lookups Off' do
let :params do
{ hostname_lookups: 'Off' }
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^HostnameLookups Off\n} }
end
describe 'hostname_lookups Double' do
let :params do
{ hostname_lookups: 'Double' }
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{^HostnameLookups Double\n} }
end
context 'on Fedora 21' do
- let :facts do
- super().merge(operatingsystem: 'Fedora',
- lsbdistrelease: '21',
- operatingsystemrelease: '21')
- end
+ include_examples 'Fedora 21'
it { is_expected.to contain_class('apache').with_apache_version('2.4') }
end
context 'on Fedora Rawhide' do
- let :facts do
- super().merge(operatingsystem: 'Fedora',
- lsbdistrelease: 'Rawhide',
- operatingsystemrelease: 'Rawhide')
- end
+ include_examples 'Fedora Rawhide'
it { is_expected.to contain_class('apache').with_apache_version('2.4') }
end
# kinda obsolete
context 'on Fedora 17' do
- let :facts do
- super().merge(operatingsystem: 'Fedora',
- lsbdistrelease: '17',
- operatingsystemrelease: '17')
- end
+ include_examples 'Fedora 17'
it { is_expected.to contain_class('apache').with_apache_version('2.2') }
end
end
context 'on a FreeBSD OS' 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
+ include_examples 'FreeBSD 10'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_class('apache::package').with('ensure' => 'present') }
it { is_expected.to contain_user('www') }
it { is_expected.to contain_group('www') }
it { is_expected.to contain_class('apache::service') }
it {
is_expected.to contain_file('/usr/local/www/apache24/data').with(
'ensure' => 'directory',
)
}
it {
is_expected.to contain_file('/usr/local/etc/apache24/Vhosts').with(
'ensure' => 'directory', 'recurse' => 'true',
'purge' => 'true'
).that_notifies('Class[Apache::Service]').that_requires('Package[httpd]')
}
it {
is_expected.to contain_file('/usr/local/etc/apache24/Modules').with(
'ensure' => 'directory', 'recurse' => 'true',
'purge' => 'true'
).that_notifies('Class[Apache::Service]').that_requires('Package[httpd]')
}
it {
is_expected.to contain_concat('/usr/local/etc/apache24/ports.conf').with(
'owner' => 'root', 'group' => 'wheel',
'mode' => '0644'
).that_notifies('Class[Apache::Service]')
}
# Assert that load files are placed for these mods, but no conf file.
['auth_basic', 'authn_core', 'authn_file', 'authz_groupfile', 'authz_host', 'authz_user', 'dav', 'env'].each do |modname|
it {
is_expected.to contain_file("#{modname}.load").with(
'path' => "/usr/local/etc/apache24/Modules/#{modname}.load",
'ensure' => 'file',
)
}
it { is_expected.not_to contain_file("#{modname}.conf") }
end
# Assert that both load files and conf files are placed for these mods
['alias', 'autoindex', 'dav_fs', 'deflate', 'dir', 'mime', 'negotiation', 'setenvif'].each do |modname|
it {
is_expected.to contain_file("#{modname}.load").with(
'path' => "/usr/local/etc/apache24/Modules/#{modname}.load",
'ensure' => 'file',
)
}
it {
is_expected.to contain_file("#{modname}.conf").with(
'path' => "/usr/local/etc/apache24/Modules/#{modname}.conf",
'ensure' => 'file',
)
}
end
end
context 'on a Gentoo OS' do
- let :facts do
- {
- id: 'root',
- kernel: 'Linux',
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- operatingsystemrelease: '3.16.1-gentoo',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_user('apache') }
it { is_expected.to contain_group('apache') }
it { is_expected.to contain_class('apache::service') }
it {
is_expected.to contain_file('/var/www/localhost/htdocs').with(
'ensure' => 'directory',
)
}
it {
is_expected.to contain_file('/etc/apache2/vhosts.d').with(
'ensure' => 'directory', 'recurse' => 'true',
'purge' => 'true'
).that_notifies('Class[Apache::Service]').that_requires('Package[httpd]')
}
it {
is_expected.to contain_file('/etc/apache2/modules.d').with(
'ensure' => 'directory', 'recurse' => 'true',
'purge' => 'true'
).that_notifies('Class[Apache::Service]').that_requires('Package[httpd]')
}
it {
is_expected.to contain_concat('/etc/apache2/ports.conf').with(
'owner' => 'root', 'group' => 'wheel',
'mode' => '0644'
).that_notifies('Class[Apache::Service]')
}
end
context 'on all OSes' 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
+ include_examples 'RedHat 6'
context 'with a custom apache_name parameter' do
let :params do
{
apache_name: 'httpd24-httpd',
}
end
it {
is_expected.to contain_package('httpd').with(
'ensure' => 'installed',
'name' => 'httpd24-httpd',
).that_notifies('Class[Apache::Service]')
}
end
context 'with a custom file_mode parameter' do
let :params do
{
file_mode: '0640',
}
end
it {
is_expected.to contain_concat('/etc/httpd/conf/ports.conf').with(
'mode' => '0640',
)
}
end
context 'with a custom root_directory_options parameter' do
let :params do
{
root_directory_options: ['-Indexes', '-FollowSymLinks'],
}
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{Options -Indexes -FollowSymLinks} }
end
context 'with a custom root_directory_secured parameter and Apache < 2.4' do
let :params do
{
apache_version: '2.2',
root_directory_secured: true,
}
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{Options FollowSymLinks\n\s+AllowOverride None\n\s+Order deny,allow\n\s+Deny from all} }
end
context 'with a custom root_directory_secured parameter and Apache >= 2.4' do
let :params do
{
apache_version: '2.4',
root_directory_secured: true,
}
end
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{Options FollowSymLinks\n\s+AllowOverride None\n\s+Require all denied} }
end
context 'default vhost defaults' do
it { is_expected.to contain_apache__vhost('default').with_ensure('present') }
it { is_expected.to contain_apache__vhost('default-ssl').with_ensure('absent') }
it { is_expected.to contain_file('/etc/httpd/conf/httpd.conf').with_content %r{Options FollowSymLinks} }
end
context 'without default non-ssl vhost' do
let :params do
{
default_vhost: false,
}
end
it { is_expected.to contain_apache__vhost('default').with_ensure('absent') }
it { is_expected.not_to contain_file('/var/www/html') }
end
context 'with default ssl vhost' do
let :params do
{
default_ssl_vhost: true,
}
end
it { is_expected.to contain_apache__vhost('default-ssl').with_ensure('present') }
it { is_expected.to contain_file('/var/www/html') }
end
end
context 'with unsupported osfamily' do
- let :facts do
- { osfamily: 'Darwin',
- operatingsystemrelease: '13.1.0',
- is_pe: false }
- end
+ include_examples 'Darwin'
it { is_expected.to compile.and_raise_error(%r{Unsupported osfamily}) }
end
end
diff --git a/spec/classes/mod/alias_spec.rb b/spec/classes/mod/alias_spec.rb
index 4974211c..9d27c806 100644
--- a/spec/classes/mod/alias_spec.rb
+++ b/spec/classes/mod/alias_spec.rb
@@ -1,139 +1,70 @@
# frozen_string_literal: true
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
+ include_examples 'Debian 8'
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
+ include_examples 'RedHat 6'
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
+ include_examples 'RedHat 7'
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
+ include_examples 'RedHat 8'
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
+ include_examples 'RedHat 7'
+
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
+ include_examples 'RedHat 7'
+
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
+ include_examples 'FreeBSD 10'
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/auth_cas_spec.rb b/spec/classes/mod/auth_cas_spec.rb
index f9686b22..d8328d85 100644
--- a/spec/classes/mod/auth_cas_spec.rb
+++ b/spec/classes/mod/auth_cas_spec.rb
@@ -1,94 +1,63 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::auth_cas', type: :class do
context 'default params' do
let :params do
{
cas_login_url: 'https://cas.example.com/login',
cas_validate_url: 'https://cas.example.com/validate',
cas_cookie_path: '/var/cache/apache2/mod_auth_cas/',
}
end
it_behaves_like 'a mod class, without including apache'
end
context 'default configuration with parameters' do
let :params do
{
cas_login_url: 'https://cas.example.com/login',
cas_validate_url: 'https://cas.example.com/validate',
}
end
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
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('auth_cas') }
it { is_expected.to contain_package('libapache2-mod-auth-cas') }
it { is_expected.to contain_file('auth_cas.conf').with_path('/etc/apache2/mods-available/auth_cas.conf') }
it { is_expected.to contain_file('/var/cache/apache2/mod_auth_cas/').with_owner('www-data') }
end
context 'on a RedHat 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
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('auth_cas') }
it { is_expected.to contain_package('mod_auth_cas') }
it { is_expected.to contain_file('auth_cas.conf').with_path('/etc/httpd/conf.d/auth_cas.conf') }
it { is_expected.to contain_file('/var/cache/mod_auth_cas/').with_owner('apache') }
end
context 'vhost setup', :compile do
let :pre_condition do
"class { 'apache': } apache::vhost { 'test.server': docroot => '/var/www/html', cas_root_proxied_as => 'http://test.server', cas_cookie_path => '/my/cas/path'} "
end
- 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
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('auth_cas') }
it { is_expected.to contain_package('mod_auth_cas') }
it { is_expected.to contain_file('auth_cas.conf').with_path('/etc/httpd/conf.d/auth_cas.conf') }
it { is_expected.to contain_file('/var/cache/mod_auth_cas/').with_owner('apache') }
it {
is_expected.to contain_concat__fragment('test.server-auth_cas').with(content: %r{^\s+CASRootProxiedAs http://test.server$})
is_expected.to contain_concat__fragment('test.server-auth_cas').with(content: %r{^\s+CASCookiePath /my/cas/path$})
}
end
end
end
diff --git a/spec/classes/mod/auth_gssapi_spec.rb b/spec/classes/mod/auth_gssapi_spec.rb
index fbb0763a..231450f0 100644
--- a/spec/classes/mod/auth_gssapi_spec.rb
+++ b/spec/classes/mod/auth_gssapi_spec.rb
@@ -1,79 +1,38 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::auth_gssapi', 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: 'squeeze',
- osfamily: 'Debian',
- operatingsystem: 'Debian',
- operatingsystemrelease: '6',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('auth_gssapi') }
it { is_expected.to contain_package('libapache2-mod-auth-gssapi') }
end
context 'on a RedHat 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
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('auth_gssapi') }
it { is_expected.to contain_package('mod_auth_gssapi') }
end
context 'on a FreeBSD OS', :compile do
- let :facts do
- {
- id: 'root',
- kernel: 'FreeBSD',
- osfamily: 'FreeBSD',
- operatingsystem: 'FreeBSD',
- operatingsystemrelease: '9',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 9'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('auth_gssapi') }
it { is_expected.to contain_package('www/mod_auth_gssapi') }
end
context 'on a Gentoo OS', :compile do
- let :facts do
- {
- id: 'root',
- kernel: 'Linux',
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- operatingsystemrelease: '3.16.1-gentoo',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('auth_gssapi') }
it { is_expected.to contain_package('www-apache/mod_auth_gssapi') }
end
end
end
diff --git a/spec/classes/mod/auth_kerb_spec.rb b/spec/classes/mod/auth_kerb_spec.rb
index a4a09dc1..dd1dd482 100644
--- a/spec/classes/mod/auth_kerb_spec.rb
+++ b/spec/classes/mod/auth_kerb_spec.rb
@@ -1,108 +1,57 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::auth_kerb', 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
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('auth_kerb') }
it { is_expected.to contain_package('libapache2-mod-auth-kerb') }
end
context 'on a RedHat 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
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('auth_kerb') }
it { is_expected.to contain_package('mod_auth_kerb') }
end
context 'on a FreeBSD OS', :compile do
- let :facts do
- {
- id: 'root',
- kernel: 'FreeBSD',
- osfamily: 'FreeBSD',
- operatingsystem: 'FreeBSD',
- operatingsystemrelease: '9',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 9'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('auth_kerb') }
it { is_expected.to contain_package('www/mod_auth_kerb2') }
end
context 'on a Gentoo OS', :compile do
- let :facts do
- {
- id: 'root',
- kernel: 'Linux',
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- operatingsystemrelease: '3.16.1-gentoo',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('auth_kerb') }
it { is_expected.to contain_package('www-apache/mod_auth_kerb') }
end
end
context 'overriding mod_packages' do
context 'on a RedHat 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
+ include_examples 'RedHat 6'
let :pre_condition do
<<-MANIFEST
include apache::params
class { 'apache':
mod_packages => merge($::apache::params::mod_packages, {
'auth_kerb' => 'httpd24-mod_auth_kerb',
})
}
MANIFEST
end
it { is_expected.to contain_apache__mod('auth_kerb') }
it { is_expected.to contain_package('httpd24-mod_auth_kerb') }
it { is_expected.not_to contain_package('mod_auth_kerb') }
end
end
end
diff --git a/spec/classes/mod/auth_mellon_spec.rb b/spec/classes/mod/auth_mellon_spec.rb
index 1a915a08..c7358a45 100644
--- a/spec/classes/mod/auth_mellon_spec.rb
+++ b/spec/classes/mod/auth_mellon_spec.rb
@@ -1,89 +1,66 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::auth_mellon', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'default configuration with parameters on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- fqdn: 'test.example.com',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
describe 'with no parameters' do
it { is_expected.to contain_apache__mod('auth_mellon') }
it { is_expected.to contain_package('libapache2-mod-auth-mellon') }
it { is_expected.to contain_file('auth_mellon.conf').with_path('/etc/apache2/mods-available/auth_mellon.conf') }
it { is_expected.to contain_file('auth_mellon.conf').with_content("MellonPostDirectory \"\/var\/cache\/apache2\/mod_auth_mellon\/\"\n") }
end
describe 'with parameters' do
let :params do
{ mellon_cache_size: '200',
mellon_cache_entry_size: '2010',
mellon_lock_file: '/tmp/junk',
mellon_post_directory: '/tmp/post',
mellon_post_ttl: '5',
mellon_post_size: '8',
mellon_post_count: '10' }
end
it { is_expected.to contain_file('auth_mellon.conf').with_content(%r{^MellonCacheSize\s+200$}) }
it { is_expected.to contain_file('auth_mellon.conf').with_content(%r{^MellonCacheEntrySize\s+2010$}) }
it { is_expected.to contain_file('auth_mellon.conf').with_content(%r{^MellonLockFile\s+"\/tmp\/junk"$}) }
it { is_expected.to contain_file('auth_mellon.conf').with_content(%r{^MellonPostDirectory\s+"\/tmp\/post"$}) }
it { is_expected.to contain_file('auth_mellon.conf').with_content(%r{^MellonPostTTL\s+5$}) }
it { is_expected.to contain_file('auth_mellon.conf').with_content(%r{^MellonPostSize\s+8$}) }
it { is_expected.to contain_file('auth_mellon.conf').with_content(%r{^MellonPostCount\s+10$}) }
end
end
context 'default configuration with parameters on a RedHat OS' 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',
- fqdn: 'test.example.com',
- is_pe: false,
- }
- end
+ include_examples 'RedHat 6'
describe 'with no parameters' do
it { is_expected.to contain_apache__mod('auth_mellon') }
it { is_expected.to contain_package('mod_auth_mellon') }
it { is_expected.to contain_file('auth_mellon.conf').with_path('/etc/httpd/conf.d/auth_mellon.conf') }
it { is_expected.to contain_file('auth_mellon.conf').with_content("MellonCacheSize 100\nMellonLockFile \"/run/mod_auth_mellon/lock\"\n") }
end
describe 'with parameters' do
let :params do
{ mellon_cache_size: '200',
mellon_cache_entry_size: '2010',
mellon_lock_file: '/tmp/junk',
mellon_post_directory: '/tmp/post',
mellon_post_ttl: '5',
mellon_post_size: '8',
mellon_post_count: '10' }
end
it { is_expected.to contain_file('auth_mellon.conf').with_content(%r{^MellonCacheSize\s+200$}) }
it { is_expected.to contain_file('auth_mellon.conf').with_content(%r{^MellonCacheEntrySize\s+2010$}) }
it { is_expected.to contain_file('auth_mellon.conf').with_content(%r{^MellonLockFile\s+"\/tmp\/junk"$}) }
it { is_expected.to contain_file('auth_mellon.conf').with_content(%r{^MellonPostDirectory\s+"\/tmp\/post"$}) }
it { is_expected.to contain_file('auth_mellon.conf').with_content(%r{^MellonPostTTL\s+5$}) }
it { is_expected.to contain_file('auth_mellon.conf').with_content(%r{^MellonPostSize\s+8$}) }
it { is_expected.to contain_file('auth_mellon.conf').with_content(%r{^MellonPostCount\s+10$}) }
end
end
end
diff --git a/spec/classes/mod/auth_openidc_spec.rb b/spec/classes/mod/auth_openidc_spec.rb
index a0309da8..c8c90aca 100644
--- a/spec/classes/mod/auth_openidc_spec.rb
+++ b/spec/classes/mod/auth_openidc_spec.rb
@@ -1,91 +1,50 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::auth_openidc', 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
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('auth_openidc') }
it { is_expected.to contain_package('libapache2-mod-auth-openidc') }
end
context 'on a RedHat 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
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('auth_openidc') }
it { is_expected.to contain_package('mod_auth_openidc') }
end
context 'on a FreeBSD OS', :compile do
- let :facts do
- {
- id: 'root',
- kernel: 'FreeBSD',
- osfamily: 'FreeBSD',
- operatingsystem: 'FreeBSD',
- operatingsystemrelease: '9',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 9'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('auth_openidc') }
it { is_expected.to contain_package('www/mod_auth_openidc') }
end
end
context 'overriding mod_packages' do
context 'on a RedHat 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
+ include_examples 'RedHat 6'
let :pre_condition do
<<-MANIFEST
include apache::params
class { 'apache':
mod_packages => merge($::apache::params::mod_packages, {
'auth_openidc' => 'httpd24-mod_auth_openidc',
})
}
MANIFEST
end
it { is_expected.to contain_apache__mod('auth_openidc') }
it { is_expected.to contain_package('httpd24-mod_auth_openidc') }
it { is_expected.not_to contain_package('mod_auth_openidc') }
end
end
end
diff --git a/spec/classes/mod/authn_dbd_spec.rb b/spec/classes/mod/authn_dbd_spec.rb
index 0f78816f..afd39017 100644
--- a/spec/classes/mod/authn_dbd_spec.rb
+++ b/spec/classes/mod/authn_dbd_spec.rb
@@ -1,64 +1,43 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::authn_dbd', type: :class do
context 'default params' do
let :params do
{
authn_dbd_params: 'host=db_host port=3306 user=apache password=###### dbname=apache_auth',
}
end
it_behaves_like 'a mod class, without including apache'
end
context 'default configuration with parameters' do
let :params do
{
authn_dbd_params: 'host=db_host port=3306 user=apache password=###### dbname=apache_auth',
authn_dbd_alias: 'db_authn',
authn_dbd_query: 'SELECT password FROM authn WHERE username = %s',
}
end
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
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('authn_dbd') }
it { is_expected.to contain_apache__mod('dbd') }
it { is_expected.to contain_file('authn_dbd.conf').with_path('/etc/apache2/mods-available/authn_dbd.conf') }
end
context 'on a RedHat 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
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('authn_dbd') }
it { is_expected.to contain_apache__mod('dbd') }
it { is_expected.to contain_file('authn_dbd.conf').with_path('/etc/httpd/conf.d/authn_dbd.conf') }
end
end
end
diff --git a/spec/classes/mod/authnz_ldap_spec.rb b/spec/classes/mod/authnz_ldap_spec.rb
index e6ecc50f..dbd76c0e 100644
--- a/spec/classes/mod/authnz_ldap_spec.rb
+++ b/spec/classes/mod/authnz_ldap_spec.rb
@@ -1,95 +1,84 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::authnz_ldap', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'default configuration with parameters on a Debian OS' do
- let :facts do
- {
- lsbdistcodename: 'jessie',
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- id: 'root',
- kernel: 'Linux',
- operatingsystem: 'Debian',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_class('apache::mod::ldap') }
it { is_expected.to contain_apache__mod('authnz_ldap') }
context 'default verify_server_cert' do
it { is_expected.to contain_file('authnz_ldap.conf').with_content(%r{^LDAPVerifyServerCert On$}) }
end
context 'verify_server_cert = false' do
let(:params) { { verify_server_cert: false } }
it { is_expected.to contain_file('authnz_ldap.conf').with_content(%r{^LDAPVerifyServerCert Off$}) }
end
context 'verify_server_cert = wrong' do
let(:params) { { verify_server_cert: 'wrong' } }
it 'raises an error' do
is_expected.to compile.and_raise_error(%r{parameter 'verify_server_cert' expects a Boolean value, got String})
end
end
end # Debian
context 'default configuration with parameters on a RedHat OS' do
on_supported_os.each do |os, os_facts|
next unless os.start_with?('redhat')
context "On #{os}" do
let :facts do
os_facts
end
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_class('apache::mod::ldap') }
it { is_expected.to contain_apache__mod('authnz_ldap') }
if os_facts[:operatingsystemmajrelease].to_i >= 7
it { is_expected.to contain_package('mod_ldap') }
else
it { is_expected.to contain_package('mod_authz_ldap') }
end
context 'default verify_server_cert' do
it { is_expected.to contain_file('authnz_ldap.conf').with_content(%r{^LDAPVerifyServerCert On$}) }
end
context 'verify_server_cert = false' do
let(:params) { { verify_server_cert: false } }
it { is_expected.to contain_file('authnz_ldap.conf').with_content(%r{^LDAPVerifyServerCert Off$}) }
end
context 'verify_server_cert = wrong' do
let(:params) { { verify_server_cert: 'wrong' } }
it 'raises an error' do
is_expected.to compile.and_raise_error(%r{parameter 'verify_server_cert' expects a Boolean value, got String})
end
end
context 'SCL', if: (os_facts[:operatingsystemmajrelease].to_i >= 6 && os_facts[:operatingsystemmajrelease].to_i < 8) do
let(:pre_condition) do
"class { 'apache::version':
scl_httpd_version => '2.4',
scl_php_version => '7.0',
}
include apache"
end
it { is_expected.to contain_package('httpd24-mod_ldap') }
end
end
end
end # Redhat
end
diff --git a/spec/classes/mod/authnz_pam_spec.rb b/spec/classes/mod/authnz_pam_spec.rb
index 92bc157b..4361fb64 100644
--- a/spec/classes/mod/authnz_pam_spec.rb
+++ b/spec/classes/mod/authnz_pam_spec.rb
@@ -1,46 +1,25 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::authnz_pam', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'default configuration with parameters' do
context 'on a Debian OS' do
- let :facts do
- {
- lsbdistcodename: 'jessie',
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- id: 'root',
- kernel: 'Linux',
- operatingsystem: 'Debian',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache') }
it { is_expected.to contain_package('libapache2-mod-authnz-pam') }
it { is_expected.to contain_apache__mod('authnz_pam') }
end # Debian
context 'on a RedHat OS' do
- let :facts do
- {
- osfamily: 'RedHat',
- operatingsystemrelease: '8',
- id: 'root',
- kernel: 'Linux',
- operatingsystem: 'RedHat',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'RedHat 8'
it { is_expected.to contain_class('apache') }
it { is_expected.to contain_package('mod_authnz_pam') }
it { is_expected.to contain_apache__mod('authnz_pam') }
end # Redhat
end
end
diff --git a/spec/classes/mod/cluster_spec.rb b/spec/classes/mod/cluster_spec.rb
index 998ab1d7..bf2ac85b 100644
--- a/spec/classes/mod/cluster_spec.rb
+++ b/spec/classes/mod/cluster_spec.rb
@@ -1,104 +1,74 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::cluster', type: :class do
context 'on a RedHat OS Release 7 with mod version = 1.3.0' 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
+ include_examples 'RedHat 7'
let(:params) do
{
allowed_network: '172.17.0',
balancer_name: 'mycluster',
ip: '172.17.0.1',
version: '1.3.0',
}
end
it { is_expected.to contain_class('apache') }
it { is_expected.to contain_apache__mod('proxy') }
it { is_expected.to contain_apache__mod('proxy_ajp') }
it { is_expected.to contain_apache__mod('manager') }
it { is_expected.to contain_apache__mod('proxy_cluster') }
it { is_expected.to contain_apache__mod('advertise') }
it { is_expected.to contain_apache__mod('cluster_slotmem') }
it { is_expected.to contain_file('cluster.conf') }
end
context 'on a RedHat OS Release 7 with mod version > 1.3.0' 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
+ include_examples 'RedHat 7'
let(:params) do
{
allowed_network: '172.17.0',
balancer_name: 'mycluster',
ip: '172.17.0.1',
version: '1.3.1',
}
end
it { is_expected.to contain_class('apache') }
it { is_expected.to contain_apache__mod('proxy') }
it { is_expected.to contain_apache__mod('proxy_ajp') }
it { is_expected.to contain_apache__mod('manager') }
it { is_expected.to contain_apache__mod('proxy_cluster') }
it { is_expected.to contain_apache__mod('advertise') }
it { is_expected.to contain_apache__mod('cluster_slotmem') }
it { is_expected.to contain_file('cluster.conf') }
end
context 'on a RedHat OS Release 6 with mod version < 1.3.0' 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
+ include_examples 'RedHat 6'
let(:params) do
{
allowed_network: '172.17.0',
balancer_name: 'mycluster',
ip: '172.17.0.1',
version: '1.2.0',
}
end
it { is_expected.to contain_class('apache') }
it { is_expected.to contain_apache__mod('proxy') }
it { is_expected.to contain_apache__mod('proxy_ajp') }
it { is_expected.to contain_apache__mod('manager') }
it { is_expected.to contain_apache__mod('proxy_cluster') }
it { is_expected.to contain_apache__mod('advertise') }
it { is_expected.to contain_apache__mod('slotmem') }
it { is_expected.to contain_file('cluster.conf') }
end
end
diff --git a/spec/classes/mod/data_spec.rb b/spec/classes/mod/data_spec.rb
index 4511996f..f8491675 100644
--- a/spec/classes/mod/data_spec.rb
+++ b/spec/classes/mod/data_spec.rb
@@ -1,32 +1,22 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::data', type: :class do
context 'on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- }
- end
+ include_examples 'Debian 8'
let :params do
{ apache_version: '2.4' }
end
it { is_expected.to contain_apache__mod('data') }
describe 'with Apache version < 2.3' do
let :params do
{ apache_version: '2.2' }
end
it { is_expected.to compile.and_raise_error(%r{mod_data is only available in Apache 2.3 and later}) }
end
end
end
diff --git a/spec/classes/mod/dav_svn_spec.rb b/spec/classes/mod/dav_svn_spec.rb
index 1d773b3b..68d6bede 100644
--- a/spec/classes/mod/dav_svn_spec.rb
+++ b/spec/classes/mod/dav_svn_spec.rb
@@ -1,140 +1,96 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::dav_svn', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'default configuration with parameters' do
context 'on a Debian OS' do
- let :facts do
- {
- lsbdistcodename: 'jessie',
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- operatingsystemmajrelease: '8',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('dav_svn') }
it { is_expected.to contain_package('libapache2-svn') }
it { is_expected.to contain_file('dav_svn.load').with_content(%r{LoadModule dav_svn_module}) }
describe 'with parameters' do
let :params do
{
'authz_svn_enabled' => true,
}
end
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('dav_svn') }
it { is_expected.to contain_package('libapache2-svn') }
it { is_expected.to contain_apache__mod('authz_svn') }
it { is_expected.to contain_file('authz_svn.load').with_content(%r{LoadModule authz_svn_module}) }
end
end
context 'on a RedHat OS' do
- let :facts do
- {
- osfamily: 'RedHat',
- operatingsystemrelease: '6',
- operatingsystemmajrelease: '6',
- operatingsystem: 'RedHat',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('dav_svn') }
it { is_expected.to contain_package('mod_dav_svn') }
it { is_expected.to contain_file('dav_svn.load').with_content(%r{LoadModule dav_svn_module}) }
describe 'with parameters' do
let :params do
{
'authz_svn_enabled' => true,
}
end
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('dav_svn') }
it { is_expected.to contain_package('mod_dav_svn') }
it { is_expected.to contain_apache__mod('authz_svn') }
it { is_expected.to contain_file('dav_svn_authz_svn.load').with_content(%r{LoadModule authz_svn_module}) }
end
end
context 'on a FreeBSD OS' do
- let :facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '9',
- operatingsystemmajrelease: '9',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 9'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('dav_svn') }
it { is_expected.to contain_package('devel/subversion') }
it { is_expected.to contain_file('dav_svn.load').with_content(%r{LoadModule dav_svn_module}) }
describe 'with parameters' do
let :params do
{
'authz_svn_enabled' => true,
}
end
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('dav_svn') }
it { is_expected.to contain_package('devel/subversion') }
it { is_expected.to contain_apache__mod('authz_svn') }
it { is_expected.to contain_file('dav_svn_authz_svn.load').with_content(%r{LoadModule authz_svn_module}) }
end
end
context 'on a Gentoo OS', :compile do
- let :facts do
- {
- id: 'root',
- operatingsystemrelease: '3.16.1-gentoo',
- kernel: 'Linux',
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('dav_svn') }
it { is_expected.to contain_package('dev-vcs/subversion') }
it { is_expected.to contain_file('dav_svn.load').with_content(%r{LoadModule dav_svn_module}) }
describe 'with parameters' do
let :params do
{
'authz_svn_enabled' => true,
}
end
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('dav_svn') }
it { is_expected.to contain_package('dev-vcs/subversion') }
it { is_expected.to contain_apache__mod('authz_svn') }
it { is_expected.to contain_file('dav_svn_authz_svn.load').with_content(%r{LoadModule authz_svn_module}) }
end
end
end
end
diff --git a/spec/classes/mod/deflate_spec.rb b/spec/classes/mod/deflate_spec.rb
index 1770cd6c..5c71e7a5 100644
--- a/spec/classes/mod/deflate_spec.rb
+++ b/spec/classes/mod/deflate_spec.rb
@@ -1,129 +1,88 @@
# frozen_string_literal: true
require 'spec_helper'
# This function is called inside the OS specific contexts
def general_deflate_specs
it { is_expected.to contain_apache__mod('deflate') }
expected = "AddOutputFilterByType DEFLATE application/rss+xml\n"\
"AddOutputFilterByType DEFLATE application/x-javascript\n"\
"AddOutputFilterByType DEFLATE text/css\n"\
"AddOutputFilterByType DEFLATE text/html\n"\
"\n"\
"DeflateFilterNote Input instream\n"\
"DeflateFilterNote Output outstream\n"\
"DeflateFilterNote Ratio ratio\n"
it do
is_expected.to contain_file('deflate.conf').with_content(expected)
end
end
describe 'apache::mod::deflate', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'default configuration with parameters' do
let :pre_condition do
'class { "apache::mod::deflate":
types => [ "text/html", "text/css" , "application/x-javascript", "application/rss+xml"],
notes => {
"Input" => "instream",
"Ratio" => "ratio",
"Output" => "outstream",
}
}
'
end
context 'On a Debian OS with default params' do
- let :facts do
- {
- id: 'root',
- lsbdistcodename: 'jessie',
- kernel: 'Linux',
- osfamily: 'Debian',
- operatingsystem: 'Debian',
- operatingsystemrelease: '8',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
# Load the more generic tests for this context
general_deflate_specs
it {
is_expected.to contain_file('deflate.conf').with(ensure: 'file',
path: '/etc/apache2/mods-available/deflate.conf')
}
it {
is_expected.to contain_file('deflate.conf symlink').with(ensure: 'link',
path: '/etc/apache2/mods-enabled/deflate.conf')
}
end
context 'on a RedHat OS with default params' 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
+ include_examples 'RedHat 6'
# Load the more generic tests for this context
general_deflate_specs
it { is_expected.to contain_file('deflate.conf').with_path('/etc/httpd/conf.d/deflate.conf') }
end
context 'On a FreeBSD OS with default params' do
- let :facts do
- {
- id: 'root',
- kernel: 'FreeBSD',
- osfamily: 'FreeBSD',
- operatingsystem: 'FreeBSD',
- operatingsystemrelease: '9',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 9'
# Load the more generic tests for this context
general_deflate_specs
it {
is_expected.to contain_file('deflate.conf').with(ensure: 'file',
path: '/usr/local/etc/apache24/Modules/deflate.conf')
}
end
context 'On a Gentoo OS with default params' do
- let :facts do
- {
- id: 'root',
- kernel: 'Linux',
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- operatingsystemrelease: '3.16.1-gentoo',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
# Load the more generic tests for this context
general_deflate_specs
it {
is_expected.to contain_file('deflate.conf').with(ensure: 'file',
path: '/etc/apache2/modules.d/deflate.conf')
}
end
end
end
diff --git a/spec/classes/mod/dev_spec.rb b/spec/classes/mod/dev_spec.rb
index 9294597c..7a1200e0 100644
--- a/spec/classes/mod/dev_spec.rb
+++ b/spec/classes/mod/dev_spec.rb
@@ -1,36 +1,21 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::dev', type: :class do
let(:pre_condition) do
[
'include apache',
]
end
it_behaves_like 'a mod class, without including apache'
- [
- ['RedHat', '6', 'Santiago', 'Linux'],
- ['Debian', '8', 'jessie', 'Linux'],
- ['FreeBSD', '9', 'FreeBSD', 'FreeBSD'],
- ].each do |osfamily, operatingsystemrelease, lsbdistcodename, kernel|
- context "on a #{osfamily} OS" do
- let :facts do
- {
- lsbdistcodename: lsbdistcodename,
- osfamily: osfamily,
- operatingsystem: osfamily,
- operatingsystemrelease: operatingsystemrelease,
- is_pe: false,
- id: 'root',
- path: '/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin',
- kernel: kernel,
- }
- end
+ ['RedHat 6', 'Debian 8', 'FreeBSD 9'].each do |os|
+ context "on a #{os} OS" do
+ include_examples os
it { is_expected.to contain_class('apache::dev') }
end
end
end
diff --git a/spec/classes/mod/dir_spec.rb b/spec/classes/mod/dir_spec.rb
index 93d2246f..919d8639 100644
--- a/spec/classes/mod/dir_spec.rb
+++ b/spec/classes/mod/dir_spec.rb
@@ -1,141 +1,33 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::dir', type: :class do
- it_behaves_like 'a mod class, without including apache'
-
- context 'default configuration with parameters on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- lsbdistcodename: 'jessie',
- is_pe: false,
- }
- end
-
- context 'passing no parameters' do
- it { is_expected.to contain_class('apache::params') }
- it { is_expected.to contain_apache__mod('dir') }
- it { is_expected.to contain_file('dir.conf').with_content(%r{^DirectoryIndex }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.html }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.html\.var }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.cgi }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.pl }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.php }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.xhtml$}) }
- end
- context "passing indexes => ['example.txt','fearsome.aspx']" do
- let :params do
- { indexes: ['example.txt', 'fearsome.aspx'] }
- end
-
- it { is_expected.to contain_file('dir.conf').with_content(%r{ example\.txt }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ fearsome\.aspx$}) }
- end
- end
- context 'default configuration with parameters on a RedHat OS' 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
-
- context 'passing no parameters' do
- it { is_expected.to contain_class('apache::params') }
- it { is_expected.to contain_apache__mod('dir') }
- it { is_expected.to contain_file('dir.conf').with_content(%r{^DirectoryIndex }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.html }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.html\.var }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.cgi }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.pl }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.php }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.xhtml$}) }
- end
- context "passing indexes => ['example.txt','fearsome.aspx']" do
- let :params do
- { indexes: ['example.txt', 'fearsome.aspx'] }
- end
-
- it { is_expected.to contain_file('dir.conf').with_content(%r{ example\.txt }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ fearsome\.aspx$}) }
- end
- end
- context 'default configuration with parameters on a FreeBSD OS' do
- let :facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '9',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'FreeBSD',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
-
- context 'passing no parameters' do
- it { is_expected.to contain_class('apache::params') }
- it { is_expected.to contain_apache__mod('dir') }
- it { is_expected.to contain_file('dir.conf').with_content(%r{^DirectoryIndex }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.html }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.html\.var }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.cgi }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.pl }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.php }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.xhtml$}) }
- end
- context "passing indexes => ['example.txt','fearsome.aspx']" do
- let :params do
- { indexes: ['example.txt', 'fearsome.aspx'] }
+ ['Debian 8', 'RedHat 6', 'FreeBSD 9', 'Gentoo'].each do |os|
+ context "default configuration with parameters on #{os}" do
+ include_examples os
+
+ context 'passing no parameters' do
+ it { is_expected.to contain_class('apache::params') }
+ it { is_expected.to contain_apache__mod('dir') }
+ it do
+ is_expected.to contain_file('dir.conf')
+ .with_content(%r{^DirectoryIndex })
+ .with_content(%r{ index\.html })
+ .with_content(%r{ index\.html\.var })
+ .with_content(%r{ index\.cgi })
+ .with_content(%r{ index\.pl })
+ .with_content(%r{ index\.php })
+ .with_content(%r{ index\.xhtml$})
+ end
end
+ context "passing indexes => ['example.txt','fearsome.aspx']" do
+ let :params do
+ { indexes: ['example.txt', 'fearsome.aspx'] }
+ end
- it { is_expected.to contain_file('dir.conf').with_content(%r{ example\.txt }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ fearsome\.aspx$}) }
- end
- end
- context 'default configuration with parameters on a Gentoo OS' do
- let :facts do
- {
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- operatingsystemrelease: '3.16.1-gentoo',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
-
- context 'passing no parameters' do
- it { is_expected.to contain_class('apache::params') }
- it { is_expected.to contain_apache__mod('dir') }
- it { is_expected.to contain_file('dir.conf').with_content(%r{^DirectoryIndex }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.html }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.html\.var }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.cgi }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.pl }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.php }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ index\.xhtml$}) }
- end
- context "passing indexes => ['example.txt','fearsome.aspx']" do
- let :params do
- { indexes: ['example.txt', 'fearsome.aspx'] }
+ it { is_expected.to contain_file('dir.conf').with_content(%r{ example\.txt }).with_content(%r{ fearsome\.aspx$}) }
end
-
- it { is_expected.to contain_file('dir.conf').with_content(%r{ example\.txt }) }
- it { is_expected.to contain_file('dir.conf').with_content(%r{ fearsome\.aspx$}) }
end
end
end
diff --git a/spec/classes/mod/disk_cache_spec.rb b/spec/classes/mod/disk_cache_spec.rb
index 31ee6cd5..7ab6d486 100644
--- a/spec/classes/mod/disk_cache_spec.rb
+++ b/spec/classes/mod/disk_cache_spec.rb
@@ -1,169 +1,138 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::disk_cache', type: :class do
context 'on a Debian OS' 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
+ include_examples 'Debian 8'
let(:params) do
{
cache_ignore_headers: 'Set-Cookie',
}
end
context 'with Apache version < 2.4' do
let :pre_condition do
'class{ "apache":
apache_version => "2.2",
default_mods => ["cache"],
mod_dir => "/tmp/junk",
}'
end
it { is_expected.to compile }
it { is_expected.to contain_class('apache::mod::disk_cache') }
it { is_expected.to contain_apache__mod('disk_cache') }
it {
is_expected.to contain_file('disk_cache.conf')
.with(content: %r{CacheEnable disk \/\nCacheRoot \"\/var\/cache\/apache2\/mod_disk_cache\"\nCacheDirLevels 2\nCacheDirLength 1\nCacheIgnoreHeaders Set-Cookie})
}
end
context 'with Apache version >= 2.4' do
let :pre_condition do
'class{ "apache":
apache_version => "2.4",
default_mods => ["cache"],
mod_dir => "/tmp/junk",
}'
end
it { is_expected.to compile }
it { is_expected.to contain_class('apache::mod::disk_cache') }
it { is_expected.to contain_class('apache::mod::cache').that_comes_before('Class[Apache::Mod::Disk_cache]') }
it { is_expected.to contain_apache__mod('cache_disk') }
it {
is_expected.to contain_file('disk_cache.conf')
.with(content: %r{CacheEnable disk \/\nCacheRoot \"\/var\/cache\/apache2\/mod_cache_disk\"\nCacheDirLevels 2\nCacheDirLength 1\nCacheIgnoreHeaders Set-Cookie})
}
end
end
context 'on a RedHat 6-based OS' 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
+ include_examples 'RedHat 6'
let(:params) do
{
cache_ignore_headers: 'Set-Cookie',
}
end
context 'with Apache version < 2.4' do
let :pre_condition do
'class{ "apache":
apache_version => "2.2",
default_mods => ["cache"],
mod_dir => "/tmp/junk",
}'
end
it { is_expected.to contain_apache__mod('disk_cache') }
it {
is_expected.to contain_file('disk_cache.conf')
.with(content: %r{CacheEnable disk \/\nCacheRoot \"\/var\/cache\/mod_proxy\"\nCacheDirLevels 2\nCacheDirLength 1\nCacheIgnoreHeaders Set-Cookie})
}
end
context 'with Apache version >= 2.4' do
let :pre_condition do
'class{ "apache":
apache_version => "2.4",
default_mods => ["cache"],
mod_dir => "/tmp/junk",
}'
end
it { is_expected.to contain_apache__mod('cache_disk') }
it {
is_expected.to contain_file('disk_cache.conf')
.with(content: %r{CacheEnable disk \/\nCacheRoot \"\/var\/cache\/httpd\/proxy\"\nCacheDirLevels 2\nCacheDirLength 1\nCacheIgnoreHeaders Set-Cookie})
}
end
end
context 'on a FreeBSD OS' 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
+ include_examples 'FreeBSD 10'
let(:params) do
{
cache_ignore_headers: 'Set-Cookie',
}
end
context 'with Apache version < 2.4' do
let :pre_condition do
'class{ "apache":
apache_version => "2.2",
default_mods => ["cache"],
mod_dir => "/tmp/junk",
}'
end
it { is_expected.to compile }
it { is_expected.to contain_class('apache::mod::disk_cache') }
it { is_expected.to contain_class('apache::mod::cache').that_comes_before('Class[Apache::Mod::Disk_cache]') }
it { is_expected.to contain_apache__mod('disk_cache') }
it {
is_expected.to contain_file('disk_cache.conf')
.with(content: %r{CacheEnable disk \/\nCacheRoot \"\/var\/cache\/mod_disk_cache\"\nCacheDirLevels 2\nCacheDirLength 1\nCacheIgnoreHeaders Set-Cookie})
}
end
context 'with Apache version >= 2.4' do
let :pre_condition do
'class{ "apache":
apache_version => "2.4",
default_mods => ["cache"],
mod_dir => "/tmp/junk",
}'
end
it { is_expected.to compile }
it { is_expected.to contain_class('apache::mod::disk_cache') }
it { is_expected.to contain_class('apache::mod::cache').that_comes_before('Class[Apache::Mod::Disk_cache]') }
it { is_expected.to contain_apache__mod('cache_disk') }
it {
is_expected.to contain_file('disk_cache.conf')
.with(content: %r{CacheEnable disk \/\nCacheRoot \"\/var\/cache\/mod_cache_disk\"\nCacheDirLevels 2\nCacheDirLength 1\nCacheIgnoreHeaders Set-Cookie})
}
end
end
end
diff --git a/spec/classes/mod/dumpio_spec.rb b/spec/classes/mod/dumpio_spec.rb
index 4af592ab..529e2aa0 100644
--- a/spec/classes/mod/dumpio_spec.rb
+++ b/spec/classes/mod/dumpio_spec.rb
@@ -1,55 +1,44 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::dumpio', type: :class do
context 'on a Debian OS' do
let :pre_condition do
'class{"apache":
default_mods => false,
mod_dir => "/tmp/junk",
}'
end
- let :facts do
- {
- lsbdistcodename: 'jessie',
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- operatingsystemmajrelease: '8',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+
+ include_examples 'Debian 8'
context 'default configuration fore parameters' do
it { is_expected.to compile }
it { is_expected.to contain_class('apache::mod::dumpio') }
it { is_expected.to contain_file('dumpio.conf').with_path('/tmp/junk/dumpio.conf') }
it { is_expected.to contain_file('dumpio.conf').with_content(%r{^\s*DumpIOInput\s+"Off"$}) }
it { is_expected.to contain_file('dumpio.conf').with_content(%r{^\s*DumpIOOutput\s+"Off"$}) }
end
context 'with dumpio_input set to On' do
let :params do
{
dump_io_input: 'On',
}
end
it { is_expected.to contain_file('dumpio.conf').with_content(%r{^\s*DumpIOInput\s+"On"$}) }
it { is_expected.to contain_file('dumpio.conf').with_content(%r{^\s*DumpIOOutput\s+"Off"$}) }
end
context 'with dumpio_ouput set to On' do
let :params do
{
dump_io_output: 'On',
}
end
it { is_expected.to contain_file('dumpio.conf').with_content(%r{^\s*DumpIOInput\s+"Off"$}) }
it { is_expected.to contain_file('dumpio.conf').with_content(%r{^\s*DumpIOOutput\s+"On"$}) }
end
end
end
diff --git a/spec/classes/mod/event_spec.rb b/spec/classes/mod/event_spec.rb
index da70fd44..70073efc 100644
--- a/spec/classes/mod/event_spec.rb
+++ b/spec/classes/mod/event_spec.rb
@@ -1,212 +1,171 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::event', type: :class do
let :pre_condition do
'class { "apache": mpm_module => false, }'
end
context 'on a FreeBSD OS' do
- let :facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '9',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'FreeBSD',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 9'
it { is_expected.to contain_class('apache::params') }
it { is_expected.not_to contain_apache__mod('event') }
it { is_expected.to contain_file('/usr/local/etc/apache24/Modules/event.conf').with_ensure('file') }
end
context 'on a Gentoo OS' do
- let :facts do
- {
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- operatingsystemrelease: '3.16.1-gentoo',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
it { is_expected.to contain_class('apache::params') }
it { is_expected.not_to contain_apache__mod('event') }
it { is_expected.to contain_file('/etc/apache2/modules.d/event.conf').with_ensure('file') }
end
context 'on a Debian OS' do
- let :facts do
- {
- lsbdistcodename: 'jessie',
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.not_to contain_apache__mod('event') }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file') }
it { is_expected.to contain_file('/etc/apache2/mods-enabled/event.conf').with_ensure('link') }
context 'Test mpm_event new params' do
let :params do
{
serverlimit: '0',
startservers: '1',
maxclients: '2',
minsparethreads: '3',
maxsparethreads: '4',
threadsperchild: '5',
maxrequestsperchild: '6',
threadlimit: '7',
listenbacklog: '8',
maxrequestworkers: '9',
maxconnectionsperchild: '10',
}
end
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').with_content(%r{^\s*ServerLimit\s*0}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').with_content(%r{^\s*StartServers\s*1}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').without_content(%r{^\s*MaxClients}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').with_content(%r{^\s*MinSpareThreads\s*3}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').with_content(%r{^\s*MaxSpareThreads\s*4}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').with_content(%r{^\s*ThreadsPerChild\s*5}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').without_content(%r{^\s*MaxRequestsPerChild}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').with_content(%r{^\s*ThreadLimit\s*7}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').with_content(%r{^\s*ListenBacklog\s*8}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').with_content(%r{^\s*MaxRequestWorkers\s*9}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').with_content(%r{^\s*MaxConnectionsPerChild\s*10}) }
end
context 'Test mpm_event old style params' do
let :params do
{
serverlimit: '0',
startservers: '1',
maxclients: '2',
minsparethreads: '3',
maxsparethreads: '4',
threadsperchild: '5',
maxrequestsperchild: '6',
threadlimit: '7',
listenbacklog: '8',
maxrequestworkers: :undef,
maxconnectionsperchild: :undef,
}
end
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').with_content(%r{^\s*ServerLimit\s*0}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').with_content(%r{^\s*StartServers\s*1}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').with_content(%r{^\s*MaxClients\s*2}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').with_content(%r{^\s*MinSpareThreads\s*3}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').with_content(%r{^\s*MaxSpareThreads\s*4}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').with_content(%r{^\s*ThreadsPerChild\s*5}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').with_content(%r{^\s*MaxRequestsPerChild\s*6}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').with_content(%r{^\s*ThreadLimit\s*7}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').with_content(%r{^\s*ListenBacklog\s*8}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').without_content(%r{^\s*MaxRequestWorkers}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').without_content(%r{^\s*MaxConnectionsPerChild}) }
end
context 'Test mpm_event false params' do
let :params do
{
serverlimit: false,
startservers: false,
maxclients: false,
minsparethreads: false,
maxsparethreads: false,
threadsperchild: false,
maxrequestsperchild: false,
threadlimit: false,
listenbacklog: false,
maxrequestworkers: false,
maxconnectionsperchild: false,
}
end
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').without_content(%r{^\s*ServerLimit}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').without_content(%r{^\s*StartServers}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').without_content(%r{^\s*MaxClients}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').without_content(%r{^\s*MinSpareThreads}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').without_content(%r{^\s*MaxSpareThreads}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').without_content(%r{^\s*ThreadsPerChild}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').without_content(%r{^\s*MaxRequestsPerChild}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').without_content(%r{^\s*ThreadLimit}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').without_content(%r{^\s*ListenBacklog}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').without_content(%r{^\s*MaxRequestWorkers}) }
it { is_expected.to contain_file('/etc/apache2/mods-available/event.conf').with_ensure('file').without_content(%r{^\s*MaxConnectionsPerChild}) }
end
context 'with Apache version < 2.4' do
let :params do
{
apache_version: '2.2',
}
end
it { is_expected.not_to contain_file('/etc/apache2/mods-available/event.load') }
it { is_expected.not_to contain_file('/etc/apache2/mods-enabled/event.load') }
it { is_expected.to contain_package('apache2-mpm-event') }
end
context 'with Apache version >= 2.4' do
let :params do
{
apache_version: '2.4',
}
end
it {
is_expected.to contain_file('/etc/apache2/mods-available/event.load').with('ensure' => 'file',
'content' => "LoadModule mpm_event_module /usr/lib/apache2/modules/mod_mpm_event.so\n")
}
it { is_expected.to contain_file('/etc/apache2/mods-enabled/event.load').with_ensure('link') }
end
end
context 'on a RedHat OS' 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
+ include_examples 'RedHat 6'
context 'with Apache version >= 2.4' do
let :params do
{
apache_version: '2.4',
}
end
it { is_expected.to contain_class('apache::params') }
it { is_expected.not_to contain_apache__mod('worker') }
it { is_expected.not_to contain_apache__mod('prefork') }
it { is_expected.to contain_file('/etc/httpd/conf.d/event.conf').with_ensure('file') }
it {
is_expected.to contain_file('/etc/httpd/conf.d/event.load').with('ensure' => 'file',
'content' => "LoadModule mpm_event_module modules/mod_mpm_event.so\n")
}
end
end
end
diff --git a/spec/classes/mod/expires_spec.rb b/spec/classes/mod/expires_spec.rb
index c01ca257..003a3255 100644
--- a/spec/classes/mod/expires_spec.rb
+++ b/spec/classes/mod/expires_spec.rb
@@ -1,87 +1,58 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::expires', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'with expires active', :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
+ include_examples 'Debian 8'
it { is_expected.to contain_apache__mod('expires') }
it { is_expected.to contain_file('expires.conf').with(content: %r{ExpiresActive On\n}) }
end
context 'with expires default', :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
{
'expires_default' => 'access plus 1 month',
}
end
+ include_examples 'RedHat 7'
+
it { is_expected.to contain_apache__mod('expires') }
it {
is_expected.to contain_file('expires.conf').with_content(
"ExpiresActive On\n" \
"ExpiresDefault \"access plus 1 month\"\n",
)
}
end
context 'with expires by type', :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
{
'expires_by_type' => [
{ 'text/json' => 'mod plus 1 day' },
{ 'text/html' => 'access plus 1 year' },
],
}
end
+ include_examples 'RedHat 7'
+
it { is_expected.to contain_apache__mod('expires') }
it {
is_expected.to contain_file('expires.conf').with_content(
"ExpiresActive On\n" \
"ExpiresByType text/json \"mod plus 1 day\"\n" \
"ExpiresByType text/html \"access plus 1 year\"\n",
)
}
end
end
diff --git a/spec/classes/mod/ext_filter_spec.rb b/spec/classes/mod/ext_filter_spec.rb
index 1d7d4c6d..04d91bd8 100644
--- a/spec/classes/mod/ext_filter_spec.rb
+++ b/spec/classes/mod/ext_filter_spec.rb
@@ -1,65 +1,42 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::ext_filter', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- fqdn: 'test.example.com',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
describe 'with no parameters' do
it { is_expected.to contain_apache__mod('ext_filter') }
it { is_expected.not_to contain_file('ext_filter.conf') }
end
describe 'with parameters' do
let :params do
{ ext_filter_define: { 'filtA' => 'input=A output=B',
'filtB' => 'input=C cmd="C"' } }
end
it { is_expected.to contain_file('ext_filter.conf').with_content(%r{^ExtFilterDefine\s+filtA\s+input=A output=B$}) }
it { is_expected.to contain_file('ext_filter.conf').with_content(%r{^ExtFilterDefine\s+filtB\s+input=C cmd="C"$}) }
end
end
context 'on a RedHat OS' 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',
- fqdn: 'test.example.com',
- is_pe: false,
- }
- end
+ include_examples 'RedHat 6'
describe 'with no parameters' do
it { is_expected.to contain_apache__mod('ext_filter') }
it { is_expected.not_to contain_file('ext_filter.conf') }
end
describe 'with parameters' do
let :params do
{ ext_filter_define: { 'filtA' => 'input=A output=B',
'filtB' => 'input=C cmd="C"' } }
end
it { is_expected.to contain_file('ext_filter.conf').with_path('/etc/httpd/conf.d/ext_filter.conf') }
it { is_expected.to contain_file('ext_filter.conf').with_content(%r{^ExtFilterDefine\s+filtA\s+input=A output=B$}) }
it { is_expected.to contain_file('ext_filter.conf').with_content(%r{^ExtFilterDefine\s+filtB\s+input=C cmd="C"$}) }
end
end
end
diff --git a/spec/classes/mod/fcgid_spec.rb b/spec/classes/mod/fcgid_spec.rb
index 08205ec4..680bf787 100644
--- a/spec/classes/mod/fcgid_spec.rb
+++ b/spec/classes/mod/fcgid_spec.rb
@@ -1,142 +1,87 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::fcgid', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- operatingsystemmajrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it {
is_expected.to contain_apache__mod('fcgid').with('loadfile_name' => nil)
}
it { is_expected.to contain_package('libapache2-mod-fcgid') }
end
context 'on a RHEL6' do
- let :facts do
- {
- osfamily: 'RedHat',
- operatingsystemrelease: '6',
- operatingsystemmajrelease: '6',
- operatingsystem: 'RedHat',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'RedHat 6'
describe 'without parameters' do
it { is_expected.to contain_class('apache::params') }
it {
is_expected.to contain_apache__mod('fcgid').with('loadfile_name' => nil)
}
it { is_expected.to contain_package('mod_fcgid') }
end
describe 'with parameters' do
let :params do
{
options: {
'FcgidIPCDir' => '/var/run/fcgidsock',
'SharememPath' => '/var/run/fcgid_shm',
'FcgidMinProcessesPerClass' => '0',
'AddHandler' => 'fcgid-script .fcgi',
},
}
end
expected = [
'',
' AddHandler fcgid-script .fcgi',
' FcgidIPCDir /var/run/fcgidsock',
' FcgidMinProcessesPerClass 0',
' SharememPath /var/run/fcgid_shm',
'',
]
it 'contains the correct config' do
content = catalogue.resource('file', 'fcgid.conf').send(:parameters)[:content]
expect(content.split("\n").reject { |c| c =~ %r{(^#|^$)} }).to eq(expected)
end
end
end
context 'on RHEL7' do
- let :facts do
- {
- osfamily: 'RedHat',
- operatingsystemrelease: '7',
- operatingsystemmajrelease: '7',
- operatingsystem: 'RedHat',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'RedHat 7'
describe 'without parameters' do
it { is_expected.to contain_class('apache::params') }
it {
is_expected.to contain_apache__mod('fcgid').with('loadfile_name' => 'unixd_fcgid.load')
}
it { is_expected.to contain_package('mod_fcgid') }
end
end
context 'on a FreeBSD OS' do
- let :facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '10',
- operatingsystemmajrelease: '10',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'FreeBSD',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 10'
it { is_expected.to contain_class('apache::params') }
it {
is_expected.to contain_apache__mod('fcgid').with('loadfile_name' => 'unixd_fcgid.load')
}
it { is_expected.to contain_package('www/mod_fcgid') }
end
context 'on a Gentoo OS' do
- let :facts do
- {
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- operatingsystemrelease: '3.16.1-gentoo',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
it { is_expected.to contain_class('apache::params') }
it {
is_expected.to contain_apache__mod('fcgid').with('loadfile_name' => nil)
}
it { is_expected.to contain_package('www-apache/mod_fcgid') }
end
end
diff --git a/spec/classes/mod/http2_spec.rb b/spec/classes/mod/http2_spec.rb
index 978eb63f..af3ff161 100644
--- a/spec/classes/mod/http2_spec.rb
+++ b/spec/classes/mod/http2_spec.rb
@@ -1,100 +1,89 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::http2', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'default configuration with parameters on a Debian OS' do
- let :facts do
- {
- lsbdistcodename: 'jessie',
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- id: 'root',
- kernel: 'Linux',
- operatingsystem: 'Debian',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::mod::http2') }
context 'with default values' do
let(:expected_content) do
<\n"
it { is_expected.to contain_file('info.conf').with_content(expected) }
end
context 'passing restrict_access => false' do
let :params do
{
restrict_access: false,
}
end
it {
is_expected.to contain_file('info.conf').with_content(
"\n"\
" SetHandler server-info\n"\
"\n",
)
}
end
context "passing allow_from => ['10.10.1.2', '192.168.1.2', '127.0.0.1']" do
let :params do
{ allow_from: ['10.10.1.2', '192.168.1.2', '127.0.0.1'] }
end
expected = "\n"\
" SetHandler server-info\n"\
" Order deny,allow\n"\
" Deny from all\n"\
" Allow from 10.10.1.2\n"\
" Allow from 192.168.1.2\n"\
" Allow from 127.0.0.1\n"\
"\n"
it { is_expected.to contain_file('info.conf').with_content(expected) }
end
context 'passing both restrict_access and allow_from' do
let :params do
{
restrict_access: false,
allow_from: ['10.10.1.2', '192.168.1.2', '127.0.0.1'],
}
end
it {
is_expected.to contain_file('info.conf').with_content(
"\n"\
" SetHandler server-info\n"\
"\n",
)
}
end
end
def general_info_specs_apache24
it { is_expected.to contain_apache__mod('info') }
context 'passing no parameters' do
expected = "\n"\
" SetHandler server-info\n"\
" Require ip 127.0.0.1 ::1\n"\
"\n"
it { is_expected.to contain_file('info.conf').with_content(expected) }
end
context 'passing restrict_access => false' do
let :params do
{
restrict_access: false,
}
end
it {
is_expected.to contain_file('info.conf').with_content(
"\n"\
" SetHandler server-info\n"\
"\n",
)
}
end
context "passing allow_from => ['10.10.1.2', '192.168.1.2', '127.0.0.1']" do
let :params do
{ allow_from: ['10.10.1.2', '192.168.1.2', '127.0.0.1'] }
end
expected = "\n"\
" SetHandler server-info\n"\
" Require ip 10.10.1.2 192.168.1.2 127.0.0.1\n"\
"\n"
it {
is_expected.to contain_file('info.conf').with_content(expected)
}
end
context 'passing both restrict_access and allow_from' do
let :params do
{
restrict_access: false,
allow_from: ['10.10.1.2', '192.168.1.2', '127.0.0.1'],
}
end
it {
is_expected.to contain_file('info.conf').with_content(
"\n"\
" SetHandler server-info\n"\
"\n",
)
}
end
end
describe 'apache::mod::info', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'On a Debian OS' 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
+ include_examples 'Debian 8'
# Load the more generic tests for this context
- general_info_specs_apache22
+ general_info_specs_apache24
it {
is_expected.to contain_file('info.conf').with(ensure: 'file',
path: '/etc/apache2/mods-available/info.conf')
}
it {
is_expected.to contain_file('info.conf symlink').with(ensure: 'link',
path: '/etc/apache2/mods-enabled/info.conf')
}
end
context 'on a RedHat OS' 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
+ include_examples 'RedHat 6'
# Load the more generic tests for this context
general_info_specs_apache22
it {
is_expected.to contain_file('info.conf').with(ensure: 'file',
path: '/etc/httpd/conf.d/info.conf')
}
end
context 'on a FreeBSD OS' do
- let :facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '10',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'FreeBSD',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 10'
# Load the more generic tests for this context
general_info_specs_apache24
it {
is_expected.to contain_file('info.conf').with(ensure: 'file',
path: '/usr/local/etc/apache24/Modules/info.conf')
}
end
context 'on a Gentoo OS' do
- let :facts do
- {
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- operatingsystemrelease: '3.16.1-gentoo',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
# Load the more generic tests for this context
general_info_specs_apache24
it {
is_expected.to contain_file('info.conf').with(ensure: 'file',
path: '/etc/apache2/modules.d/info.conf')
}
end
end
diff --git a/spec/classes/mod/intercept_form_submit_spec.rb b/spec/classes/mod/intercept_form_submit_spec.rb
index 45045cbd..7d2d5571 100644
--- a/spec/classes/mod/intercept_form_submit_spec.rb
+++ b/spec/classes/mod/intercept_form_submit_spec.rb
@@ -1,46 +1,25 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::intercept_form_submit', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'default configuration with parameters' do
context 'on a Debian OS' do
- let :facts do
- {
- lsbdistcodename: 'jessie',
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- id: 'root',
- kernel: 'Linux',
- operatingsystem: 'Debian',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache') }
it { is_expected.to contain_package('libapache2-mod-intercept-form-submit') }
it { is_expected.to contain_apache__mod('intercept_form_submit') }
end # Debian
context 'on a RedHat OS' do
- let :facts do
- {
- osfamily: 'RedHat',
- operatingsystemrelease: '6',
- id: 'root',
- kernel: 'Linux',
- operatingsystem: 'RedHat',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache') }
it { is_expected.to contain_package('mod_intercept_form_submit') }
it { is_expected.to contain_apache__mod('intercept_form_submit') }
end # Redhat
end
end
diff --git a/spec/classes/mod/itk_spec.rb b/spec/classes/mod/itk_spec.rb
index 0e7956e5..4812840c 100644
--- a/spec/classes/mod/itk_spec.rb
+++ b/spec/classes/mod/itk_spec.rb
@@ -1,198 +1,167 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::itk', type: :class do
let :pre_condition do
'class { "apache": mpm_module => false, }'
end
context 'on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.not_to contain_apache__mod('itk') }
it { is_expected.to contain_file('/etc/apache2/mods-available/itk.conf').with_ensure('file') }
it { is_expected.to contain_file('/etc/apache2/mods-enabled/itk.conf').with_ensure('link') }
context 'with Apache version < 2.4' do
let :params do
{
apache_version: '2.2',
}
end
it { is_expected.not_to contain_file('/etc/apache2/mods-available/itk.load') }
it { is_expected.not_to contain_file('/etc/apache2/mods-enabled/itk.load') }
it { is_expected.to contain_package('apache2-mpm-itk') }
end
context 'with Apache version < 2.4 with enablecapabilities set' do
let :params do
{
apache_version: '2.2',
enablecapabilities: true,
}
end
it { is_expected.not_to contain_file('/etc/apache2/mods-available/itk.conf').with_content(%r{EnableCapabilities}) }
end
context 'with Apache version >= 2.4' do
let :pre_condition do
'class { "apache": mpm_module => prefork, }'
end
let :params do
{
apache_version: '2.4',
}
end
it {
is_expected.to contain_file('/etc/apache2/mods-available/itk.load').with('ensure' => 'file',
'content' => "LoadModule mpm_itk_module /usr/lib/apache2/modules/mod_mpm_itk.so\n")
}
it { is_expected.to contain_file('/etc/apache2/mods-enabled/itk.load').with_ensure('link') }
end
context 'with Apache version >= 2.4 with enablecapabilities not set' do
let :pre_condition do
'class { "apache": mpm_module => prefork, }'
end
let :params do
{
apache_version: '2.4',
}
end
it { is_expected.not_to contain_file('/etc/apache2/mods-available/itk.conf').with_content(%r{EnableCapabilities}) }
end
end
context 'on a RedHat OS' 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
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache::params') }
it { is_expected.not_to contain_apache__mod('itk') }
it { is_expected.to contain_file('/etc/httpd/conf.d/itk.conf').with_ensure('file') }
it { is_expected.to contain_package('httpd-itk') }
context 'with Apache version < 2.4' do
let :params do
{
apache_version: '2.2',
}
end
it {
is_expected.to contain_file_line('/etc/sysconfig/httpd itk enable').with('require' => 'Package[httpd]')
}
end
context 'with Apache version < 2.4 with enablecapabilities set' do
let :params do
{
apache_version: '2.2',
enablecapabilities: 'On',
}
end
it { is_expected.not_to contain_file('/etc/httpd/conf.d/itk.conf').with_content(%r{EnableCapabilities}) }
end
context 'with Apache version >= 2.4' do
let :pre_condition do
'class { "apache": mpm_module => prefork, }'
end
let :params do
{
apache_version: '2.4',
}
end
it {
is_expected.to contain_file('/etc/httpd/conf.d/itk.load').with('ensure' => 'file',
'content' => "LoadModule mpm_itk_module modules/mod_mpm_itk.so\n")
}
end
context 'with Apache version >= 2.4 with enablecapabilities set' do
let :pre_condition do
'class { "apache": mpm_module => prefork, }'
end
let :params do
{
apache_version: '2.4',
enablecapabilities: false,
}
end
it { is_expected.to contain_file('/etc/httpd/conf.d/itk.conf').with_content(%r{EnableCapabilities Off}) }
end
end
context 'on a FreeBSD OS' do
let :pre_condition do
'class { "apache": mpm_module => false, }'
end
- let :facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '10',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'FreeBSD',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- mpm_module: 'itk',
- }
- end
+ include_examples 'FreeBSD 10'
+ # TODO: fact mpm_module itk?
it { is_expected.to contain_class('apache::params') }
it { is_expected.not_to contain_apache__mod('itk') }
it { is_expected.to contain_file('/usr/local/etc/apache24/Modules/itk.conf').with_ensure('file') }
it { is_expected.to contain_package('www/mod_mpm_itk') }
context 'with Apache version < 2.4 with enablecapabilities not set' do
let :params do
{
apache_version: '2.2',
}
end
it { is_expected.not_to contain_file('/usr/local/etc/apache24/Modules/itk.conf').with_content(%r{EnableCapabilities}) }
end
context 'with Apache version >= 2.4 with enablecapabilities set' do
let :params do
{
apache_version: '2.4',
enablecapabilities: true,
}
end
it { is_expected.to contain_file('/usr/local/etc/apache24/Modules/itk.conf').with_content(%r{EnableCapabilities On}) }
end
end
end
diff --git a/spec/classes/mod/jk_spec.rb b/spec/classes/mod/jk_spec.rb
index 84c09bc5..b6093ab1 100644
--- a/spec/classes/mod/jk_spec.rb
+++ b/spec/classes/mod/jk_spec.rb
@@ -1,246 +1,184 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::jk', type: :class do
it_behaves_like 'a mod class, without including apache'
shared_examples 'minimal resources' do |mod_dir|
it { is_expected.to compile }
it { is_expected.to compile.with_all_deps }
it { is_expected.to create_class('apache::mod::jk') }
it { is_expected.to contain_class('apache') }
it { is_expected.to contain_apache__mod('jk') }
it { is_expected.to contain_file('jk.conf').that_notifies('Class[apache::service]') }
it { is_expected.to contain_file('jk.conf').with(path: "#{mod_dir}/jk.conf") }
end
shared_examples 'specific workers_file' do |mod_dir|
# let(:pre_condition) do
# 'include apache'
# end
let(:params) do
{
workers_file: "#{mod_dir}/workers.properties",
workers_file_content: {
'worker_a' => {
'type' => 'ajp13',
'socket_keepalive' => 'true',
'comment' => 'This is worker A',
},
'worker_b' => {
'type' => 'ajp13',
'socket_keepalive' => 'true',
'comment' => 'This is worker B',
},
'worker_maintain' => 40,
'worker_lists' => ['worker_a,worker_b'],
},
}
end
it { is_expected.to compile }
it { is_expected.to compile.with_all_deps }
expected_content = "# This file is generated automatically by Puppet - DO NOT EDIT\n"\
"# Any manual changes will be overwritten\n"\
"\n"\
"worker.list = worker_a,worker_b\n"\
"\n"\
"worker.maintain = 40\n"\
"\n"\
"# This is worker A\n"\
"worker.worker_a.socket_keepalive=true\n"\
"worker.worker_a.type=ajp13\n"\
"\n"\
"# This is worker B\n"\
"worker.worker_b.socket_keepalive=true\n"\
"worker.worker_b.type=ajp13\n"
it { is_expected.to contain_file("#{mod_dir}/workers.properties").with_content(expected_content) }
end
default_ip = '192.168.1.1'
altern8_ip = '10.1.2.3'
default_port = 80
altern8_port = 8008
- context 'RHEL 6 with only required facts and default parameters' do
- let(:facts) do
- {
- osfamily: 'RedHat',
- operatingsystem: 'RedHat',
- operatingsystemrelease: '6',
- ipaddress: default_ip,
- }
- end
- let(:pre_condition) do
- 'include apache'
- end
- let(:params) do
- {
- logroot: '/var/log/httpd',
- }
- end
- let(:mod_dir) { mod_dir }
+ context 'Debian 8' do
+ include_examples 'Debian 8'
- mod_dir = '/etc/httpd/conf.d'
+ context 'with only required facts and default parameters' do
+ let(:facts) { super().merge('ipaddress' => default_ip) }
+ let(:pre_condition) do
+ 'include apache'
+ end
+ let(:params) do
+ {
+ logroot: '/var/log/apache2',
+ }
+ end
+ let(:mod_dir) { mod_dir }
- it_behaves_like 'minimal resources', mod_dir
- it_behaves_like 'specific workers_file', mod_dir
- it { is_expected.to contain_apache__listen("#{default_ip}:#{default_port}") }
- it {
- verify_contents(catalogue, 'jk.conf', ['', ''])
- }
- end
+ mod_dir = '/etc/apache2/mods-available'
- context 'Debian 8 with only required facts and default parameters' do
- let(:facts) do
- {
- osfamily: 'Debian',
- operatingsystem: 'Debian',
- operatingsystemrelease: '8',
- ipaddress: default_ip,
- }
- end
- let(:pre_condition) do
- 'include apache'
- end
- let(:params) do
- {
- logroot: '/var/log/apache2',
+ it_behaves_like 'minimal resources', mod_dir
+ it_behaves_like 'specific workers_file', mod_dir
+ it { is_expected.to contain_apache__listen("#{default_ip}:#{default_port}") }
+ it { is_expected.to contain_package('libapache2-mod-jk') }
+ it {
+ verify_contents(catalogue, 'jk.conf', ['', ''])
}
end
- let(:mod_dir) { mod_dir }
-
- mod_dir = '/etc/apache2/mods-available'
-
- it_behaves_like 'minimal resources', mod_dir
- it_behaves_like 'specific workers_file', mod_dir
- it { is_expected.to contain_apache__listen("#{default_ip}:#{default_port}") }
- it { is_expected.to contain_package('libapache2-mod-jk') }
- it {
- verify_contents(catalogue, 'jk.conf', ['', ''])
- }
end
- context 'RHEL 6 with required facts and alternative IP' do
- let(:facts) do
- {
- osfamily: 'RedHat',
- operatingsystem: 'RedHat',
- operatingsystemrelease: '6',
- ipaddress: default_ip,
- }
- end
+ context 'RHEL 6' do
+ include_examples 'RedHat 6'
let(:pre_condition) do
'include apache'
end
let(:params) do
{
- ip: altern8_ip,
logroot: '/var/log/httpd',
}
end
- it { is_expected.to contain_apache__listen("#{altern8_ip}:#{default_port}") }
- end
+ context 'with required facts' do
+ let(:facts) { super().merge('ipaddress' => default_ip) }
- context 'RHEL 6 with required facts and alternative port' do
- let(:facts) do
- {
- osfamily: 'RedHat',
- operatingsystem: 'RedHat',
- operatingsystemrelease: '6',
- ipaddress: default_ip,
- }
- end
- let(:pre_condition) do
- 'include apache'
- end
- let(:params) do
- {
- port: altern8_port,
- logroot: '/var/log/httpd',
- }
- end
+ context 'and default parameters' do
+ let(:mod_dir) { mod_dir }
- it { is_expected.to contain_apache__listen("#{default_ip}:#{altern8_port}") }
- end
+ mod_dir = '/etc/httpd/conf.d'
- context 'RHEL 6 with required facts and no binding' do
- let(:facts) do
- {
- osfamily: 'RedHat',
- operatingsystem: 'RedHat',
- operatingsystemrelease: '6',
- ipaddress: default_ip,
- }
- end
- let(:pre_condition) do
- 'include apache'
- end
- let(:params) do
- {
- add_listen: false,
- logroot: '/var/log/httpd',
- }
- end
+ it_behaves_like 'minimal resources', mod_dir
+ it_behaves_like 'specific workers_file', mod_dir
+ it { is_expected.to contain_apache__listen("#{default_ip}:#{default_port}") }
+ it {
+ verify_contents(catalogue, 'jk.conf', ['', ''])
+ }
+ end
- it { is_expected.not_to contain_apache__listen("#{default_ip}:#{default_port}") }
- end
+ context 'and alternative IP' do
+ let(:params) { super().merge(ip: altern8_ip) }
- {
- default: {
- shm_file: :undef,
- log_file: :undef,
- shm_path: '/var/log/httpd/jk-runtime-status',
- log_path: '/var/log/httpd/mod_jk.log',
- },
- relative: {
- shm_file: 'shm_file',
- log_file: 'log_file',
- shm_path: '/var/log/httpd/shm_file',
- log_path: '/var/log/httpd/log_file',
- },
- absolute: {
- shm_file: '/run/shm_file',
- log_file: '/tmp/log_file',
- shm_path: '/run/shm_file',
- log_path: '/tmp/log_file',
- },
- pipe: {
- shm_file: :undef,
- log_file: '"|rotatelogs /var/log/httpd/mod_jk.log.%Y%m%d 86400 -180"',
- shm_path: '/var/log/httpd/jk-runtime-status',
- log_path: '"|rotatelogs /var/log/httpd/mod_jk.log.%Y%m%d 86400 -180"',
- },
- }.each do |option, paths|
- context "RHEL 6 with #{option} shm_file and log_file paths" do
- let(:facts) do
- {
- osfamily: 'RedHat',
- operatingsystem: 'RedHat',
- operatingsystemrelease: '6',
- }
+ it { is_expected.to contain_apache__listen("#{altern8_ip}:#{default_port}") }
end
- let(:pre_condition) do
- 'include apache'
+
+ context 'and alternative port' do
+ let(:params) { super().merge(port: altern8_port) }
+
+ it { is_expected.to contain_apache__listen("#{default_ip}:#{altern8_port}") }
end
- let(:params) do
- {
- logroot: '/var/log/httpd',
- shm_file: paths[:shm_file],
- log_file: paths[:log_file],
- }
+
+ context 'no binding' do
+ let(:params) { super().merge(add_listen: false) }
+
+ it { is_expected.not_to contain_apache__listen("#{default_ip}:#{default_port}") }
end
- expected = "# This file is generated automatically by Puppet - DO NOT EDIT\n"\
- "# Any manual changes will be overwritten\n"\
- "\n"\
- "\n"\
- " JkShmFile #{paths[:shm_path]}\n"\
- " JkLogFile #{paths[:log_path]}\n"\
- "\n"
- it { is_expected.to contain_file('jk.conf').with_content(expected) }
+ {
+ default: {
+ shm_file: :undef,
+ log_file: :undef,
+ shm_path: '/var/log/httpd/jk-runtime-status',
+ log_path: '/var/log/httpd/mod_jk.log',
+ },
+ relative: {
+ shm_file: 'shm_file',
+ log_file: 'log_file',
+ shm_path: '/var/log/httpd/shm_file',
+ log_path: '/var/log/httpd/log_file',
+ },
+ absolute: {
+ shm_file: '/run/shm_file',
+ log_file: '/tmp/log_file',
+ shm_path: '/run/shm_file',
+ log_path: '/tmp/log_file',
+ },
+ pipe: {
+ shm_file: :undef,
+ log_file: '"|rotatelogs /var/log/httpd/mod_jk.log.%Y%m%d 86400 -180"',
+ shm_path: '/var/log/httpd/jk-runtime-status',
+ log_path: '"|rotatelogs /var/log/httpd/mod_jk.log.%Y%m%d 86400 -180"',
+ },
+ }.each do |option, paths|
+ context "#{option} shm_file and log_file paths" do
+ let(:params) do
+ super().merge(
+ shm_file: paths[:shm_file],
+ log_file: paths[:log_file],
+ )
+ end
+
+ expected = "# This file is generated automatically by Puppet - DO NOT EDIT\n"\
+ "# Any manual changes will be overwritten\n"\
+ "\n"\
+ "\n"\
+ " JkShmFile #{paths[:shm_path]}\n"\
+ " JkLogFile #{paths[:log_path]}\n"\
+ "\n"
+ it { is_expected.to contain_file('jk.conf').with_content(expected) }
+ end
+ end
end
end
end
diff --git a/spec/classes/mod/ldap_spec.rb b/spec/classes/mod/ldap_spec.rb
index e95a33cf..fd14cace 100644
--- a/spec/classes/mod/ldap_spec.rb
+++ b/spec/classes/mod/ldap_spec.rb
@@ -1,118 +1,97 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::ldap', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'on a Debian OS' do
- let :facts do
- {
- lsbdistcodename: 'jessie',
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- id: 'root',
- kernel: 'Linux',
- operatingsystem: 'Debian',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_class('apache::mod::ldap') }
it { is_expected.to contain_apache__mod('ldap') }
context 'default ldap_trusted_global_cert_file' do
it { is_expected.to contain_file('ldap.conf').without_content(%r{^LDAPTrustedGlobalCert}) }
end
context 'ldap_trusted_global_cert_file param' do
let(:params) { { ldap_trusted_global_cert_file: 'ca.pem' } }
it { is_expected.to contain_file('ldap.conf').with_content(%r{^LDAPTrustedGlobalCert CA_BASE64 ca\.pem$}) }
end
context 'set multiple ldap params' do
let(:params) do
{
ldap_trusted_global_cert_file: 'ca.pem',
ldap_trusted_global_cert_type: 'CA_DER',
ldap_trusted_mode: 'TLS',
ldap_shared_cache_size: '500000',
ldap_cache_entries: '1024',
ldap_cache_ttl: '600',
ldap_opcache_entries: '1024',
ldap_opcache_ttl: '600',
ldap_path: '/custom-ldap-status',
}
end
it { is_expected.to contain_file('ldap.conf').with_content(%r{^LDAPTrustedGlobalCert CA_DER ca\.pem$}) }
it { is_expected.to contain_file('ldap.conf').with_content(%r{^LDAPTrustedMode TLS$}) }
it { is_expected.to contain_file('ldap.conf').with_content(%r{^LDAPSharedCacheSize 500000$}) }
it { is_expected.to contain_file('ldap.conf').with_content(%r{^LDAPCacheEntries 1024$}) }
it { is_expected.to contain_file('ldap.conf').with_content(%r{^LDAPCacheTTL 600$}) }
it { is_expected.to contain_file('ldap.conf').with_content(%r{^LDAPOpCacheEntries 1024$}) }
it { is_expected.to contain_file('ldap.conf').with_content(%r{^LDAPOpCacheTTL 600$}) }
expected_ldap_path_re =
"\n"\
"\s*SetHandler ldap-status\n"\
".*\n"\
"\n"
it { is_expected.to contain_file('ldap.conf').with_content(%r{#{expected_ldap_path_re}}m) }
end
end # Debian
context 'on a RedHat OS' do
- let :facts do
- {
- osfamily: 'RedHat',
- operatingsystemrelease: '6',
- id: 'root',
- kernel: 'Linux',
- operatingsystem: 'RedHat',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_class('apache::mod::ldap') }
it { is_expected.to contain_apache__mod('ldap') }
context 'default ldap_trusted_global_cert_file' do
it { is_expected.to contain_file('ldap.conf').without_content(%r{^LDAPTrustedGlobalCert}) }
end
context 'ldap_trusted_global_cert_file param' do
let(:params) { { ldap_trusted_global_cert_file: 'ca.pem' } }
it { is_expected.to contain_file('ldap.conf').with_content(%r{^LDAPTrustedGlobalCert CA_BASE64 ca\.pem$}) }
end
context 'ldap_trusted_global_cert_file and ldap_trusted_global_cert_type params' do
let(:params) do
{
ldap_trusted_global_cert_file: 'ca.pem',
ldap_trusted_global_cert_type: 'CA_DER',
}
end
it { is_expected.to contain_file('ldap.conf').with_content(%r{^LDAPTrustedGlobalCert CA_DER ca\.pem$}) }
end
context 'SCL' do
let(:pre_condition) do
"class { 'apache::version':
scl_httpd_version => '2.4',
scl_php_version => '7.0',
}
include apache"
end
it { is_expected.to contain_package('httpd24-mod_ldap') }
end
end # Redhat
end
diff --git a/spec/classes/mod/lookup_identity.rb b/spec/classes/mod/lookup_identity.rb
index 33c8017e..4557f990 100644
--- a/spec/classes/mod/lookup_identity.rb
+++ b/spec/classes/mod/lookup_identity.rb
@@ -1,46 +1,25 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::lookup_identity', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'default configuration with parameters' do
context 'on a Debian OS' do
- let :facts do
- {
- lsbdistcodename: 'jessie',
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- id: 'root',
- kernel: 'Linux',
- operatingsystem: 'Debian',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache') }
it { is_expected.to contain_package('libapache2-mod-lookup-identity') }
it { is_expected.to contain_apache__mod('lookup_identity') }
end # Debian
context 'on a RedHat OS' do
- let :facts do
- {
- osfamily: 'RedHat',
- operatingsystemrelease: '6',
- id: 'root',
- kernel: 'Linux',
- operatingsystem: 'RedHat',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache') }
it { is_expected.to contain_package('mod_lookup_identity') }
it { is_expected.to contain_apache__mod('lookup_identity') }
end # Redhat
end
end
diff --git a/spec/classes/mod/mime_magic_spec.rb b/spec/classes/mod/mime_magic_spec.rb
index 28fcfe03..369a34e0 100644
--- a/spec/classes/mod/mime_magic_spec.rb
+++ b/spec/classes/mod/mime_magic_spec.rb
@@ -1,105 +1,73 @@
# frozen_string_literal: true
require 'spec_helper'
# This function is called inside the OS specific contexts
def general_mime_magic_specs
it { is_expected.to contain_apache__mod('mime_magic') }
end
describe 'apache::mod::mime_magic', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'On a Debian OS with default params' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '6',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
general_mime_magic_specs
it do
is_expected.to contain_file('mime_magic.conf').with_content(
"MIMEMagicFile \"/etc/apache2/magic\"\n",
)
end
it {
is_expected.to contain_file('mime_magic.conf').with(ensure: 'file',
path: '/etc/apache2/mods-available/mime_magic.conf')
}
it {
is_expected.to contain_file('mime_magic.conf symlink').with(ensure: 'link',
path: '/etc/apache2/mods-enabled/mime_magic.conf')
}
context 'with magic_file => /tmp/Debian_magic' do
let :params do
{ magic_file: '/tmp/Debian_magic' }
end
it do
is_expected.to contain_file('mime_magic.conf').with_content(
"MIMEMagicFile \"/tmp/Debian_magic\"\n",
)
end
end
end
context 'on a RedHat 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
+ include_examples 'RedHat 6'
general_mime_magic_specs
it do
is_expected.to contain_file('mime_magic.conf').with_content(
"MIMEMagicFile \"/etc/httpd/conf/magic\"\n",
)
end
it { is_expected.to contain_file('mime_magic.conf').with_path('/etc/httpd/conf.d/mime_magic.conf') }
end
context 'with magic_file => /tmp/magic' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '6',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
let :params do
{ magic_file: '/tmp/magic' }
end
it do
is_expected.to contain_file('mime_magic.conf').with_content(
"MIMEMagicFile \"/tmp/magic\"\n",
)
end
end
end
diff --git a/spec/classes/mod/mime_spec.rb b/spec/classes/mod/mime_spec.rb
index a2b53824..b7b4525f 100644
--- a/spec/classes/mod/mime_spec.rb
+++ b/spec/classes/mod/mime_spec.rb
@@ -1,56 +1,35 @@
# frozen_string_literal: true
require 'spec_helper'
# This function is called inside the OS specific conte, :compilexts
def general_mime_specs
it { is_expected.to contain_apache__mod('mime') }
it do
is_expected.to contain_file('mime.conf').with_content(%r{AddHandler type-map var})
is_expected.to contain_file('mime.conf').with_content(%r{ddOutputFilter INCLUDES .shtml})
is_expected.to contain_file('mime.conf').with_content(%r{AddType text/html .shtml})
is_expected.to contain_file('mime.conf').with_content(%r{AddType application/x-compress .Z})
end
end
describe 'apache::mod::mime', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'On a Debian OS with default params', :compile do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
general_mime_specs
it { is_expected.to contain_file('mime.conf').with_path('/etc/apache2/mods-available/mime.conf') }
end
context 'on a RedHat OS with default params', :compile 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
+ include_examples 'RedHat 6'
general_mime_specs
it { is_expected.to contain_file('mime.conf').with_path('/etc/httpd/conf.d/mime.conf') }
end
end
diff --git a/spec/classes/mod/negotiation_spec.rb b/spec/classes/mod/negotiation_spec.rb
index 63c24acd..8f270526 100644
--- a/spec/classes/mod/negotiation_spec.rb
+++ b/spec/classes/mod/negotiation_spec.rb
@@ -1,53 +1,42 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::negotiation', type: :class do
it_behaves_like 'a mod class, without including apache'
describe 'OS independent tests' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystem: 'Debian',
- kernel: 'Linux',
- lsbdistcodename: 'jessie',
- operatingsystemrelease: '8',
- id: 'root',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
context 'default params' do
it { is_expected.to contain_class('apache') }
it do
is_expected.to contain_file('negotiation.conf').with(ensure: 'file',
content: 'LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
ForceLanguagePriority Prefer Fallback
')
end
end
context 'with force_language_priority parameter' do
let :params do
{ force_language_priority: 'Prefer' }
end
it do
is_expected.to contain_file('negotiation.conf').with(ensure: 'file',
content: %r{^ForceLanguagePriority Prefer$})
end
end
context 'with language_priority parameter' do
let :params do
{ language_priority: ['en', 'es'] }
end
it do
is_expected.to contain_file('negotiation.conf').with(ensure: 'file',
content: %r{^LanguagePriority en es$})
end
end
end
end
diff --git a/spec/classes/mod/pagespeed_spec.rb b/spec/classes/mod/pagespeed_spec.rb
index a6c26290..38e9809e 100644
--- a/spec/classes/mod/pagespeed_spec.rb
+++ b/spec/classes/mod/pagespeed_spec.rb
@@ -1,59 +1,38 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::pagespeed', type: :class do
context 'on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('pagespeed') }
it { is_expected.to contain_package('mod-pagespeed-stable') }
context 'when setting additional_configuration to a Hash' do
let :params do
{ additional_configuration: { 'Key' => 'Value' } }
end
it { is_expected.to contain_file('pagespeed.conf').with_content %r{Key Value} }
end
context 'when setting additional_configuration to an Array' do
let :params do
{ additional_configuration: ['Key Value'] }
end
it { is_expected.to contain_file('pagespeed.conf').with_content %r{Key Value} }
end
end
context 'on a RedHat OS' 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
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('pagespeed') }
it { is_expected.to contain_package('mod-pagespeed-stable') }
it { is_expected.to contain_file('pagespeed.conf') }
end
end
diff --git a/spec/classes/mod/passenger_spec.rb b/spec/classes/mod/passenger_spec.rb
index f2c7152a..fb568911 100644
--- a/spec/classes/mod/passenger_spec.rb
+++ b/spec/classes/mod/passenger_spec.rb
@@ -1,479 +1,476 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::passenger', type: :class do
on_supported_os.each do |os, facts|
context "on #{os} " do
let :facts do
facts
end
case facts[:os]['family']
when 'Debian'
context 'validating all passenger params - using Debian' do
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('passenger') }
it { is_expected.to contain_package('libapache2-mod-passenger') }
it {
is_expected.to contain_file('zpassenger.load').with('path' => '/etc/apache2/mods-available/zpassenger.load')
}
it {
is_expected.to contain_file('passenger.conf').with('path' => '/etc/apache2/mods-available/passenger.conf')
}
passenger_config_options = {
'passenger_allow_encoded_slashes' => { type: 'OnOff', pass_opt: :PassengerAllowEncodedSlashes },
'passenger_anonymous_telemetry_proxy' => { type: 'String', pass_opt: :PassengerAnonymousTelemetryProxy },
'passenger_app_env' => { type: 'String', pass_opt: :PassengerAppEnv },
'passenger_app_group_name' => { type: 'String', pass_opt: :PassengerAppGroupName },
'passenger_app_root' => { type: 'FullPath', pass_opt: :PassengerAppRoot },
'passenger_app_type' => { type: 'String', pass_opt: :PassengerAppType },
'passenger_base_uri' => { type: 'URI', pass_opt: :PassengerBaseURI },
'passenger_buffer_response' => { type: 'OnOff', pass_opt: :PassengerBufferResponse },
'passenger_buffer_upload' => { type: 'OnOff', pass_opt: :PassengerBufferUpload },
'passenger_concurrency_model' => { type: ['process', 'thread'], pass_opt: :PassengerConcurrencyModel },
'passenger_data_buffer_dir' => { type: 'FullPath', pass_opt: :PassengerDataBufferDir },
'passenger_debug_log_file' => { type: 'String', pass_opt: :PassengerDebugLogFile },
'passenger_debugger' => { type: 'OnOff', pass_opt: :PassengerDebugger },
'passenger_default_group' => { type: 'String', pass_opt: :PassengerDefaultGroup },
'passenger_default_ruby' => { type: 'FullPath', pass_opt: :PassengerDefaultRuby },
'passenger_default_user' => { type: 'String', pass_opt: :PassengerDefaultUser },
'passenger_disable_anonymous_telemetry' => { type: 'Boolean', pass_opt: :PassengerDisableAnonymousTelemetry },
'passenger_disable_log_prefix' => { type: 'Boolean', pass_opt: :PassengerDisableLogPrefix },
'passenger_disable_security_update_check' => { type: 'OnOff', pass_opt: :PassengerDisableSecurityUpdateCheck },
'passenger_enabled' => { type: 'OnOff', pass_opt: :PassengerEnabled },
'passenger_error_override' => { type: 'OnOff', pass_opt: :PassengerErrorOverride },
'passenger_file_descriptor_log_file' => { type: 'FullPath', pass_opt: :PassengerFileDescriptorLogFile },
'passenger_fly_with' => { type: 'FullPath', pass_opt: :PassengerFlyWith },
'passenger_force_max_concurrent_requests_per_process' => { type: 'Integer', pass_opt: :PassengerForceMaxConcurrentRequestsPerProcess },
'passenger_friendly_error_pages' => { type: 'OnOff', pass_opt: :PassengerFriendlyErrorPages },
'passenger_group' => { type: 'String', pass_opt: :PassengerGroup },
'passenger_high_performance' => { type: 'OnOff', pass_opt: :PassengerHighPerformance },
'passenger_instance_registry_dir' => { type: 'FullPath', pass_opt: :PassengerInstanceRegistryDir },
'passenger_load_shell_envvars' => { type: 'OnOff', pass_opt: :PassengerLoadShellEnvvars },
'passenger_log_file' => { type: 'FullPath', pass_opt: :PassengerLogFile },
'passenger_log_level' => { type: 'Integer', pass_opt: :PassengerLogLevel },
'passenger_lve_min_uid' => { type: 'Integer', pass_opt: :PassengerLveMinUid },
'passenger_max_instances' => { type: 'Integer', pass_opt: :PassengerMaxInstances },
'passenger_max_instances_per_app' => { type: 'Integer', pass_opt: :PassengerMaxInstancesPerApp },
'passenger_max_pool_size' => { type: 'Integer', pass_opt: :PassengerMaxPoolSize },
'passenger_max_preloader_idle_time' => { type: 'Integer', pass_opt: :PassengerMaxPreloaderIdleTime },
'passenger_max_request_queue_size' => { type: 'Integer', pass_opt: :PassengerMaxRequestQueueSize },
'passenger_max_request_time' => { type: 'Integer', pass_opt: :PassengerMaxRequestTime },
'passenger_max_requests' => { type: 'Integer', pass_opt: :PassengerMaxRequests },
'passenger_memory_limit' => { type: 'Integer', pass_opt: :PassengerMemoryLimit },
'passenger_meteor_app_settings' => { type: 'FullPath', pass_opt: :PassengerMeteorAppSettings },
'passenger_min_instances' => { type: 'Integer', pass_opt: :PassengerMinInstances },
'passenger_nodejs' => { type: 'FullPath', pass_opt: :PassengerNodejs },
'passenger_pool_idle_time' => { type: 'Integer', pass_opt: :PassengerPoolIdleTime },
'passenger_pre_start' => { type: 'URI', pass_opt: :PassengerPreStart },
'passenger_python' => { type: 'FullPath', pass_opt: :PassengerPython },
'passenger_resist_deployment_errors' => { type: 'OnOff', pass_opt: :PassengerResistDeploymentErrors },
'passenger_resolve_symlinks_in_document_root' => { type: 'OnOff', pass_opt: :PassengerResolveSymlinksInDocumentRoot },
'passenger_response_buffer_high_watermark' => { type: 'Integer', pass_opt: :PassengerResponseBufferHighWatermark },
'passenger_restart_dir' => { type: 'Path', pass_opt: :PassengerRestartDir },
'passenger_rolling_restarts' => { type: 'OnOff', pass_opt: :PassengerRollingRestarts },
'passenger_root' => { type: 'FullPath', pass_opt: :PassengerRoot },
'passenger_ruby' => { type: 'FullPath', pass_opt: :PassengerRuby },
'passenger_security_update_check_proxy' => { type: 'URI', pass_opt: :PassengerSecurityUpdateCheckProxy },
'passenger_show_version_in_header' => { type: 'OnOff', pass_opt: :PassengerShowVersionInHeader },
'passenger_socket_backlog' => { type: 'Integer', pass_opt: :PassengerSocketBacklog },
'passenger_spawn_dir' => { type: 'FullPath', pass_opt: :PassengerSpawnDir },
'passenger_spawn_method' => { type: ['smart', 'direct'], pass_opt: :PassengerSpawnMethod },
'passenger_start_timeout' => { type: 'Integer', pass_opt: :PassengerStartTimeout },
'passenger_startup_file' => { type: 'RelPath', pass_opt: :PassengerStartupFile },
'passenger_stat_throttle_rate' => { type: 'Integer', pass_opt: :PassengerStatThrottleRate },
'passenger_sticky_sessions' => { type: 'OnOff', pass_opt: :PassengerStickySessions },
'passenger_sticky_sessions_cookie_name' => { type: 'String', pass_opt: :PassengerStickySessionsCookieName },
'passenger_sticky_sessions_cookie_attributes' => { type: 'QuotedString', pass_opt: :PassengerStickySessionsCookieAttributes },
'passenger_thread_count' => { type: 'Integer', pass_opt: :PassengerThreadCount },
'passenger_use_global_queue' => { type: 'String', pass_opt: :PassengerUseGlobalQueue },
'passenger_user' => { type: 'String', pass_opt: :PassengerUser },
'passenger_user_switching' => { type: 'OnOff', pass_opt: :PassengerUserSwitching },
'rack_auto_detect' => { type: 'String', pass_opt: :RackAutoDetect },
'rack_autodetect' => { type: 'String', pass_opt: :RackAutoDetect },
'rack_base_uri' => { type: 'String', pass_opt: :RackBaseURI },
'rack_env' => { type: 'String', pass_opt: :RackEnv },
'rails_allow_mod_rewrite' => { type: 'String', pass_opt: :RailsAllowModRewrite },
'rails_app_spawner_idle_time' => { type: 'String', pass_opt: :RailsAppSpawnerIdleTime },
'rails_auto_detect' => { type: 'String', pass_opt: :RailsAutoDetect },
'rails_autodetect' => { type: 'String', pass_opt: :RailsAutoDetect },
'rails_base_uri' => { type: 'String', pass_opt: :RailsBaseURI },
'rails_default_user' => { type: 'String', pass_opt: :RailsDefaultUser },
'rails_env' => { type: 'String', pass_opt: :RailsEnv },
'rails_framework_spawner_idle_time' => { type: 'String', pass_opt: :RailsFrameworkSpawnerIdleTime },
'rails_ruby' => { type: 'String', pass_opt: :RailsRuby },
'rails_spawn_method' => { type: 'String', pass_opt: :RailsSpawnMethod },
'rails_user_switching' => { type: 'String', pass_opt: :RailsUserSwitching },
'wsgi_auto_detect' => { type: 'String', pass_opt: :WsgiAutoDetect },
}
passenger_config_options.each do |config_option, config_hash|
puppetized_config_option = config_option
case config_hash[:type]
# UnionStationFilter values are quoted strings
when 'QuotedString'
valid_config_values = ['"a quoted string"']
valid_config_values.each do |valid_value|
describe "with #{puppetized_config_option} => '#{valid_value.delete('"')}'" do
let :params do
{ puppetized_config_option.to_sym => valid_value }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ #{config_hash[:pass_opt]} "#{valid_value}"$}) }
end
end
when 'FullPath', 'RelPath', 'Path'
valid_config_values = ['/some/path/to/somewhere']
valid_config_values.each do |valid_value|
describe "with #{puppetized_config_option} => #{valid_value}" do
let :params do
{ puppetized_config_option.to_sym => valid_value }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ #{config_hash[:pass_opt]} "#{valid_value}"$}) }
end
end
when 'URI', 'String', 'Integer'
valid_config_values = ['some_value_for_you']
valid_config_values.each do |valid_value|
describe "with #{puppetized_config_option} => #{valid_value}" do
let :params do
{ puppetized_config_option.to_sym => valid_value }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ #{config_hash[:pass_opt]} #{valid_value}$}) }
end
end
when 'OnOff'
valid_config_values = ['on', 'off']
valid_config_values.each do |valid_value|
describe "with #{puppetized_config_option} => '#{valid_value}'" do
let :params do
{ puppetized_config_option.to_sym => valid_value }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ #{config_hash[:pass_opt]} #{valid_value}$}) }
end
end
when 'Boolean'
valid_config_values = [true, false]
valid_config_values.each do |valid_value|
describe "with #{puppetized_config_option} => #{valid_value}" do
let :params do
{ puppetized_config_option.to_sym => valid_value }
end
let :expected_value do
{
true => 'On',
false => 'Off',
}[valid_value]
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ #{config_hash[:pass_opt]} #{expected_value}$}) }
end
end
else
valid_config_values = config_hash[:type]
valid_config_values.each do |valid_value|
describe "with #{puppetized_config_option} => '#{valid_value}'" do
let :params do
{ puppetized_config_option.to_sym => valid_value }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ #{config_hash[:pass_opt]} #{valid_value}$}) }
end
end
end
end
end
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('passenger') }
it { is_expected.to contain_package('libapache2-mod-passenger') }
it {
is_expected.to contain_file('zpassenger.load').with('path' => '/etc/apache2/mods-available/zpassenger.load')
}
it {
is_expected.to contain_file('passenger.conf').with('path' => '/etc/apache2/mods-available/passenger.conf')
}
context 'passenger config with passenger_installed_version set', test: true do
describe 'fails when an option is not valid for $passenger_installed_version' do
let :params do
{
passenger_installed_version: '4.0.0',
passenger_instance_registry_dir: '/some/path/to/nowhere',
}
end
it { is_expected.to raise_error(%r{passenger_instance_registry_dir is not introduced until version 5.0.0}) }
end
describe 'fails when an option is removed' do
let :params do
{
passenger_installed_version: '5.0.0',
rails_autodetect: 'on',
}
end
it { is_expected.to raise_error(%r{REMOVED PASSENGER OPTION}) }
end
describe 'warns when an option is deprecated' do
- puts facts[:os]['family']
- puts facts[:os]['release']
-
let :params do
{
passenger_installed_version: '5.0.0',
rails_ruby: '/some/path/to/ruby',
}
end
specify { expect { warn(%r{DEPRECATED PASSENGER OPTION}) }.to output(%r{DEPRECATED PASSENGER OPTION}).to_stderr }
end
end
describe "with passenger_root => '/usr/lib/example'" do
let :params do
{ passenger_root: '/usr/lib/example' }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{PassengerRoot "/usr/lib/example"}) }
end
describe 'with passenger_ruby => /usr/lib/example/ruby' do
let :params do
{ passenger_ruby: '/usr/lib/example/ruby' }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{PassengerRuby "/usr/lib/example/ruby"}) }
end
describe 'with passenger_default_ruby => /usr/lib/example/ruby1.9.3' do
let :params do
{ passenger_ruby: '/usr/lib/example/ruby1.9.3' }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{PassengerRuby "/usr/lib/example/ruby1.9.3"}) }
end
describe 'with passenger_high_performance => on' do
let :params do
{ passenger_high_performance: 'on' }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ PassengerHighPerformance on$}) }
end
describe 'with passenger_pool_idle_time => 1200' do
let :params do
{ passenger_pool_idle_time: 1200 }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ PassengerPoolIdleTime 1200$}) }
end
describe 'with passenger_max_request_queue_size => 100' do
let :params do
{ passenger_max_request_queue_size: 100 }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ PassengerMaxRequestQueueSize 100$}) }
end
describe 'with passenger_max_requests => 20' do
let :params do
{ passenger_max_requests: 20 }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ PassengerMaxRequests 20$}) }
end
describe 'with passenger_spawn_method => direct' do
let :params do
{ passenger_spawn_method: 'direct' }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ PassengerSpawnMethod direct$}) }
end
describe 'with passenger_stat_throttle_rate => 10' do
let :params do
{ passenger_stat_throttle_rate: 10 }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ PassengerStatThrottleRate 10$}) }
end
describe 'with passenger_max_pool_size => 16' do
let :params do
{ passenger_max_pool_size: 16 }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ PassengerMaxPoolSize 16$}) }
end
describe 'with passenger_min_instances => 5' do
let :params do
{ passenger_min_instances: 5 }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ PassengerMinInstances 5$}) }
end
describe 'with passenger_max_instances_per_app => 8' do
let :params do
{ passenger_max_instances_per_app: 8 }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ PassengerMaxInstancesPerApp 8$}) }
end
describe 'with rack_autodetect => on' do
let :params do
{ rack_autodetect: 'on' }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ RackAutoDetect on$}) }
end
describe 'with rails_autodetect => on' do
let :params do
{ rails_autodetect: 'on' }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ RailsAutoDetect on$}) }
end
describe 'with passenger_use_global_queue => on' do
let :params do
{ passenger_use_global_queue: 'on' }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ PassengerUseGlobalQueue on$}) }
end
describe "with passenger_app_env => 'foo'" do
let :params do
{ passenger_app_env: 'foo' }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ PassengerAppEnv foo$}) }
end
describe "with passenger_log_file => '/var/log/apache2/passenger.log'" do
let :params do
{ passenger_log_file: '/var/log/apache2/passenger.log' }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ PassengerLogFile "/var/log/apache2/passenger.log"$}) }
end
describe 'with passenger_log_level => 3' do
let :params do
{ passenger_log_level: 3 }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ PassengerLogLevel 3$}) }
end
describe "with mod_path => '/usr/lib/foo/mod_foo.so'" do
let :params do
{ mod_path: '/usr/lib/foo/mod_foo.so' }
end
it { is_expected.to contain_file('zpassenger.load').with_content(%r{^LoadModule passenger_module \/usr\/lib\/foo\/mod_foo\.so$}) }
end
describe "with mod_lib_path => '/usr/lib/foo'" do
let :params do
{ mod_lib_path: '/usr/lib/foo' }
end
it { is_expected.to contain_file('zpassenger.load').with_content(%r{^LoadModule passenger_module \/usr\/lib\/foo\/mod_passenger\.so$}) }
end
describe "with mod_lib => 'mod_foo.so'" do
let :params do
{ mod_lib: 'mod_foo.so' }
end
it { is_expected.to contain_file('zpassenger.load').with_content(%r{^LoadModule passenger_module \/usr\/lib\/apache2\/modules\/mod_foo\.so$}) }
end
describe "with mod_id => 'mod_foo'" do
let :params do
{ mod_id: 'mod_foo' }
end
it { is_expected.to contain_file('zpassenger.load').with_content(%r{^LoadModule mod_foo \/usr\/lib\/apache2\/modules\/mod_passenger\.so$}) }
end
context 'with Ubuntu 16.04 defaults' do
it { is_expected.to contain_file('passenger.conf').with_content(%r{PassengerRoot "/usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini"}) }
it { is_expected.to contain_file('passenger.conf').without_content(%r{PassengerRuby}) }
it { is_expected.to contain_file('passenger.conf').with_content(%r{PassengerDefaultRuby "/usr/bin/ruby"}) }
end
if facts[:os]['release']['major'].to_i == 8
context 'with Debian 8 defaults' do
it { is_expected.to contain_file('passenger.conf').with_content(%r{PassengerRoot "/usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini"}) }
it { is_expected.to contain_file('passenger.conf').without_content(%r{PassengerRuby}) }
it { is_expected.to contain_file('passenger.conf').with_content(%r{PassengerDefaultRuby "/usr/bin/ruby"}) }
end
end
when 'RedHat'
context 'on a RedHat OS' do
case facts[:os]['release']['major']
when '6'
context 'on EL6' do
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('passenger') }
it { is_expected.to contain_package('mod_passenger') }
it {
is_expected.to contain_file('passenger_package.conf').with('path' => '/etc/httpd/conf.d/passenger.conf')
}
it { is_expected.to contain_file('passenger_package.conf').without_content }
it { is_expected.to contain_file('passenger_package.conf').without_source }
it {
is_expected.to contain_file('zpassenger.load').with('path' => '/etc/httpd/conf.d/zpassenger.load')
}
it { is_expected.to contain_file('passenger.conf').without_content(%r{PassengerRoot}) }
it { is_expected.to contain_file('passenger.conf').without_content(%r{PassengerRuby}) }
describe "with passenger_root => '/usr/lib/example'" do
let :params do
{ passenger_root: '/usr/lib/example' }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ PassengerRoot "\/usr\/lib\/example"$}) }
end
describe 'with passenger_ruby => /usr/lib/example/ruby' do
let :params do
{ passenger_ruby: '/usr/lib/example/ruby' }
end
it { is_expected.to contain_file('passenger.conf').with_content(%r{^ PassengerRuby "\/usr\/lib\/example\/ruby"$}) }
end
end
when '7'
context 'on EL7' do
it {
is_expected.to contain_file('passenger_package.conf').with('path' => '/etc/httpd/conf.d/passenger.conf')
}
it {
is_expected.to contain_file('zpassenger.load').with('path' => '/etc/httpd/conf.modules.d/zpassenger.load')
}
end
when '8'
context 'on EL8' do
it {
is_expected.to contain_file('passenger_package.conf').with('path' => '/etc/httpd/conf.d/passenger.conf')
}
it {
is_expected.to contain_file('zpassenger.load').with('path' => '/etc/httpd/conf.modules.d/zpassenger.load')
}
end
end
end
when 'FreeBSD'
context 'on a FreeBSD OS' do
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('passenger') }
it { is_expected.to contain_package('www/rubygem-passenger') }
end
when 'Gentoo'
context 'on a Gentoo OS' do
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('passenger') }
it { is_expected.to contain_package('www-apache/passenger') }
end
end
end
end
end
diff --git a/spec/classes/mod/perl_spec.rb b/spec/classes/mod/perl_spec.rb
index ddd004b6..d2f3d961 100644
--- a/spec/classes/mod/perl_spec.rb
+++ b/spec/classes/mod/perl_spec.rb
@@ -1,76 +1,35 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::perl', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('perl') }
it { is_expected.to contain_package('libapache2-mod-perl2') }
end
context 'on a RedHat OS' 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
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('perl') }
it { is_expected.to contain_package('mod_perl') }
end
context 'on a FreeBSD OS' do
- let :facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '9',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'FreeBSD',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 9'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('perl') }
it { is_expected.to contain_package('www/mod_perl2') }
end
context 'on a Gentoo OS' do
- let :facts do
- {
- osfamily: 'Gentoo',
- operatingsystemrelease: '3.16.1-gentoo',
- operatingsystem: 'Gentoo',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('perl') }
it { is_expected.to contain_package('www-apache/mod_perl') }
end
end
diff --git a/spec/classes/mod/peruser_spec.rb b/spec/classes/mod/peruser_spec.rb
index 2533a28b..d5142380 100644
--- a/spec/classes/mod/peruser_spec.rb
+++ b/spec/classes/mod/peruser_spec.rb
@@ -1,42 +1,22 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::peruser', type: :class do
let :pre_condition do
'class { "apache": mpm_module => false, }'
end
context 'on a FreeBSD OS' do
- let :facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '10',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'FreeBSD',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 10'
it { is_expected.to compile.and_raise_error(%r{Unsupported osfamily FreeBSD}) }
end
context 'on a Gentoo OS' do
- let :facts do
- {
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- operatingsystemrelease: '3.16.1-gentoo',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
it { is_expected.to contain_class('apache::params') }
it { is_expected.not_to contain_apache__mod('peruser') }
it { is_expected.to contain_file('/etc/apache2/modules.d/peruser.conf').with_ensure('file') }
end
end
diff --git a/spec/classes/mod/prefork_spec.rb b/spec/classes/mod/prefork_spec.rb
index fdc8762a..83e27ed0 100644
--- a/spec/classes/mod/prefork_spec.rb
+++ b/spec/classes/mod/prefork_spec.rb
@@ -1,140 +1,99 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::prefork', type: :class do
let :pre_condition do
'class { "apache": mpm_module => false, }'
end
context 'on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.not_to contain_apache__mod('prefork') }
it { is_expected.to contain_file('/etc/apache2/mods-available/prefork.conf').with_ensure('file') }
it { is_expected.to contain_file('/etc/apache2/mods-enabled/prefork.conf').with_ensure('link') }
context 'with Apache version < 2.4' do
let :params do
{
apache_version: '2.2',
}
end
it { is_expected.not_to contain_file('/etc/apache2/mods-available/prefork.load') }
it { is_expected.not_to contain_file('/etc/apache2/mods-enabled/prefork.load') }
it { is_expected.to contain_package('apache2-mpm-prefork') }
end
context 'with Apache version >= 2.4' do
let :params do
{
apache_version: '2.4',
}
end
it {
is_expected.to contain_file('/etc/apache2/mods-available/prefork.load').with('ensure' => 'file',
'content' => "LoadModule mpm_prefork_module /usr/lib/apache2/modules/mod_mpm_prefork.so\n")
}
it { is_expected.to contain_file('/etc/apache2/mods-enabled/prefork.load').with_ensure('link') }
end
end
context 'on a RedHat OS' 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
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache::params') }
it { is_expected.not_to contain_apache__mod('prefork') }
it { is_expected.to contain_file('/etc/httpd/conf.d/prefork.conf').with_ensure('file') }
context 'with Apache version < 2.4' do
let :params do
{
apache_version: '2.2',
}
end
it {
is_expected.to contain_file_line('/etc/sysconfig/httpd prefork enable').with('require' => 'Package[httpd]')
}
it { is_expected.to contain_file('/etc/httpd/conf.d/prefork.conf').without('content' => %r{MaxRequestWorkers}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/prefork.conf').without('content' => %r{MaxConnectionsPerChild}) }
end
context 'with Apache version >= 2.4' do
let :params do
{
apache_version: '2.4',
maxrequestworkers: '512',
maxconnectionsperchild: '4000',
}
end
it { is_expected.not_to contain_apache__mod('event') }
it {
is_expected.to contain_file('/etc/httpd/conf.d/prefork.load').with('ensure' => 'file',
'content' => "LoadModule mpm_prefork_module modules/mod_mpm_prefork.so\n")
}
it { is_expected.to contain_file('/etc/httpd/conf.d/prefork.conf').without('content' => %r{MaxClients}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/prefork.conf').without('content' => %r{MaxRequestsPerChild}) }
end
end
context 'on a FreeBSD OS' do
- let :facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '9',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'FreeBSD',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 9'
it { is_expected.to contain_class('apache::params') }
it { is_expected.not_to contain_apache__mod('prefork') }
it { is_expected.to contain_file('/usr/local/etc/apache24/Modules/prefork.conf').with_ensure('file') }
end
context 'on a Gentoo OS' do
- let :facts do
- {
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- operatingsystemrelease: '3.16.1-gentoo',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
it { is_expected.to contain_class('apache::params') }
it { is_expected.not_to contain_apache__mod('prefork') }
it { is_expected.to contain_file('/etc/apache2/modules.d/prefork.conf').with_ensure('file') }
end
end
diff --git a/spec/classes/mod/proxy_balancer_spec.rb b/spec/classes/mod/proxy_balancer_spec.rb
index e4b1a72c..48739462 100644
--- a/spec/classes/mod/proxy_balancer_spec.rb
+++ b/spec/classes/mod/proxy_balancer_spec.rb
@@ -1,88 +1,56 @@
# frozen_string_literal: true
require 'spec_helper'
# Helper function for testing the contents of `proxy_balancer.conf`
def balancer_manager_conf_spec(allow_from, manager_path)
expected = "\n"\
" SetHandler balancer-manager\n"\
" Require ip #{Array(allow_from).join(' ')}\n"\
"\n"
it do
is_expected.to contain_file('proxy_balancer.conf').with_content(expected)
end
end
describe 'apache::mod::proxy_balancer', type: :class do
let :pre_condition do
[
'include apache::mod::proxy',
]
end
it_behaves_like 'a mod class, without including apache'
context 'default configuration with default parameters' do
context 'on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_apache__mod('proxy_balancer') }
it { is_expected.not_to contain_file('proxy_balancer.conf') }
it { is_expected.not_to contain_file('proxy_balancer.conf symlink') }
end
context 'on a RedHat OS' 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
+ include_examples 'RedHat 6'
it { is_expected.to contain_apache__mod('proxy_balancer') }
it { is_expected.not_to contain_file('proxy_balancer.conf') }
it { is_expected.not_to contain_file('proxy_balancer.conf symlink') }
end
end
context "default configuration with custom parameters $manager => true, $allow_from => ['10.10.10.10','11.11.11.11'], $status_path => '/custom-manager' on a Debian OS" do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
let :params do
{
manager: true,
allow_from: ['10.10.10.10', '11.11.11.11'],
manager_path: '/custom-manager',
}
end
balancer_manager_conf_spec(['10.10.10.10', '11.11.11.11'], '/custom-manager')
end
end
diff --git a/spec/classes/mod/proxy_connect_spec.rb b/spec/classes/mod/proxy_connect_spec.rb
index b9fc082e..cb433f06 100644
--- a/spec/classes/mod/proxy_connect_spec.rb
+++ b/spec/classes/mod/proxy_connect_spec.rb
@@ -1,65 +1,41 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::proxy_connect', type: :class do
let :pre_condition do
[
'include apache::mod::proxy',
]
end
- it_behaves_like 'a mod class, without including apache'
- context 'on a Debian OS' do
- let :facts do
+ include_examples 'a mod class, without including apache'
+
+ context 'with Apache version < 2.2' do
+ let :params do
{
- osfamily: 'Debian',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
+ apache_version: '2.1',
}
end
- context 'with Apache version < 2.2' do
- let :facts do
- super().merge(operatingsystemrelease: '7.0',
- lsbdistcodename: 'wheezy')
- end
- let :params do
- {
- apache_version: '2.1',
- }
- end
-
- it { is_expected.not_to contain_apache__mod('proxy_connect') }
+ it { is_expected.not_to contain_apache__mod('proxy_connect') }
+ end
+ context 'with Apache version = 2.2' do
+ let :params do
+ {
+ apache_version: '2.2',
+ }
end
- context 'with Apache version = 2.2' do
- let :facts do
- super().merge(operatingsystemrelease: '7.0',
- lsbdistcodename: 'wheezy')
- end
- let :params do
- {
- apache_version: '2.2',
- }
- end
- it { is_expected.to contain_apache__mod('proxy_connect') }
+ it { is_expected.to contain_apache__mod('proxy_connect') }
+ end
+ context 'with Apache version >= 2.4' do
+ let :params do
+ {
+ apache_version: '2.4',
+ }
end
- context 'with Apache version >= 2.4' do
- let :facts do
- super().merge(operatingsystemrelease: '8.0',
- lsbdistcodename: 'jessie')
- end
- let :params do
- {
- apache_version: '2.4',
- }
- end
- it { is_expected.to contain_apache__mod('proxy_connect') }
- end
+ it { is_expected.to contain_apache__mod('proxy_connect') }
end
end
diff --git a/spec/classes/mod/proxy_html_spec.rb b/spec/classes/mod/proxy_html_spec.rb
index c305aa31..a0194163 100644
--- a/spec/classes/mod/proxy_html_spec.rb
+++ b/spec/classes/mod/proxy_html_spec.rb
@@ -1,110 +1,66 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::proxy_html', type: :class do
let :pre_condition do
[
'include apache::mod::proxy',
'include apache::mod::proxy_http',
]
end
it_behaves_like 'a mod class, without including apache'
context 'on a Debian OS' do
shared_examples 'debian' do |loadfiles|
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('proxy_html').with(loadfiles: loadfiles) }
it { is_expected.to contain_package('libapache2-mod-proxy-html') }
end
- let :facts do
- {
- osfamily: 'Debian',
- architecture: 'i386',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- hardwaremodel: 'i386',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
context 'on jessie i386' do
let(:facts) do
- super().merge(operatingsystemrelease: '8',
- hardwaremodel: 'i686',
+ super().merge(hardwaremodel: 'i686',
architecture: 'i386')
end
it { is_expected.to contain_apache__mod('xml2enc').with(loadfiles: nil) }
it_behaves_like 'debian', ['/usr/lib/i386-linux-gnu/libxml2.so.2']
end
context 'on jessie x64' do
let(:facts) do
- super().merge(operatingsystemrelease: '8',
- hardwaremodel: 'x86_64',
+ super().merge(hardwaremodel: 'x86_64',
architecture: 'amd64')
end
it { is_expected.to contain_apache__mod('xml2enc').with(loadfiles: nil) }
it_behaves_like 'debian', ['/usr/lib/x86_64-linux-gnu/libxml2.so.2']
end
end
context 'on a RedHat OS', :compile 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
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('proxy_html').with(loadfiles: nil) }
it { is_expected.to contain_package('mod_proxy_html') }
it { is_expected.to contain_apache__mod('xml2enc').with(loadfiles: nil) }
end
context 'on a FreeBSD OS', :compile do
- let :facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '9',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'FreeBSD',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 9'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('proxy_html').with(loadfiles: nil) }
it { is_expected.to contain_apache__mod('xml2enc').with(loadfiles: nil) }
it { is_expected.to contain_package('www/mod_proxy_html') }
end
context 'on a Gentoo OS', :compile do
- let :facts do
- {
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- operatingsystemrelease: '3.16.1-gentoo',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('proxy_html').with(loadfiles: nil) }
it { is_expected.to contain_apache__mod('xml2enc').with(loadfiles: nil) }
it { is_expected.to contain_package('www-apache/mod_proxy_html') }
end
end
diff --git a/spec/classes/mod/python_spec.rb b/spec/classes/mod/python_spec.rb
index a433deb0..aa08c5db 100644
--- a/spec/classes/mod/python_spec.rb
+++ b/spec/classes/mod/python_spec.rb
@@ -1,86 +1,45 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::python', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('python') }
it { is_expected.to contain_package('libapache2-mod-python') }
end
context 'on a RedHat OS' 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
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('python') }
it { is_expected.to contain_package('mod_python') }
it { is_expected.to contain_file('python.load').with_path('/etc/httpd/conf.d/python.load') }
describe 'with loadfile_name specified' do
let :params do
{ loadfile_name: 'FooBar' }
end
it { is_expected.to contain_file('FooBar').with_path('/etc/httpd/conf.d/FooBar') }
end
end
context 'on a FreeBSD OS' do
- let :facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '9',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'FreeBSD',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 9'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('python') }
it { is_expected.to contain_package('www/mod_python3') }
end
context 'on a Gentoo OS' do
- let :facts do
- {
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- operatingsystemrelease: '3.16.1-gentoo',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('python') }
it { is_expected.to contain_package('www-apache/mod_python') }
end
end
diff --git a/spec/classes/mod/remoteip_spec.rb b/spec/classes/mod/remoteip_spec.rb
index 3de472cb..f83c0f2f 100644
--- a/spec/classes/mod/remoteip_spec.rb
+++ b/spec/classes/mod/remoteip_spec.rb
@@ -1,125 +1,115 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::remoteip', type: :class do
context 'on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- }
- end
+ include_examples 'Debian 8'
let :params do
{ apache_version: '2.4' }
end
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('remoteip') }
it {
is_expected.to contain_file('remoteip.conf').with('path' => '/etc/apache2/mods-available/remoteip.conf')
}
describe 'with header X-Forwarded-For' do
let :params do
{ header: 'X-Forwarded-For' }
end
it { is_expected.to contain_file('remoteip.conf').with_content(%r{^RemoteIPHeader X-Forwarded-For$}) }
end
describe 'with internal_proxy => [ 10.42.17.8, 10.42.18.99 ]' do
let :params do
{ internal_proxy: ['10.42.17.8', '10.42.18.99'] }
end
it { is_expected.to contain_file('remoteip.conf').with_content(%r{^RemoteIPInternalProxy 10.42.17.8$}) }
it { is_expected.to contain_file('remoteip.conf').with_content(%r{^RemoteIPInternalProxy 10.42.18.99$}) }
end
describe 'with IPv4 CIDR in internal_proxy => [ 192.168.1.0/24 ]' do
let :params do
{ internal_proxy: ['192.168.1.0/24'] }
end
it { is_expected.to contain_file('remoteip.conf').with_content(%r{^RemoteIPInternalProxy 192.168.1.0/24$}) }
end
describe 'with IPv6 CIDR in internal_proxy => [ fd00:fd00:fd00:2000::/64 ]' do
let :params do
{ internal_proxy: ['fd00:fd00:fd00:2000::/64'] }
end
it { is_expected.to contain_file('remoteip.conf').with_content(%r{^RemoteIPInternalProxy fd00:fd00:fd00:2000::/64$}) }
end
describe 'with proxy_ips => [ 10.42.17.8, 10.42.18.99 ]' do
let :params do
{ proxy_ips: ['10.42.17.8', '10.42.18.99'] }
end
it { is_expected.to contain_file('remoteip.conf').with_content(%r{^RemoteIPInternalProxy 10.42.17.8$}) }
it { is_expected.to contain_file('remoteip.conf').with_content(%r{^RemoteIPInternalProxy 10.42.18.99$}) }
end
describe 'with IPv4 CIDR in proxy_ips => [ 192.168.1.0/24 ]' do
let :params do
{ proxy_ips: ['192.168.1.0/24'] }
end
it { is_expected.to contain_file('remoteip.conf').with_content(%r{^RemoteIPInternalProxy 192.168.1.0/24$}) }
end
describe 'with IPv6 CIDR in proxy_ips => [ fd00:fd00:fd00:2000::/64 ]' do
let :params do
{ proxy_ips: ['fd00:fd00:fd00:2000::/64'] }
end
it { is_expected.to contain_file('remoteip.conf').with_content(%r{^RemoteIPInternalProxy fd00:fd00:fd00:2000::/64$}) }
end
describe 'with trusted_proxy => [ 10.42.17.8, 10.42.18.99 ]' do
let :params do
{ trusted_proxy: ['10.42.17.8', '10.42.18.99'] }
end
it { is_expected.to contain_file('remoteip.conf').with_content(%r{^RemoteIPTrustedProxy 10.42.17.8$}) }
it { is_expected.to contain_file('remoteip.conf').with_content(%r{^RemoteIPTrustedProxy 10.42.18.99$}) }
end
describe 'with trusted_proxy_ips => [ 10.42.17.8, 10.42.18.99 ]' do
let :params do
{ trusted_proxy: ['10.42.17.8', '10.42.18.99'] }
end
it { is_expected.to contain_file('remoteip.conf').with_content(%r{^RemoteIPTrustedProxy 10.42.17.8$}) }
it { is_expected.to contain_file('remoteip.conf').with_content(%r{^RemoteIPTrustedProxy 10.42.18.99$}) }
end
describe 'with proxy_protocol_exceptions => [ 10.42.17.8, 10.42.18.99 ]' do
let :params do
{ proxy_protocol_exceptions: ['10.42.17.8', '10.42.18.99'] }
end
it { is_expected.to contain_file('remoteip.conf').with_content(%r{^RemoteIPProxyProtocolExceptions 10.42.17.8$}) }
it { is_expected.to contain_file('remoteip.conf').with_content(%r{^RemoteIPProxyProtocolExceptions 10.42.18.99$}) }
end
describe 'with IPv4 CIDR in proxy_protocol_exceptions => [ 192.168.1.0/24 ]' do
let :params do
{ proxy_protocol_exceptions: ['192.168.1.0/24'] }
end
it { is_expected.to contain_file('remoteip.conf').with_content(%r{^RemoteIPProxyProtocolExceptions 192.168.1.0/24$}) }
end
describe 'with IPv6 CIDR in proxy_protocol_exceptions => [ fd00:fd00:fd00:2000::/64 ]' do
let :params do
{ proxy_protocol_exceptions: ['fd00:fd00:fd00:2000::/64'] }
end
it { is_expected.to contain_file('remoteip.conf').with_content(%r{^RemoteIPProxyProtocolExceptions fd00:fd00:fd00:2000::/64$}) }
end
describe 'with Apache version < 2.4' do
let :params do
{ apache_version: '2.2' }
end
it { is_expected.to compile.and_raise_error(%r{mod_remoteip is only available in Apache 2.4}) }
end
end
end
diff --git a/spec/classes/mod/reqtimeout_spec.rb b/spec/classes/mod/reqtimeout_spec.rb
index 6dca3cb2..7d72ea70 100644
--- a/spec/classes/mod/reqtimeout_spec.rb
+++ b/spec/classes/mod/reqtimeout_spec.rb
@@ -1,156 +1,115 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::reqtimeout', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- lsbdistcodename: 'jessie',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
context 'passing no parameters' do
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('reqtimeout') }
it { is_expected.to contain_file('reqtimeout.conf').with_content(%r{^RequestReadTimeout header=20-40,minrate=500\nRequestReadTimeout body=10,minrate=500$}) }
end
context "passing timeouts => ['header=20-60,minrate=600', 'body=60,minrate=600']" do
let :params do
{ timeouts: ['header=20-60,minrate=600', 'body=60,minrate=600'] }
end
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('reqtimeout') }
it { is_expected.to contain_file('reqtimeout.conf').with_content(%r{^RequestReadTimeout header=20-60,minrate=600\nRequestReadTimeout body=60,minrate=600$}) }
end
context "passing timeouts => 'header=20-60,minrate=600'" do
let :params do
{ timeouts: 'header=20-60,minrate=600' }
end
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('reqtimeout') }
it { is_expected.to contain_file('reqtimeout.conf').with_content(%r{^RequestReadTimeout header=20-60,minrate=600$}) }
end
end
context 'on a RedHat OS' 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
+ include_examples 'RedHat 6'
context 'passing no parameters' do
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('reqtimeout') }
it { is_expected.to contain_file('reqtimeout.conf').with_content(%r{^RequestReadTimeout header=20-40,minrate=500\nRequestReadTimeout body=10,minrate=500$}) }
end
context "passing timeouts => ['header=20-60,minrate=600', 'body=60,minrate=600']" do
let :params do
{ timeouts: ['header=20-60,minrate=600', 'body=60,minrate=600'] }
end
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('reqtimeout') }
it { is_expected.to contain_file('reqtimeout.conf').with_content(%r{^RequestReadTimeout header=20-60,minrate=600\nRequestReadTimeout body=60,minrate=600$}) }
end
context "passing timeouts => 'header=20-60,minrate=600'" do
let :params do
{ timeouts: 'header=20-60,minrate=600' }
end
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('reqtimeout') }
it { is_expected.to contain_file('reqtimeout.conf').with_content(%r{^RequestReadTimeout header=20-60,minrate=600$}) }
end
end
context 'on a FreeBSD OS' do
- let :facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '9',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'FreeBSD',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 9'
context 'passing no parameters' do
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('reqtimeout') }
it { is_expected.to contain_file('reqtimeout.conf').with_content(%r{^RequestReadTimeout header=20-40,minrate=500\nRequestReadTimeout body=10,minrate=500$}) }
end
context "passing timeouts => ['header=20-60,minrate=600', 'body=60,minrate=600']" do
let :params do
{ timeouts: ['header=20-60,minrate=600', 'body=60,minrate=600'] }
end
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('reqtimeout') }
it { is_expected.to contain_file('reqtimeout.conf').with_content(%r{^RequestReadTimeout header=20-60,minrate=600\nRequestReadTimeout body=60,minrate=600$}) }
end
context "passing timeouts => 'header=20-60,minrate=600'" do
let :params do
{ timeouts: 'header=20-60,minrate=600' }
end
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('reqtimeout') }
it { is_expected.to contain_file('reqtimeout.conf').with_content(%r{^RequestReadTimeout header=20-60,minrate=600$}) }
end
end
context 'on a Gentoo OS' do
- let :facts do
- {
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- operatingsystemrelease: '3.16.1-gentoo',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
context 'passing no parameters' do
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('reqtimeout') }
it { is_expected.to contain_file('reqtimeout.conf').with_content(%r{^RequestReadTimeout header=20-40,minrate=500\nRequestReadTimeout body=10,minrate=500$}) }
end
context "passing timeouts => ['header=20-60,minrate=600', 'body=60,minrate=600']" do
let :params do
{ timeouts: ['header=20-60,minrate=600', 'body=60,minrate=600'] }
end
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('reqtimeout') }
it { is_expected.to contain_file('reqtimeout.conf').with_content(%r{^RequestReadTimeout header=20-60,minrate=600\nRequestReadTimeout body=60,minrate=600$}) }
end
context "passing timeouts => 'header=20-60,minrate=600'" do
let :params do
{ timeouts: 'header=20-60,minrate=600' }
end
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('reqtimeout') }
it { is_expected.to contain_file('reqtimeout.conf').with_content(%r{^RequestReadTimeout header=20-60,minrate=600$}) }
end
end
end
diff --git a/spec/classes/mod/rpaf_spec.rb b/spec/classes/mod/rpaf_spec.rb
index a36af731..44a8e2cd 100644
--- a/spec/classes/mod/rpaf_spec.rb
+++ b/spec/classes/mod/rpaf_spec.rb
@@ -1,137 +1,106 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::rpaf', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('rpaf') }
it { is_expected.to contain_package('libapache2-mod-rpaf') }
it {
is_expected.to contain_file('rpaf.conf').with('path' => '/etc/apache2/mods-available/rpaf.conf')
}
it { is_expected.to contain_file('rpaf.conf').with_content(%r{^RPAFenable On$}) }
describe 'with sethostname => true' do
let :params do
{ sethostname: 'true' }
end
it { is_expected.to contain_file('rpaf.conf').with_content(%r{^RPAFsethostname On$}) }
end
describe 'with proxy_ips => [ 10.42.17.8, 10.42.18.99 ]' do
let :params do
{ proxy_ips: ['10.42.17.8', '10.42.18.99'] }
end
it { is_expected.to contain_file('rpaf.conf').with_content(%r{^RPAFproxy_ips 10.42.17.8 10.42.18.99$}) }
end
describe 'with header => X-Real-IP' do
let :params do
{ header: 'X-Real-IP' }
end
it { is_expected.to contain_file('rpaf.conf').with_content(%r{^RPAFheader X-Real-IP$}) }
end
end
context 'on a FreeBSD OS' do
- let :facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '9',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'FreeBSD',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 9'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('rpaf') }
it { is_expected.to contain_package('www/mod_rpaf2') }
it {
is_expected.to contain_file('rpaf.conf').with('path' => '/usr/local/etc/apache24/Modules/rpaf.conf')
}
it { is_expected.to contain_file('rpaf.conf').with_content(%r{^RPAFenable On$}) }
describe 'with sethostname => true' do
let :params do
{ sethostname: 'true' }
end
it { is_expected.to contain_file('rpaf.conf').with_content(%r{^RPAFsethostname On$}) }
end
describe 'with proxy_ips => [ 10.42.17.8, 10.42.18.99 ]' do
let :params do
{ proxy_ips: ['10.42.17.8', '10.42.18.99'] }
end
it { is_expected.to contain_file('rpaf.conf').with_content(%r{^RPAFproxy_ips 10.42.17.8 10.42.18.99$}) }
end
describe 'with header => X-Real-IP' do
let :params do
{ header: 'X-Real-IP' }
end
it { is_expected.to contain_file('rpaf.conf').with_content(%r{^RPAFheader X-Real-IP$}) }
end
end
context 'on a Gentoo OS' do
- let :facts do
- {
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- operatingsystemrelease: '3.16.1-gentoo',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('rpaf') }
it { is_expected.to contain_package('www-apache/mod_rpaf') }
it {
is_expected.to contain_file('rpaf.conf').with('path' => '/etc/apache2/modules.d/rpaf.conf')
}
it { is_expected.to contain_file('rpaf.conf').with_content(%r{^RPAFenable On$}) }
describe 'with sethostname => true' do
let :params do
{ sethostname: 'true' }
end
it { is_expected.to contain_file('rpaf.conf').with_content(%r{^RPAFsethostname On$}) }
end
describe 'with proxy_ips => [ 10.42.17.8, 10.42.18.99 ]' do
let :params do
{ proxy_ips: ['10.42.17.8', '10.42.18.99'] }
end
it { is_expected.to contain_file('rpaf.conf').with_content(%r{^RPAFproxy_ips 10.42.17.8 10.42.18.99$}) }
end
describe 'with header => X-Real-IP' do
let :params do
{ header: 'X-Real-IP' }
end
it { is_expected.to contain_file('rpaf.conf').with_content(%r{^RPAFheader X-Real-IP$}) }
end
end
end
diff --git a/spec/classes/mod/shib_spec.rb b/spec/classes/mod/shib_spec.rb
index a6bbe46b..2ade2eb5 100644
--- a/spec/classes/mod/shib_spec.rb
+++ b/spec/classes/mod/shib_spec.rb
@@ -1,44 +1,21 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::shib', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- fqdn: 'test.example.com',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
describe 'with no parameters' do
it { is_expected.to contain_apache__mod('shib2').with_id('mod_shib') }
end
end
context 'on a RedHat OS' 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',
- fqdn: 'test.example.com',
- is_pe: false,
- }
- end
+ include_examples 'RedHat 6'
describe 'with no parameters' do
it { is_expected.to contain_apache__mod('shib2').with_id('mod_shib') }
end
end
end
diff --git a/spec/classes/mod/speling_spec.rb b/spec/classes/mod/speling_spec.rb
index f4a34e3f..2a698f0a 100644
--- a/spec/classes/mod/speling_spec.rb
+++ b/spec/classes/mod/speling_spec.rb
@@ -1,39 +1,18 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::speling', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_apache__mod('speling') }
end
context 'on a RedHat OS' 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
+ include_examples 'RedHat 6'
it { is_expected.to contain_apache__mod('speling') }
end
end
diff --git a/spec/classes/mod/ssl_spec.rb b/spec/classes/mod/ssl_spec.rb
index 36972364..bcf4fe94 100644
--- a/spec/classes/mod/ssl_spec.rb
+++ b/spec/classes/mod/ssl_spec.rb
@@ -1,390 +1,289 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::ssl', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'on an unsupported OS' do
- let :facts do
- {
- osfamily: 'Magic',
- operatingsystemrelease: '0',
- operatingsystem: 'Magic',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Unsupported OS'
it { is_expected.to compile.and_raise_error(%r{Unsupported osfamily:}) }
end
context 'on a RedHat' do
context '6 OS' 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
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('ssl') }
it { is_expected.to contain_package('mod_ssl') }
it { is_expected.to contain_file('ssl.conf').with_path('/etc/httpd/conf.d/ssl.conf') }
it { is_expected.to contain_file('ssl.conf').with_content(%r{SSLProtocol all -SSLv2 -SSLv3}) }
end
context '8 OS' 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
+ include_examples 'RedHat 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('ssl') }
it { is_expected.to contain_package('mod_ssl') }
it { is_expected.to contain_file('ssl.conf').with_path('/etc/httpd/conf.modules.d/ssl.conf') }
it { is_expected.to contain_file('ssl.conf').with_content(%r{SSLProtocol all}) }
end
context '6 OS with a custom package_name parameter' 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
+ include_examples 'RedHat 6'
let :params do
{ package_name: 'httpd24-mod_ssl' }
end
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('ssl') }
it { is_expected.to contain_package('httpd24-mod_ssl') }
it { is_expected.not_to contain_package('mod_ssl') }
it { is_expected.to contain_file('ssl.conf').with_content(%r{^ SSLSessionCache "shmcb:/var/cache/mod_ssl/scache\(512000\)"$}) }
end
context '7 OS with custom directories for PR#1635' 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
+ include_examples 'RedHat 7'
let :pre_condition do
"class { 'apache':
confd_dir => '/etc/httpd/conf.puppet.d',
default_mods => false,
default_vhost => false,
mod_dir => '/etc/httpd/conf.modules.puppet.d',
vhost_dir => '/etc/httpd/conf.puppet.d',
}"
end
it { is_expected.to contain_package('mod_ssl') }
it { is_expected.to contain_file('ssl.conf').with_path('/etc/httpd/conf.puppet.d/ssl.conf') }
end
end
context 'on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('ssl') }
it { is_expected.not_to contain_package('libapache2-mod-ssl') }
it { is_expected.to contain_file('ssl.conf').with_content(%r{SSLProtocol all -SSLv2 -SSLv3}) }
end
context 'on a FreeBSD OS' do
- let :facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '9',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'FreeBSD',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 9'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('ssl') }
end
context 'on a Gentoo OS' do
- let :facts do
- {
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- operatingsystemrelease: '3.16.1-gentoo',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('ssl') }
it { is_expected.to contain_file('ssl.conf').with_content(%r{^ SSLSessionCache "shmcb:/var/run/ssl_scache\(512000\)"$}) }
end
context 'on a Suse OS' do
- let :facts do
- {
- osfamily: 'Suse',
- operatingsystem: 'SLES',
- operatingsystemrelease: '12',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
+ include_examples 'SLES 12'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__mod('ssl') }
it { is_expected.to contain_file('ssl.conf').with_content(%r{^ SSLSessionCache "shmcb:/var/lib/apache2/ssl_scache\(512000\)"$}) }
end
# Template config doesn't vary by distro
context 'on all distros' do
- let :facts do
- {
- osfamily: 'RedHat',
- operatingsystem: 'CentOS',
- operatingsystemrelease: '6',
- kernel: 'Linux',
- id: 'root',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'RedHat 6'
context 'not setting ssl_pass_phrase_dialog' do
it { is_expected.to contain_file('ssl.conf').with_content(%r{^ SSLPassPhraseDialog builtin$}) }
end
context 'setting ssl_cert' do
let :params do
{
ssl_cert: '/etc/pki/some/path/localhost.crt',
}
end
it { is_expected.to contain_file('ssl.conf').with_content(%r{^ SSLCertificateFile}) }
end
context 'setting ssl_key' do
let :params do
{
ssl_key: '/etc/pki/some/path/localhost.key',
}
end
it { is_expected.to contain_file('ssl.conf').with_content(%r{^ SSLCertificateKeyFile}) }
end
context 'setting ssl_ca to a path' do
let :params do
{
ssl_ca: '/etc/pki/some/path/ca.crt',
}
end
it { is_expected.to contain_file('ssl.conf').with_content(%r{^ SSLCACertificateFile}) }
end
context 'with Apache version < 2.4 - ssl_compression with default value' do
let :params do
{
apache_version: '2.2',
}
end
it { is_expected.not_to contain_file('ssl.conf').with_content(%r{^ SSLCompression Off$}) }
end
context 'with Apache version < 2.4 - setting ssl_compression to true' do
let :params do
{
apache_version: '2.2',
ssl_compression: true,
}
end
it { is_expected.not_to contain_file('ssl.conf').with_content(%r{^ SSLCompression On$}) }
end
context 'with Apache version < 2.4 - setting ssl_stapling to true' do
let :params do
{
apache_version: '2.2',
ssl_stapling: true,
}
end
it { is_expected.not_to contain_file('ssl.conf').with_content(%r{^ SSLUseStapling}) }
end
context 'with Apache version >= 2.4 - ssl_compression with default value' do
let :params do
{
apache_version: '2.4',
}
end
it { is_expected.not_to contain_file('ssl.conf').with_content(%r{^ SSLCompression Off$}) }
end
context 'with Apache version >= 2.4' do
let :params do
{
apache_version: '2.4',
ssl_compression: true,
}
end
it { is_expected.to contain_file('ssl.conf').with_content(%r{^ SSLCompression On$}) }
end
context 'with Apache version >= 2.4 - ssl_sessiontickets with default value' do
let :params do
{
apache_version: '2.4',
}
end
it { is_expected.not_to contain_file('ssl.conf').with_content(%r{^ SSLSessionTickets (Off|On)$}) }
end
context 'with Apache version >= 2.4 - setting ssl_sessiontickets to false' do
let :params do
{
apache_version: '2.4',
ssl_sessiontickets: false,
}
end
it { is_expected.to contain_file('ssl.conf').with_content(%r{^ SSLSessionTickets Off$}) }
end
context 'with Apache version >= 2.4 - setting ssl_stapling to true' do
let :params do
{
apache_version: '2.4',
ssl_stapling: true,
}
end
it { is_expected.to contain_file('ssl.conf').with_content(%r{^ SSLUseStapling On$}) }
end
context 'with Apache version >= 2.4 - setting ssl_stapling_return_errors to true' do
let :params do
{
apache_version: '2.4',
ssl_stapling_return_errors: true,
}
end
it { is_expected.to contain_file('ssl.conf').with_content(%r{^ SSLStaplingReturnResponderErrors On$}) }
end
context 'with Apache version >= 2.4 - setting stapling_cache' do
let :params do
{
apache_version: '2.4',
stapling_cache: '/tmp/customstaplingcache(51200)',
}
end
it { is_expected.to contain_file('ssl.conf').with_content(%r{^ SSLStaplingCache "shmcb:/tmp/customstaplingcache\(51200\)"$}) }
end
context 'setting ssl_pass_phrase_dialog' do
let :params do
{
ssl_pass_phrase_dialog: 'exec:/path/to/program',
}
end
it { is_expected.to contain_file('ssl.conf').with_content(%r{^ SSLPassPhraseDialog exec:\/path\/to\/program$}) }
end
context 'setting ssl_random_seed_bytes' do
let :params do
{
ssl_random_seed_bytes: '1024',
}
end
it { is_expected.to contain_file('ssl.conf').with_content(%r{^ SSLRandomSeed startup file:/dev/urandom 1024$}) }
end
context 'setting ssl_openssl_conf_cmd' do
let :params do
{
ssl_openssl_conf_cmd: 'DHParameters "foo.pem"',
}
end
it { is_expected.to contain_file('ssl.conf').with_content(%r{^\s+SSLOpenSSLConfCmd DHParameters "foo.pem"$}) }
end
context 'setting ssl_mutex' do
let :params do
{
ssl_mutex: 'posixsem',
}
end
it { is_expected.to contain_file('ssl.conf').with_content(%r{^ SSLMutex posixsem$}) }
end
context 'setting ssl_sessioncache' do
let :params do
{
ssl_sessioncache: '/tmp/customsessioncache(51200)',
}
end
it { is_expected.to contain_file('ssl.conf').with_content(%r{^ SSLSessionCache "shmcb:/tmp/customsessioncache\(51200\)"$}) }
end
context 'setting ssl_proxy_protocol' do
let :params do
{
ssl_proxy_protocol: ['-ALL', '+TLSv1'],
}
end
it { is_expected.to contain_file('ssl.conf').with_content(%r{^ SSLProxyProtocol -ALL \+TLSv1$}) }
end
end
end
diff --git a/spec/classes/mod/status_spec.rb b/spec/classes/mod/status_spec.rb
index 5db47bb4..c4d814bd 100644
--- a/spec/classes/mod/status_spec.rb
+++ b/spec/classes/mod/status_spec.rb
@@ -1,350 +1,234 @@
# frozen_string_literal: true
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)
+shared_examples 'status_conf_spec' do |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('status conf') 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)
+shared_examples 'status_conf_spec_require' do |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('status conf require') 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,
+ context 'on a Debian 8 OS' do
+ include_examples 'Debian 8'
+
+ context 'with default params' do
+ it { is_expected.to contain_apache__mod('status') }
+
+ include_examples 'status_conf_spec_require', 'ip 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
- it { is_expected.to contain_apache__mod('status') }
+ context "with custom parameters $allow_from => ['10.10.10.10','11.11.11.11'], $extended_status => 'Off', $status_path => '/custom-status'" do
+ let :params do
+ {
+ allow_from: ['10.10.10.10', '11.11.11.11'],
+ extended_status: 'Off',
+ status_path: '/custom-status',
+ }
+ end
- status_conf_spec(['127.0.0.1', '::1'], 'On', '/server-status')
+ it { is_expected.to compile }
- it {
- is_expected.to contain_file('status.conf').with(ensure: 'file',
- path: '/etc/apache2/mods-available/status.conf')
- }
+ include_examples 'status_conf_spec_require', 'ip 10.10.10.10 11.11.11.11', 'Off', '/custom-status'
+ end
- it {
- is_expected.to contain_file('status.conf symlink').with(ensure: 'link',
- path: '/etc/apache2/mods-enabled/status.conf')
- }
- end
+ context "with valid parameter type $allow_from => ['10.10.10.10']" do
+ let :params do
+ { allow_from: ['10.10.10.10'] }
+ 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,
- }
+ it 'expects to succeed array validation' do
+ is_expected.to compile
+ end
end
- it { is_expected.to contain_apache__mod('status') }
+ context "with invalid parameter type $allow_from => '10.10.10.10'" do
+ let :params do
+ { allow_from: '10.10.10.10' }
+ end
- status_conf_spec(['127.0.0.1', '::1'], 'On', '/server-status')
+ it 'expects to fail array validation' do
+ is_expected.to compile.and_raise_error(%r{allow_from})
+ 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 :params do
+ { extended_status: valid_param }
+ end
- it { is_expected.to contain_file('status.conf').with_path('/etc/httpd/conf.d/status.conf') }
+ it 'expects to succeed regular expression validation' do
+ is_expected.to compile
+ end
+ end
+ end
+
+ ['Yes', 'No'].each do |invalid_param|
+ context "with invalid value $extended_status => '#{invalid_param}'" do
+ let :params do
+ { extended_status: invalid_param }
+ end
+
+ it 'expects to fail regular expression validation' do
+ is_expected.to compile.and_raise_error(%r{extended_status})
+ end
+ end
+ end
+ end
+
+ context 'on a RedHat 6 OS' do
+ include_examples 'RedHat 6'
+
+ context 'with default params' do
+ it { is_expected.to contain_apache__mod('status') }
+
+ include_examples '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
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
-
+ context "with default params and #{req_key} requires" do
let :params do
{
requires: req_value,
}
end
- it { is_expected.to contain_apache__mod('status') }
-
- status_conf_spec_require(req_value, 'On', '/server-status')
+ context 'on a Debian 8 OS' do
+ include_examples 'Debian 8'
- it {
- is_expected.to contain_file('status.conf').with(ensure: 'file',
- path: '/etc/apache2/mods-available/status.conf')
- }
+ it { is_expected.to contain_apache__mod('status') }
- it {
- is_expected.to contain_file('status.conf symlink').with(ensure: 'link',
- path: '/etc/apache2/mods-enabled/status.conf')
- }
- end
+ include_examples 'status_conf_spec_require', req_value, 'On', '/server-status'
- 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,
+ it {
+ is_expected.to contain_file('status.conf').with(ensure: 'file',
+ path: '/etc/apache2/mods-available/status.conf')
}
- end
- let :params do
- {
- requires: req_value,
+ it {
+ is_expected.to contain_file('status.conf symlink').with(ensure: 'link',
+ path: '/etc/apache2/mods-enabled/status.conf')
}
end
- it { is_expected.to contain_apache__mod('status') }
-
- status_conf_spec_require(req_value, 'On', '/server-status')
+ context 'on a RedHat 7 OS' do
+ include_examples 'RedHat 7'
- it { is_expected.to contain_file('status.conf').with_path('/etc/httpd/conf.modules.d/status.conf') }
- end
+ it { is_expected.to contain_apache__mod('status') }
- 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
+ include_examples 'status_conf_spec_require', req_value, 'On', '/server-status'
- let :params do
- {
- requires: req_value,
- }
+ it { is_expected.to contain_file('status.conf').with_path('/etc/httpd/conf.modules.d/status.conf') }
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
-
- it { is_expected.to compile }
-
- 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
- is_expected.to compile
- 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
- is_expected.to compile.and_raise_error(%r{allow_from})
- 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
+ context 'on a RedHat 8 OS' do
+ include_examples 'RedHat 8'
- it 'expects to succeed regular expression validation' do
- is_expected.to compile
- end
- end
- end
+ it { is_expected.to contain_apache__mod('status') }
- ['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
+ include_examples 'status_conf_spec_require', req_value, 'On', '/server-status'
- it 'expects to fail regular expression validation' do
- is_expected.to compile.and_raise_error(%r{extended_status})
+ it { is_expected.to contain_file('status.conf').with_path('/etc/httpd/conf.modules.d/status.conf') }
end
end
end
end
end
diff --git a/spec/classes/mod/userdir_spec.rb b/spec/classes/mod/userdir_spec.rb
index 848dc725..73c01a13 100644
--- a/spec/classes/mod/userdir_spec.rb
+++ b/spec/classes/mod/userdir_spec.rb
@@ -1,80 +1,69 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::userdir', type: :class do
context 'on a Debian OS' do
let :pre_condition do
'class { "apache":
default_mods => false,
mod_dir => "/tmp/junk",
}'
end
- let :facts do
- {
- lsbdistcodename: 'jessie',
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- operatingsystemmajrelease: '8',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+
+ include_examples 'Debian 8'
context 'default parameters' do
it { is_expected.to compile }
end
context 'with dir set to something' do
let :params do
{
dir: 'hi',
}
end
it { is_expected.to contain_file('userdir.conf').with_content(%r{^\s*UserDir\s+/home/\*/hi$}) }
it { is_expected.to contain_file('userdir.conf').with_content(%r{^\s*\$}) }
end
context 'with home set to something' do
let :params do
{
home: '/u',
}
end
it { is_expected.to contain_file('userdir.conf').with_content(%r{^\s*UserDir\s+/u/\*/public_html$}) }
it { is_expected.to contain_file('userdir.conf').with_content(%r{^\s*\$}) }
end
context 'with path set to something' do
let :params do
{
path: 'public_html /usr/web http://www.example.com/',
}
end
it { is_expected.to contain_file('userdir.conf').with_content(%r{^\s*UserDir\s+public_html /usr/web http://www\.example\.com/$}) }
it { is_expected.to contain_file('userdir.conf').with_content(%r{^\s*\$}) }
end
context 'with unmanaged_path set to true' do
let :params do
{
unmanaged_path: true,
}
end
it { is_expected.to contain_file('userdir.conf').with_content(%r{^\s*UserDir\s+/home/\*/public_html$}) }
it { is_expected.not_to contain_file('userdir.conf').with_content(%r{^\s*\ false, }'
end
context 'on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.not_to contain_apache__mod('worker') }
it { is_expected.to contain_file('/etc/apache2/mods-available/worker.conf').with_ensure('file') }
it { is_expected.to contain_file('/etc/apache2/mods-enabled/worker.conf').with_ensure('link') }
context 'with Apache version < 2.4' do
let :params do
{
apache_version: '2.2',
}
end
it { is_expected.not_to contain_file('/etc/apache2/mods-available/worker.load') }
it { is_expected.not_to contain_file('/etc/apache2/mods-enabled/worker.load') }
it { is_expected.to contain_package('apache2-mpm-worker') }
end
context 'with Apache version >= 2.4' do
let :params do
{
apache_version: '2.4',
}
end
it {
is_expected.to contain_file('/etc/apache2/mods-available/worker.load').with('ensure' => 'file',
'content' => "LoadModule mpm_worker_module /usr/lib/apache2/modules/mod_mpm_worker.so\n")
}
it { is_expected.to contain_file('/etc/apache2/mods-enabled/worker.load').with_ensure('link') }
end
end
context 'on a RedHat OS' 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
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache::params') }
it { is_expected.not_to contain_apache__mod('worker') }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with_ensure('file') }
context 'with Apache version < 2.4' do
let :params do
{
apache_version: '2.2',
}
end
it {
is_expected.to contain_file_line('/etc/sysconfig/httpd worker enable').with('require' => 'Package[httpd]')
}
end
context 'with Apache version >= 2.4' do
let :params do
{
apache_version: '2.4',
}
end
it { is_expected.not_to contain_apache__mod('event') }
it {
is_expected.to contain_file('/etc/httpd/conf.d/worker.load').with('ensure' => 'file',
'content' => "LoadModule mpm_worker_module modules/mod_mpm_worker.so\n")
}
end
end
context 'on a FreeBSD OS' do
- let :facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '9',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'FreeBSD',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 9'
it { is_expected.to contain_class('apache::params') }
it { is_expected.not_to contain_apache__mod('worker') }
it { is_expected.to contain_file('/usr/local/etc/apache24/Modules/worker.conf').with_ensure('file') }
end
context 'on a Gentoo OS' do
- let :facts do
- {
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- operatingsystemrelease: '3.16.1-gentoo',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
it { is_expected.to contain_class('apache::params') }
it { is_expected.not_to contain_apache__mod('worker') }
it { is_expected.to contain_file('/etc/apache2/modules.d/worker.conf').with_ensure('file') }
end
# Template config doesn't vary by distro
context 'on all distros' do
- let :facts do
- {
- osfamily: 'RedHat',
- operatingsystem: 'CentOS',
- operatingsystemrelease: '6',
- kernel: 'Linux',
- id: 'root',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'RedHat 6'
context 'defaults' do
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^$}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^\s+ServerLimit\s+25$}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^\s+StartServers\s+2$}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^\s+MaxClients\s+150$}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^\s+MinSpareThreads\s+25$}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^\s+MaxSpareThreads\s+75$}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^\s+ThreadsPerChild\s+25$}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^\s+MaxRequestsPerChild\s+0$}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^\s+ThreadLimit\s+64$}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^\s*ListenBacklog\s*511}) }
end
context 'setting params' do
let :params do
{
serverlimit: 10,
startservers: 11,
maxclients: 12,
minsparethreads: 13,
maxsparethreads: 14,
threadsperchild: 15,
maxrequestsperchild: 16,
threadlimit: 17,
listenbacklog: 8,
}
end
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^$}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^\s+ServerLimit\s+10$}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^\s+StartServers\s+11$}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^\s+MaxClients\s+12$}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^\s+MinSpareThreads\s+13$}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^\s+MaxSpareThreads\s+14$}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^\s+ThreadsPerChild\s+15$}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^\s+MaxRequestsPerChild\s+16$}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^\s+ThreadLimit\s+17$}) }
it { is_expected.to contain_file('/etc/httpd/conf.d/worker.conf').with(content: %r{^\s*ListenBacklog\s*8}) }
end
end
end
diff --git a/spec/classes/mod/wsgi_spec.rb b/spec/classes/mod/wsgi_spec.rb
index fb018099..b8fadb10 100644
--- a/spec/classes/mod/wsgi_spec.rb
+++ b/spec/classes/mod/wsgi_spec.rb
@@ -1,217 +1,164 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod::wsgi', type: :class do
it_behaves_like 'a mod class, without including apache'
context 'on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to contain_class('apache::params') }
it {
is_expected.to contain_class('apache::mod::wsgi').with(
'wsgi_socket_prefix' => nil,
)
}
it { is_expected.to contain_package('libapache2-mod-wsgi') }
end
context 'on a RedHat OS' 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
+ include_examples 'RedHat 6'
it { is_expected.to contain_class('apache::params') }
it {
is_expected.to contain_class('apache::mod::wsgi').with(
'wsgi_socket_prefix' => '/var/run/wsgi',
)
}
it { is_expected.to contain_package('mod_wsgi') }
context 'on RHEL8' do
- let(:facts) do
- super().merge(operatingsystemrelease: '8')
- end
+ include_examples 'RedHat 8'
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_file('wsgi.load').with_content(%r{LoadModule wsgi_module modules/mod_wsgi_python3.so}) }
it { is_expected.to contain_package('python3-mod_wsgi') }
end
describe 'with WSGIRestrictEmbedded enabled' do
let :params do
{ wsgi_restrict_embedded: 'On' }
end
it { is_expected.to contain_file('wsgi.conf').with_content(%r{^ WSGIRestrictEmbedded On$}) }
end
describe 'with custom WSGISocketPrefix' do
let :params do
{ wsgi_socket_prefix: 'run/wsgi' }
end
it { is_expected.to contain_file('wsgi.conf').with_content(%r{^ WSGISocketPrefix run\/wsgi$}) }
end
describe 'with custom WSGIPythonHome' do
let :params do
{ wsgi_python_home: '/path/to/virtenv' }
end
it { is_expected.to contain_file('wsgi.conf').with_content(%r{^ WSGIPythonHome "\/path\/to\/virtenv"$}) }
end
describe 'with custom WSGIApplicationGroup' do
let :params do
{ wsgi_application_group: '%{GLOBAL}' }
end
it { is_expected.to contain_file('wsgi.conf').with_content(%r{^ WSGIApplicationGroup "%{GLOBAL}"$}) }
end
describe 'with custom WSGIPythonOptimize' do
let :params do
{ wsgi_python_optimize: 1 }
end
it { is_expected.to contain_file('wsgi.conf').with_content(%r{^ WSGIPythonOptimize 1$}) }
end
describe 'with custom package_name and mod_path' do
let :params do
{
package_name: 'mod_wsgi_package',
mod_path: '/foo/bar/baz',
}
end
it {
is_expected.to contain_apache__mod('wsgi').with('package' => 'mod_wsgi_package',
'path' => '/foo/bar/baz')
}
it { is_expected.to contain_package('mod_wsgi_package') }
it { is_expected.to contain_file('wsgi.load').with_content(%r{LoadModule wsgi_module /foo/bar/baz}) }
end
describe 'with custom mod_path not containing /' do
let :params do
{
package_name: 'mod_wsgi_package',
mod_path: 'wsgi_mod_name.so',
}
end
it {
is_expected.to contain_apache__mod('wsgi').with('path' => 'modules/wsgi_mod_name.so',
'package' => 'mod_wsgi_package')
}
it { is_expected.to contain_file('wsgi.load').with_content(%r{LoadModule wsgi_module modules/wsgi_mod_name.so}) }
end
describe 'with package_name but no mod_path' do
let :params do
{
mod_path: '/foo/bar/baz',
}
end
it { is_expected.to compile.and_raise_error(%r{apache::mod::wsgi - both package_name and mod_path must be specified!}) }
end
describe 'with mod_path but no package_name' do
let :params do
{
package_name: '/foo/bar/baz',
}
end
it { is_expected.to compile.and_raise_error(%r{apache::mod::wsgi - both package_name and mod_path must be specified!}) }
end
end
context 'on a FreeBSD OS' do
- let :facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '9',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'FreeBSD',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 9'
it { is_expected.to contain_class('apache::params') }
it {
is_expected.to contain_class('apache::mod::wsgi').with(
'wsgi_socket_prefix' => nil,
)
}
it { is_expected.to contain_package('www/mod_wsgi') }
end
context 'on a Gentoo OS' do
- let :facts do
- {
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- operatingsystemrelease: '3.16.1-gentoo',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
it { is_expected.to contain_class('apache::params') }
it {
is_expected.to contain_class('apache::mod::wsgi').with(
'wsgi_socket_prefix' => nil,
)
}
it { is_expected.to contain_package('www-apache/mod_wsgi') }
end
context 'overriding mod_libs' do
context 'on a RedHat OS', :compile do
- let :facts do
- {
- id: 'root',
- kernel: 'Linux',
- osfamily: 'RedHat',
- operatingsystem: 'Fedora',
- operatingsystemrelease: '28',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Fedora 28'
let :pre_condition do
<<-MANIFEST
include apache::params
class { 'apache':
mod_packages => merge($::apache::params::mod_packages, {
'wsgi' => 'python3-mod_wsgi',
}),
mod_libs => merge($::apache::params::mod_libs, {
'wsgi' => 'mod_wsgi_python3.so',
})
}
MANIFEST
end
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_file('wsgi.load').with_content(%r{LoadModule wsgi_module modules/mod_wsgi_python3.so}) }
it { is_expected.to contain_package('python3-mod_wsgi') }
end
end
end
diff --git a/spec/classes/params_spec.rb b/spec/classes/params_spec.rb
index ef0c06b5..a2a876ee 100644
--- a/spec/classes/params_spec.rb
+++ b/spec/classes/params_spec.rb
@@ -1,23 +1,12 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::params', type: :class do
context 'On a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it { is_expected.to compile.with_all_deps }
it { is_expected.to have_resource_count(0) }
end
end
diff --git a/spec/classes/service_spec.rb b/spec/classes/service_spec.rb
index d446f667..824b2eab 100644
--- a/spec/classes/service_spec.rb
+++ b/spec/classes/service_spec.rb
@@ -1,175 +1,134 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::service', type: :class do
let :pre_condition do
'include apache::params'
end
context 'on a Debian OS' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
it {
is_expected.to contain_service('httpd').with(
'name' => 'apache2',
'ensure' => 'running',
'enable' => 'true',
)
}
context "with $service_name => 'foo'" do
let(:params) { { service_name: 'foo' } }
it {
is_expected.to contain_service('httpd').with(
'name' => 'foo',
)
}
end
context 'with $service_enable => true' do
let(:params) { { service_enable: true } }
it {
is_expected.to contain_service('httpd').with(
'name' => 'apache2',
'ensure' => 'running',
'enable' => 'true',
)
}
end
context 'with $service_enable => false' do
let(:params) { { service_enable: false } }
it {
is_expected.to contain_service('httpd').with(
'name' => 'apache2',
'ensure' => 'running',
'enable' => 'false',
)
}
end
context "with $service_ensure => 'running'" do
let(:params) { { service_ensure: 'running' } }
it {
is_expected.to contain_service('httpd').with(
'ensure' => 'running',
'enable' => 'true',
)
}
end
context "with $service_ensure => 'stopped'" do
let(:params) { { service_ensure: 'stopped' } }
it {
is_expected.to contain_service('httpd').with(
'ensure' => 'stopped',
'enable' => 'true',
)
}
end
context "with $service_ensure => 'UNDEF'" do
let(:params) { { service_ensure: 'UNDEF' } }
it { is_expected.to contain_service('httpd').without_ensure }
end
context 'with $service_restart unset' do
it { is_expected.to contain_service('httpd').without_restart }
end
context "with $service_restart => '/usr/sbin/apachectl graceful'" do
let(:params) { { service_restart: '/usr/sbin/apachectl graceful' } }
it {
is_expected.to contain_service('httpd').with(
'restart' => '/usr/sbin/apachectl graceful',
)
}
end
end
- context 'on a RedHat 5 OS, do not manage service' do
- let :facts do
- {
- osfamily: 'RedHat',
- operatingsystemrelease: '5',
- operatingsystem: 'RedHat',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ context 'on a RedHat 8 OS, do not manage service' do
+ include_examples 'RedHat 8'
let(:params) do
{
'service_ensure' => 'running',
'service_name' => 'httpd',
'service_manage' => false,
}
end
it { is_expected.not_to contain_service('httpd') }
end
- context 'on a FreeBSD 5 OS' do
- let :facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '9',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'FreeBSD',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ context 'on a FreeBSD 9 OS' do
+ include_examples 'FreeBSD 9'
it {
is_expected.to contain_service('httpd').with(
'name' => 'apache24',
'ensure' => 'running',
'enable' => 'true',
)
}
end
context 'on a Gentoo OS' do
- let :facts do
- {
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- operatingsystemrelease: '3.16.1-gentoo',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
it {
is_expected.to contain_service('httpd').with(
'name' => 'apache2',
'ensure' => 'running',
'enable' => 'true',
)
}
end
end
diff --git a/spec/classes/vhosts_spec.rb b/spec/classes/vhosts_spec.rb
index 673028b8..42a5ed90 100644
--- a/spec/classes/vhosts_spec.rb
+++ b/spec/classes/vhosts_spec.rb
@@ -1,39 +1,29 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::vhosts', type: :class do
context 'on all OSes' 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
+ include_examples 'RedHat 6'
context 'with custom vhosts parameter' do
let :params do
{
vhosts: {
'custom_vhost_1' => {
'docroot' => '/var/www/custom_vhost_1',
'port' => '81',
},
'custom_vhost_2' => {
'docroot' => '/var/www/custom_vhost_2',
'port' => '82',
},
},
}
end
it { is_expected.to contain_apache__vhost('custom_vhost_1') }
it { is_expected.to contain_apache__vhost('custom_vhost_2') }
end
end
end
diff --git a/spec/defines/balancer_spec.rb b/spec/defines/balancer_spec.rb
index 7ba64a8a..5d805469 100644
--- a/spec/defines/balancer_spec.rb
+++ b/spec/defines/balancer_spec.rb
@@ -1,85 +1,75 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::balancer', type: :define do
let :title do
'myapp'
end
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystem: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- id: 'root',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- kernel: 'Linux',
- is_pe: false,
- }
- end
+
+ include_examples 'Debian 8'
describe 'apache pre_condition with defaults' do
let :pre_condition do
'include apache'
end
describe 'works when only declaring resource title' do
it { is_expected.to contain_concat('apache_balancer_myapp') }
it { is_expected.to contain_concat__fragment('00-myapp-header').with_content(%r{^$}) }
end
describe 'accept a target parameter and use it' do
let :params do
{
target: '/tmp/myapp.conf',
}
end
it {
is_expected.to contain_concat('apache_balancer_myapp').with(path: '/tmp/myapp.conf')
}
end
describe 'accept an options parameter and use it' do
let :params do
{
options: ['timeout=0', 'nonce=none'],
}
end
it {
is_expected.to contain_concat__fragment('00-myapp-header').with_content(
%r{^$},
)
}
end
end
describe 'apache pre_condition with conf_dir set' do
let :pre_condition do
'class{"apache":
confd_dir => "/junk/path"
}'
end
it {
is_expected.to contain_concat('apache_balancer_myapp').with(path: '/junk/path/balancer_myapp.conf')
}
end
describe 'with lbmethod and with apache::mod::proxy_balancer::apache_version set' do
let :pre_condition do
'class{"apache::mod::proxy_balancer":
apache_version => "2.4"
}'
end
let :params do
{
proxy_set: {
'lbmethod' => 'bytraffic',
},
}
end
it { is_expected.to contain_apache__mod('slotmem_shm') }
it { is_expected.to contain_apache__mod('lbmethod_bytraffic') }
end
end
diff --git a/spec/defines/balancermember_spec.rb b/spec/defines/balancermember_spec.rb
index 8458d3f3..23d169a0 100644
--- a/spec/defines/balancermember_spec.rb
+++ b/spec/defines/balancermember_spec.rb
@@ -1,65 +1,55 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::balancermember', type: :define do
let :pre_condition do
'include apache'
end
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystem: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- id: 'root',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- kernel: 'Linux',
- is_pe: false,
- }
- end
+
+ include_examples 'Debian 8'
describe 'allows multiple balancermembers with the same url' do
let :pre_condition do
'include apache
apache::balancer {"balancer":}
apache::balancer {"balancer-external":}
apache::balancermember {"http://127.0.0.1:8080-external": url => "http://127.0.0.1:8080/", balancer_cluster => "balancer-external"}
'
end
let :title do
'http://127.0.0.1:8080/'
end
let :params do
{
options: [],
url: 'http://127.0.0.1:8080/',
balancer_cluster: 'balancer-internal',
}
end
it { is_expected.to contain_concat__fragment('BalancerMember http://127.0.0.1:8080/') }
end
describe 'allows balancermember with a different target' do
let :pre_condition do
'include apache
apache::balancer {"balancername": target => "/etc/apache/balancer.conf"}
apache::balancermember {"http://127.0.0.1:8080-external": url => "http://127.0.0.1:8080/", balancer_cluster => "balancername"}
'
end
let :title do
'http://127.0.0.1:8080/'
end
let :params do
{
options: [],
url: 'http://127.0.0.1:8080/',
balancer_cluster: 'balancername',
}
end
it {
is_expected.to contain_concat__fragment('BalancerMember http://127.0.0.1:8080/').with(target: 'apache_balancer_balancername')
}
end
end
diff --git a/spec/defines/custom_config_spec.rb b/spec/defines/custom_config_spec.rb
index 9011fd68..59119a53 100644
--- a/spec/defines/custom_config_spec.rb
+++ b/spec/defines/custom_config_spec.rb
@@ -1,124 +1,104 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::custom_config', type: :define do
let :pre_condition do
'class { "apache": }'
end
let :title do
'rspec'
end
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+
+ include_examples 'Debian 8'
context 'defaults with content' do
let :params do
{
'content' => '# Test',
}
end
it {
- is_expected.to contain_exec('syntax verification for rspec').with('refreshonly' => 'true',
- 'subscribe' => 'File[apache_rspec]',
- 'command' => '/usr/sbin/apachectl -t',
- 'notify' => 'Class[Apache::Service]',
- 'before' => 'Exec[remove rspec if invalid]')
+ is_expected.to contain_exec('syntax verification for rspec')
+ .with('refreshonly' => 'true', 'command' => '/usr/sbin/apachectl -t')
+ .that_subscribes_to('File[apache_rspec]')
+ .that_notifies('Class[Apache::Service]')
+ .that_comes_before('Exec[remove rspec if invalid]')
}
it {
- is_expected.to contain_exec('remove rspec if invalid').with('unless' => '/usr/sbin/apachectl -t',
- 'subscribe' => 'File[apache_rspec]',
- 'refreshonly' => 'true')
+ is_expected.to contain_exec('remove rspec if invalid')
+ .with('unless' => '/usr/sbin/apachectl -t', 'refreshonly' => 'true')
+ .that_subscribes_to('File[apache_rspec]')
}
it {
- is_expected.to contain_file('apache_rspec').with('ensure' => 'present',
- 'content' => '# Test',
- 'require' => 'Package[httpd]')
+ is_expected.to contain_file('apache_rspec')
+ .with('ensure' => 'present', 'content' => '# Test')
+ .that_requires('Package[httpd]')
}
end
context 'set everything with source' do
let :params do
{
'confdir' => '/dne',
'priority' => '30',
'source' => 'puppet:///modules/apache/test',
'verify_command' => '/bin/true',
}
end
it {
is_expected.to contain_exec('syntax verification for rspec').with('command' => '/bin/true')
}
it {
is_expected.to contain_exec('remove rspec if invalid').with('command' => '/bin/rm /dne/30-rspec.conf',
'unless' => '/bin/true')
}
it {
- is_expected.to contain_file('apache_rspec').with('path' => '/dne/30-rspec.conf',
- 'ensure' => 'present',
- 'source' => 'puppet:///modules/apache/test',
- 'require' => 'Package[httpd]')
+ is_expected.to contain_file('apache_rspec')
+ .that_requires('Package[httpd]')
+ .with('path' => '/dne/30-rspec.conf',
+ 'ensure' => 'present',
+ 'source' => 'puppet:///modules/apache/test')
}
end
context 'verify_config => false' do
let :params do
{
'content' => '# test',
'verify_config' => false,
}
end
it { is_expected.not_to contain_exec('syntax verification for rspec') }
it { is_expected.not_to contain_exec('remove rspec if invalid') }
- it {
- is_expected.to contain_file('apache_rspec').with('notify' => 'Class[Apache::Service]')
- }
+ it { is_expected.to contain_file('apache_rspec').that_notifies('Class[Apache::Service]') }
end
context 'ensure => absent' do
let :params do
{
'ensure' => 'absent',
}
end
it { is_expected.not_to contain_exec('syntax verification for rspec') }
it { is_expected.not_to contain_exec('remove rspec if invalid') }
- it {
- is_expected.to contain_file('apache_rspec').with('ensure' => 'absent')
- }
+ it { is_expected.to contain_file('apache_rspec').with('ensure' => 'absent') }
end
describe 'validation' do
context 'both content and source' do
let :params do
{
'content' => 'foo',
'source' => 'bar',
}
end
- it do
- expect {
- catalogue
- }.to raise_error(Puppet::Error, %r{Only one of \$content and \$source can be specified\.})
- end
+ it { is_expected.to compile.and_raise_error(%r{Only one of \$content and \$source can be specified\.}) }
end
+
context 'neither content nor source' do
- it do
- expect {
- catalogue
- }.to raise_error(Puppet::Error, %r{One of \$content and \$source must be specified\.})
- end
+ it { is_expected.to compile.and_raise_error(%r{One of \$content and \$source must be specified\.}) }
end
end
end
diff --git a/spec/defines/mod_spec.rb b/spec/defines/mod_spec.rb
index e4c11af5..14a7e292 100644
--- a/spec/defines/mod_spec.rb
+++ b/spec/defines/mod_spec.rb
@@ -1,158 +1,102 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::mod', type: :define do
let :pre_condition do
'include apache'
end
+ let :title do
+ 'spec_m'
+ end
+
context 'on a RedHat osfamily' 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
+ include_examples 'RedHat 6'
describe 'for non-special modules' do
- let :title do
- 'spec_m'
- end
-
it { is_expected.to contain_class('apache::params') }
it 'manages the module load file' do
is_expected.to contain_file('spec_m.load').with(path: '/etc/httpd/conf.d/spec_m.load',
content: "LoadModule spec_m_module modules/mod_spec_m.so\n",
owner: 'root',
group: 'root',
mode: '0644')
end
end
describe 'with file_mode set' do
let :pre_condition do
"class {'::apache': file_mode => '0640'}"
end
- let :title do
- 'spec_m'
- end
it 'manages the module load file' do
is_expected.to contain_file('spec_m.load').with(mode: '0640')
end
end
describe 'with shibboleth module and package param passed' do
# name/title for the apache::mod define
let :title do
'xsendfile'
end
# parameters
let(:params) { { package: 'mod_xsendfile' } }
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_package('mod_xsendfile') }
end
end
context 'on a Debian osfamily' do
- let :facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- operatingsystem: 'Debian',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'Debian 8'
describe 'for non-special modules' do
- let :title do
- 'spec_m'
- end
-
it { is_expected.to contain_class('apache::params') }
it 'manages the module load file' do
is_expected.to contain_file('spec_m.load').with(path: '/etc/apache2/mods-available/spec_m.load',
content: "LoadModule spec_m_module /usr/lib/apache2/modules/mod_spec_m.so\n",
owner: 'root',
group: 'root',
mode: '0644')
end
it 'links the module load file' do
is_expected.to contain_file('spec_m.load symlink').with(path: '/etc/apache2/mods-enabled/spec_m.load',
target: '/etc/apache2/mods-available/spec_m.load',
owner: 'root',
group: 'root',
mode: '0644')
end
end
end
context 'on a FreeBSD osfamily' do
- let :facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '9',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'FreeBSD',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
+ include_examples 'FreeBSD 9'
describe 'for non-special modules' do
- let :title do
- 'spec_m'
- end
-
it { is_expected.to contain_class('apache::params') }
it 'manages the module load file' do
is_expected.to contain_file('spec_m.load').with(path: '/usr/local/etc/apache24/Modules/spec_m.load',
content: "LoadModule spec_m_module /usr/local/libexec/apache24/mod_spec_m.so\n",
owner: 'root',
group: 'wheel',
mode: '0644')
end
end
end
context 'on a Gentoo osfamily' do
- let :facts do
- {
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- operatingsystemrelease: '3.16.1-gentoo',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
+ include_examples 'Gentoo'
describe 'for non-special modules' do
- let :title do
- 'spec_m'
- end
-
it { is_expected.to contain_class('apache::params') }
it 'manages the module load file' do
is_expected.to contain_file('spec_m.load').with(path: '/etc/apache2/modules.d/spec_m.load',
content: "LoadModule spec_m_module /usr/lib/apache2/modules/mod_spec_m.so\n",
owner: 'root',
group: 'wheel',
mode: '0644')
end
end
end
end
diff --git a/spec/defines/vhost_custom_spec.rb b/spec/defines/vhost_custom_spec.rb
index 962e12da..c5db0b82 100644
--- a/spec/defines/vhost_custom_spec.rb
+++ b/spec/defines/vhost_custom_spec.rb
@@ -1,111 +1,62 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::vhost::custom', type: :define do
let :title do
'rspec.example.com'
end
- let :default_params do
+ let(:params) do
{
content: 'foobar',
}
end
describe 'os-dependent items' do
context 'on RedHat based systems' do
- let :default_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
- let(:params) { default_params }
- let(:facts) { default_facts }
+ include_examples 'RedHat 6'
it { is_expected.to compile }
end
context 'on Debian based systems' do
- let :default_facts do
- {
- osfamily: 'Debian',
- operatingsystemrelease: '8',
- lsbdistcodename: 'jessie',
- 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) { default_params }
- let(:facts) { default_facts }
+ include_examples 'Debian 8'
it {
is_expected.to contain_file('apache_rspec.example.com').with(
ensure: 'present',
content: 'foobar',
path: '/etc/apache2/sites-available/25-rspec.example.com.conf',
)
}
it {
is_expected.to contain_file('25-rspec.example.com.conf symlink').with(
ensure: 'link',
path: '/etc/apache2/sites-enabled/25-rspec.example.com.conf',
target: '/etc/apache2/sites-available/25-rspec.example.com.conf',
)
}
end
context 'on FreeBSD systems' do
- let :default_facts do
- {
- osfamily: 'FreeBSD',
- operatingsystemrelease: '9',
- operatingsystem: 'FreeBSD',
- id: 'root',
- kernel: 'FreeBSD',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
- is_pe: false,
- }
- end
- let(:params) { default_params }
- let(:facts) { default_facts }
+ include_examples 'FreeBSD 9'
it {
is_expected.to contain_file('apache_rspec.example.com').with(
ensure: 'present',
content: 'foobar',
path: '/usr/local/etc/apache24/Vhosts/25-rspec.example.com.conf',
)
}
end
context 'on Gentoo systems' do
- let :default_facts do
- {
- osfamily: 'Gentoo',
- operatingsystem: 'Gentoo',
- operatingsystemrelease: '3.16.1-gentoo',
- id: 'root',
- kernel: 'Linux',
- path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
- is_pe: false,
- }
- end
- let(:params) { default_params }
- let(:facts) { default_facts }
+ include_examples 'Gentoo'
it {
is_expected.to contain_file('apache_rspec.example.com').with(
ensure: 'present',
content: 'foobar',
path: '/etc/apache2/vhosts.d/25-rspec.example.com.conf',
)
}
end
end
end
diff --git a/spec/defines/vhost_spec.rb b/spec/defines/vhost_spec.rb
index a6ce2b29..7d6e49bc 100644
--- a/spec/defines/vhost_spec.rb
+++ b/spec/defines/vhost_spec.rb
@@ -1,2502 +1,2322 @@
# frozen_string_literal: true
require 'spec_helper'
describe 'apache::vhost', type: :define do
describe 'os-independent items' do
on_supported_os.each do |os, facts|
# this setup uses fastcgi wich isn't available on RHEL 7 / RHEL 8 / Ubuntu 18.04
next if facts[:os]['release']['major'] == '18.04' || facts[:os]['release']['major'] == '20.04'
next if (facts[:os]['release']['major'] == '7' || facts[:os]['release']['major'] == '8') && facts[:os]['family']['RedHat']
# next if facts[:os]['name'] == 'SLES'
apache_name = case facts[:os]['family']
when 'RedHat'
'httpd'
when 'Debian'
'apache2'
else
'apache2'
end
let :pre_condition do
"class {'apache': default_vhost => false, default_mods => false, vhost_enable_dir => '/etc/#{apache_name}/sites-enabled'}"
end
let :title do
'rspec.example.com'
end
let :default_params do
{
docroot: '/rspec/docroot',
port: '84',
}
end
context "on #{os} " do
let :facts do
facts
end
describe 'basic assumptions' do
let(:params) { default_params }
it { is_expected.to contain_class('apache') }
it { is_expected.to contain_class('apache::params') }
it { is_expected.to contain_apache__listen(params[:port]) }
# namebased virualhost is only created on apache 2.2 and older
if (facts[:os]['family'] == 'RedHat' && facts[:os]['release']['major'].to_i < 8) ||
(facts[:os]['name'] == 'Amazon') ||
(facts[:os]['name'] == 'SLES' && facts[:os]['release']['major'].to_i < 12)
it { is_expected.to contain_apache__namevirtualhost("*:#{params[:port]}") }
end
end
context 'set everything!' do
let :params do
{
'docroot' => '/var/www/foo',
'manage_docroot' => false,
'virtual_docroot' => true,
'port' => '8080',
'ip' => '127.0.0.1',
'ip_based' => true,
'add_listen' => false,
'docroot_owner' => 'user',
'docroot_group' => 'wheel',
'docroot_mode' => '0664',
'serveradmin' => 'foo@localhost',
'ssl' => true,
'ssl_cert' => '/ssl/cert',
'ssl_key' => '/ssl/key',
'ssl_chain' => '/ssl/chain',
'ssl_crl_path' => '/ssl/crl',
'ssl_crl' => 'foo.crl',
'ssl_certs_dir' => '/ssl/certs',
'ssl_protocol' => 'SSLv2',
'ssl_cipher' => 'HIGH',
'ssl_honorcipherorder' => 'Off',
'ssl_verify_client' => 'optional',
'ssl_verify_depth' => '3',
'ssl_options' => '+ExportCertData',
'ssl_openssl_conf_cmd' => 'DHParameters "foo.pem"',
'ssl_proxy_verify' => 'require',
'ssl_proxy_check_peer_cn' => 'on',
'ssl_proxy_check_peer_name' => 'on',
'ssl_proxy_check_peer_expire' => 'on',
'ssl_proxyengine' => true,
'ssl_proxy_cipher_suite' => 'HIGH',
'ssl_proxy_protocol' => 'TLSv1.2',
'ssl_user_name' => 'SSL_CLIENT_S_DN_CN',
'priority' => '30',
'default_vhost' => true,
'servername' => 'example.com',
'serveraliases' => ['test-example.com'],
'options' => ['MultiView'],
'override' => ['All'],
'directoryindex' => 'index.html',
'vhost_name' => 'test',
'logroot' => '/var/www/logs',
'logroot_ensure' => 'directory',
'logroot_mode' => '0600',
'logroot_owner' => 'root',
'logroot_group' => 'root',
'log_level' => 'crit',
'access_log' => false,
'access_log_file' => 'httpd_access_log',
'access_log_syslog' => true,
'access_log_format' => '%h %l %u %t \"%r\" %>s %b',
'access_log_env_var' => '',
'aliases' => '/image',
'directories' => [
{
'path' => '/var/www/files',
'provider' => 'files',
'require' => ['valid-user', 'all denied'],
},
{
'path' => '/var/www/files',
'provider' => 'files',
'additional_includes' => ['/custom/path/includes', '/custom/path/another_includes'],
},
{
'path' => '/var/www/files',
'provider' => 'files',
'require' => 'all granted',
},
{
'path' => '/var/www/files',
'provider' => 'files',
'require' =>
{
'enforce' => 'all',
'requires' => ['all-valid1', 'all-valid2'],
},
},
{
'path' => '/var/www/files',
'provider' => 'files',
'require' =>
{
'enforce' => 'none',
'requires' => ['none-valid1', 'none-valid2'],
},
},
{
'path' => '/var/www/files',
'provider' => 'files',
'require' =>
{
'enforce' => 'any',
'requires' => ['any-valid1', 'any-valid2'],
},
},
{
'path' => '*',
'provider' => 'proxy',
},
{ 'path' => '/var/www/files/indexed_directory',
'directoryindex' => 'disabled',
'options' => ['Indexes', 'FollowSymLinks', 'MultiViews'],
'index_options' => ['FancyIndexing'],
'index_style_sheet' => '/styles/style.css' },
{ 'path' => '/var/www/files/output_filtered',
'set_output_filter' => 'output_filter' },
{ 'path' => '/var/www/files/input_filtered',
'set_input_filter' => 'input_filter' },
{ 'path' => '/var/www/files',
'provider' => 'location',
'limit' => [
{ 'methods' => 'GET HEAD',
'require' => ['valid-user'] },
] },
{ 'path' => '/var/www/files',
'provider' => 'location',
'limit_except' => [
{ 'methods' => 'GET HEAD',
'require' => ['valid-user'] },
] },
{ 'path' => '/var/www/dav',
'dav' => 'filesystem',
'dav_depth_infinity' => true,
'dav_min_timeout' => '600' },
{
'path' => '/var/www/http2',
'h2_copy_files' => true,
'h2_push_resource' => [
'/foo.css',
'/foo.js',
],
},
{
'path' => '/',
'provider' => 'location',
'auth_ldap_referrals' => 'off',
},
{
'path' => '/proxy',
'provider' => 'location',
'proxy_pass' => [
{
'url' => 'http://backend-b/',
'keywords' => ['noquery', 'interpolate'],
'params' => {
'retry' => '0',
'timeout' => '5',
},
},
],
},
{
'path' => '/var/www/node-app/public',
'passenger_enabled' => true,
'passenger_base_uri' => '/app',
'passenger_ruby' => '/path/to/ruby',
'passenger_python' => '/path/to/python',
'passenger_nodejs' => '/path/to/nodejs',
'passenger_meteor_app_settings' => '/path/to/file.json',
'passenger_app_env' => 'demo',
'passenger_app_root' => '/var/www/node-app',
'passenger_app_group_name' => 'foo_bar',
'passenger_app_start_command' => 'start-command',
'passenger_app_type' => 'node',
'passenger_startup_file' => 'start.js',
'passenger_restart_dir' => 'temp',
'passenger_load_shell_envvars' => false,
'passenger_rolling_restarts' => false,
'passenger_resist_deployment_errors' => false,
'passenger_user' => 'nodeuser',
'passenger_group' => 'nodegroup',
'passenger_friendly_error_pages' => true,
'passenger_min_instances' => 7,
'passenger_max_instances' => 9,
'passenger_force_max_concurrent_requests_per_process' => 12,
'passenger_start_timeout' => 10,
'passenger_concurrency_model' => 'thread',
'passenger_thread_count' => 20,
'passenger_max_requests' => 2000,
'passenger_max_request_time' => 1,
'passenger_memory_limit' => 32,
'passenger_high_performance' => false,
'passenger_buffer_upload' => false,
'passenger_buffer_response' => false,
'passenger_error_override' => false,
'passenger_max_request_queue_size' => 120,
'passenger_max_request_queue_time' => 5,
'passenger_sticky_sessions' => true,
'passenger_sticky_sessions_cookie_name' => '_delicious_cookie',
'passenger_sticky_sessions_cookie_attributes' => 'SameSite=Lax; Secure;',
'passenger_allow_encoded_slashes' => false,
'passenger_app_log_file' => '/tmp/app.log',
'passenger_debugger' => false,
'gssapi' => {
'credstore' => 'keytab:/foo/bar.keytab',
'localname' => 'On',
'sslonly' => 'Off',
},
},
{
'path' => '/private_1',
'provider' => 'location',
'ssl_options' => ['+ExportCertData', '+StdEnvVars'],
'ssl_verify_client' => 'optional',
'ssl_verify_depth' => '10',
},
],
'error_log' => false,
'error_log_file' => 'httpd_error_log',
'error_log_syslog' => true,
'error_log_format' => ['[%t] [%l] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i'],
'error_documents' => 'true',
'fallbackresource' => '/index.php',
'scriptalias' => '/usr/lib/cgi-bin',
'scriptaliases' => [
{
'alias' => '/myscript',
'path' => '/usr/share/myscript',
},
{
'aliasmatch' => '^/foo(.*)',
'path' => '/usr/share/fooscripts$1',
},
],
'limitreqfieldsize' => 8190,
'limitreqfields' => 100,
'limitreqline' => 8190,
'limitreqbody' => 0,
'proxy_dest' => '/',
'proxy_pass' => [
{
'path' => '/a',
'url' => 'http://backend-a/',
'keywords' => ['noquery', 'interpolate'],
'no_proxy_uris' => ['/a/foo', '/a/bar'],
'no_proxy_uris_match' => ['/a/foomatch'],
'reverse_cookies' => [
{
'path' => '/a',
'url' => 'http://backend-a/',
},
{
'domain' => 'foo',
'url' => 'http://foo',
},
],
'params' => {
'retry' => '0',
'timeout' => '5',
},
'setenv' => ['proxy-nokeepalive 1', 'force-proxy-request-1.0 1'],
},
],
'proxy_pass_match' => [
{
'path' => '/a',
'url' => 'http://backend-a/',
'keywords' => ['noquery', 'interpolate'],
'no_proxy_uris' => ['/a/foo', '/a/bar'],
'no_proxy_uris_match' => ['/a/foomatch'],
'params' => {
'retry' => '0',
'timeout' => '5',
},
'setenv' => ['proxy-nokeepalive 1', 'force-proxy-request-1.0 1'],
},
],
'proxy_requests' => false,
'suphp_addhandler' => 'foo',
'suphp_engine' => 'on',
'suphp_configpath' => '/var/www/html',
'php_admin_flags' => ['foo', 'bar'],
'php_admin_values' => ['true', 'false'],
'no_proxy_uris' => '/foo',
'no_proxy_uris_match' => '/foomatch',
'proxy_preserve_host' => true,
'proxy_add_headers' => true,
'proxy_error_override' => true,
'redirect_source' => '/bar',
'redirect_dest' => '/',
'redirect_status' => 'temp',
'redirectmatch_status' => ['404'],
'redirectmatch_regexp' => ['\.git$'],
'redirectmatch_dest' => ['http://www.example.com'],
'headers' => 'Set X-Robots-Tag "noindex, noarchive, nosnippet"',
'request_headers' => ['append MirrorID "mirror 12"'],
'rewrites' => [
{
'rewrite_rule' => ['^index\.html$ welcome.html'],
},
],
'filters' => [
'FilterDeclare COMPRESS',
'FilterProvider COMPRESS DEFLATE resp=Content-Type $text/html',
'FilterProvider COMPRESS DEFLATE resp=Content-Type $text/css',
'FilterProvider COMPRESS DEFLATE resp=Content-Type $text/plain',
'FilterProvider COMPRESS DEFLATE resp=Content-Type $text/xml',
'FilterChain COMPRESS',
'FilterProtocol COMPRESS DEFLATE change=yes;byteranges=no',
],
'rewrite_base' => '/',
'rewrite_rule' => '^index\.html$ welcome.html',
'rewrite_cond' => '%{HTTP_USER_AGENT} ^MSIE',
'rewrite_inherit' => true,
'setenv' => ['FOO=/bin/true'],
'setenvif' => 'Request_URI "\.gif$" object_is_image=gif',
'setenvifnocase' => 'REMOTE_ADDR ^127.0.0.1 localhost=true',
'block' => 'scm',
'wsgi_application_group' => '%{GLOBAL}',
'wsgi_daemon_process' => { 'foo' => { 'python-home' => '/usr' }, 'bar' => {} },
'wsgi_daemon_process_options' => {
'processes' => '2',
'threads' => '15',
'display-name' => '%{GROUP}',
},
'wsgi_import_script' => '/var/www/demo.wsgi',
'wsgi_import_script_options' => {
'process-group' => 'wsgi',
'application-group' => '%{GLOBAL}',
},
'wsgi_process_group' => 'wsgi',
'wsgi_script_aliases' => {
'/' => '/var/www/demo.wsgi',
},
'wsgi_script_aliases_match' => {
'^/test/(^[/*)' => '/var/www/demo.wsgi',
},
'wsgi_pass_authorization' => 'On',
'custom_fragment' => '#custom string',
'itk' => {
'user' => 'someuser',
'group' => 'somegroup',
},
'wsgi_chunked_request' => 'On',
'action' => 'foo',
'fastcgi_server' => 'localhost',
'fastcgi_socket' => '/tmp/fastcgi.socket',
'fastcgi_dir' => '/tmp',
'fastcgi_idle_timeout' => '120',
'additional_includes' => '/custom/path/includes',
'apache_version' => '2.4',
'use_optional_includes' => true,
'suexec_user_group' => 'root root',
'allow_encoded_slashes' => 'nodecode',
'use_canonical_name' => 'dns',
'h2_copy_files' => false,
'h2_direct' => true,
'h2_early_hints' => false,
'h2_max_session_streams' => 100,
'h2_modern_tls_only' => true,
'h2_push' => true,
'h2_push_diary_size' => 256,
'h2_push_priority' => [
'application/json 32',
],
'h2_push_resource' => [
'/css/main.css',
'/js/main.js',
],
'h2_serialize_headers' => false,
'h2_stream_max_mem_size' => 65_536,
'h2_tls_cool_down_secs' => 1,
'h2_tls_warm_up_size' => 1_048_576,
'h2_upgrade' => true,
'h2_window_size' => 65_535,
'passenger_enabled' => false,
'passenger_base_uri' => '/app',
'passenger_ruby' => '/usr/bin/ruby1.9.1',
'passenger_python' => '/usr/local/bin/python',
'passenger_nodejs' => '/usr/bin/node',
'passenger_meteor_app_settings' => '/path/to/some/file.json',
'passenger_app_env' => 'test',
'passenger_app_root' => '/usr/share/myapp',
'passenger_app_group_name' => 'app_customer',
'passenger_app_start_command' => 'start-my-app',
'passenger_app_type' => 'rack',
'passenger_startup_file' => 'bin/www',
'passenger_restart_dir' => 'tmp',
'passenger_spawn_method' => 'direct',
'passenger_load_shell_envvars' => false,
'passenger_rolling_restarts' => false,
'passenger_resist_deployment_errors' => true,
'passenger_user' => 'sandbox',
'passenger_group' => 'sandbox',
'passenger_friendly_error_pages' => false,
'passenger_min_instances' => 1,
'passenger_max_instances' => 30,
'passenger_max_preloader_idle_time' => 600,
'passenger_force_max_concurrent_requests_per_process' => 10,
'passenger_start_timeout' => 600,
'passenger_concurrency_model' => 'thread',
'passenger_thread_count' => 5,
'passenger_max_requests' => 1000,
'passenger_max_request_time' => 2,
'passenger_memory_limit' => 64,
'passenger_stat_throttle_rate' => 5,
'passenger_pre_start' => 'http://localhost/myapp',
'passenger_high_performance' => true,
'passenger_buffer_upload' => false,
'passenger_buffer_response' => false,
'passenger_error_override' => true,
'passenger_max_request_queue_size' => 10,
'passenger_max_request_queue_time' => 2,
'passenger_sticky_sessions' => true,
'passenger_sticky_sessions_cookie_name' => '_nom_nom_nom',
'passenger_sticky_sessions_cookie_attributes' => 'Nom=nom; Secure;',
'passenger_allow_encoded_slashes' => true,
'passenger_app_log_file' => '/app/log/file',
'passenger_debugger' => true,
'passenger_lve_min_uid' => 500,
'add_default_charset' => 'UTF-8',
'jk_mounts' => [
{ 'mount' => '/*', 'worker' => 'tcnode1' },
{ 'unmount' => '/*.jpg', 'worker' => 'tcnode1' },
],
'auth_kerb' => true,
'krb_method_negotiate' => 'off',
'krb_method_k5passwd' => 'off',
'krb_authoritative' => 'off',
'krb_auth_realms' => ['EXAMPLE.ORG', 'EXAMPLE.NET'],
'krb_5keytab' => '/tmp/keytab5',
'krb_local_user_mapping' => 'off',
'http_protocol_options' => 'Strict LenientMethods Allow0.9',
'keepalive' => 'on',
'keepalive_timeout' => '100',
'max_keepalive_requests' => '1000',
'protocols' => ['h2', 'http/1.1'],
'protocols_honor_order' => true,
'auth_oidc' => true,
'oidc_settings' => { 'ProviderMetadataURL' => 'https://login.example.com/.well-known/openid-configuration',
'ClientID' => 'test',
'RedirectURI' => 'https://login.example.com/redirect_uri',
'ProviderTokenEndpointAuth' => 'client_secret_basic',
'RemoteUserClaim' => 'sub',
'ClientSecret' => 'aae053a9-4abf-4824-8956-e94b2af335c8',
'CryptoPassphrase' => '4ad1bb46-9979-450e-ae58-c696967df3cd' },
'mdomain' => 'example.com example.net auto',
}
end
it { is_expected.to compile }
it { is_expected.not_to contain_file('/var/www/foo') }
it { is_expected.to contain_class('apache::mod::ssl') }
it {
is_expected.to contain_file('ssl.conf').with(
content: %r{^\s+SSLHonorCipherOrder On$},
)
}
it {
is_expected.to contain_file('ssl.conf').with(
content: %r{^\s+SSLPassPhraseDialog builtin$},
)
}
it {
is_expected.to contain_file('ssl.conf').with(
content: %r{^\s+SSLSessionCacheTimeout 300$},
)
}
it { is_expected.to contain_class('apache::mod::mime') }
it { is_expected.to contain_class('apache::mod::vhost_alias') }
it { is_expected.to contain_class('apache::mod::wsgi') }
it { is_expected.to contain_class('apache::mod::suexec') }
it { is_expected.to contain_class('apache::mod::passenger') }
it {
is_expected.to contain_file('/var/www/logs').with('ensure' => 'directory',
'mode' => '0600')
}
it { is_expected.to contain_class('apache::mod::rewrite') }
it { is_expected.to contain_class('apache::mod::alias') }
it { is_expected.to contain_class('apache::mod::proxy') }
it { is_expected.to contain_class('apache::mod::proxy_http') }
it { is_expected.to contain_class('apache::mod::fastcgi') }
it { is_expected.to contain_class('apache::mod::headers') }
it { is_expected.to contain_class('apache::mod::filter') }
it { is_expected.to contain_class('apache::mod::env') }
it { is_expected.to contain_class('apache::mod::setenvif') }
it {
is_expected.to contain_concat('30-rspec.example.com.conf').with('owner' => 'root',
'mode' => '0644',
'require' => 'Package[httpd]',
'notify' => 'Class[Apache::Service]')
}
if facts[:os]['release']['major'].to_i >= 18 && facts[:os]['name'] == 'Ubuntu'
it {
is_expected.to contain_file('30-rspec.example.com.conf symlink').with('ensure' => 'link',
'path' => "/etc/#{apache_name}/sites-enabled/30-rspec.example.com.conf")
}
end
it { is_expected.to contain_concat__fragment('rspec.example.com-apache-header') }
it {
is_expected.to contain_concat__fragment('rspec.example.com-apache-header').with(
content: %r{^\s+LimitRequestFieldSize 8190$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-apache-header').with(
content: %r{^\s+LimitRequestFields 100$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-apache-header').with(
content: %r{^\s+LimitRequestLine 8190$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-apache-header').with(
content: %r{^\s+LimitRequestBody 0$},
)
}
it { is_expected.to contain_concat__fragment('rspec.example.com-docroot') }
it { is_expected.to contain_concat__fragment('rspec.example.com-aliases') }
it { is_expected.to contain_concat__fragment('rspec.example.com-itk') }
it { is_expected.to contain_concat__fragment('rspec.example.com-fallbackresource') }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories') }
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Include\s'\/custom\/path\/includes'$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Include\s'\/custom\/path\/another_includes'$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+H2CopyFiles\sOn$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+H2PushResource\s/foo.css$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+H2PushResource\s/foo.js$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Require valid-user$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Require all denied$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Require all granted$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+<\/RequireAll>$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Require all-valid1$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Require all-valid2$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+<\/RequireNone>$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Require none-valid1$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Require none-valid2$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+<\/RequireAny>$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Require any-valid1$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Require any-valid2$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+LDAPReferrals off$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+ProxyPass http://backend-b/ retry=0 timeout=5 noquery interpolate$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Options\sIndexes\sFollowSymLinks\sMultiViews$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+IndexOptions\sFancyIndexing$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+IndexStyleSheet\s'\/styles\/style\.css'$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+DirectoryIndex\sdisabled$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+SetOutputFilter\soutput_filter$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+SetInputFilter\sinput_filter$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{\s+\s*Require valid-user\s*<\/Limit>}m,
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{\s+\s*Require valid-user\s*<\/LimitExcept>}m,
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Dav\sfilesystem$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+DavDepthInfinity\sOn$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+DavMinTimeout\s600$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerEnabled\sOn$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerBaseURI\s/app$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerRuby\s/path/to/ruby$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerPython\s/path/to/python$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerNodejs\s/path/to/nodejs$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerMeteorAppSettings\s/path/to/file\.json$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerAppEnv\sdemo$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerAppRoot\s/var/www/node-app$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerAppGroupName\sfoo_bar$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerAppType\snode$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerStartupFile\sstart\.js$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerRestartDir\stemp$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerLoadShellEnvvars\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerRollingRestarts\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerResistDeploymentErrors\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerUser\snodeuser$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerGroup\snodegroup$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerFriendlyErrorPages\sOn$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerMinInstances\s7$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerMaxInstances\s9$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerForceMaxConcurrentRequestsPerProcess\s12$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerStartTimeout\s10$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerConcurrencyModel\sthread$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerThreadCount\s20$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerMaxRequests\s2000$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerMaxRequestTime\s1$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerMemoryLimit\s32$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerHighPerformance\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerBufferUpload\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerBufferResponse\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerErrorOverride\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerMaxRequestQueueSize\s120$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerMaxRequestQueueTime\s5$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerStickySessions\sOn$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerStickySessionsCookieName\s_delicious_cookie$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerAllowEncodedSlashes\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+PassengerDebugger\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+GssapiCredStore\skeytab:/foo/bar.keytab$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+GssapiSSLonly\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+GssapiLocalName\sOn$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+SSLVerifyClient\soptional$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+SSLVerifyDepth\s10$},
)
}
it { is_expected.to contain_concat__fragment('rspec.example.com-additional_includes') }
it { is_expected.to contain_concat__fragment('rspec.example.com-logging') }
it {
is_expected.to contain_concat__fragment('rspec.example.com-logging')
.with_content(%r{^\s+ErrorLogFormat "\[%t\] \[%l\] %7F: %E: \[client\\ %a\] %M% ,\\ referer\\ %\{Referer\}i"$})
}
it { is_expected.to contain_concat__fragment('rspec.example.com-serversignature') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-access_log') }
it { is_expected.to contain_concat__fragment('rspec.example.com-action') }
it { is_expected.to contain_concat__fragment('rspec.example.com-block') }
it { is_expected.to contain_concat__fragment('rspec.example.com-error_document') }
it {
is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
%r{retry=0},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
%r{timeout=5},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
%r{SetEnv force-proxy-request-1.0 1},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
%r{SetEnv proxy-nokeepalive 1},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
%r{noquery interpolate},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
%r{ProxyPreserveHost On},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
%r{ProxyAddHeaders On},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
%r{ProxyPassReverseCookiePath\s+\/a\s+http:\/\/},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
%r{ProxyPassReverseCookieDomain\s+foo\s+http:\/\/foo},
)
}
it { is_expected.to contain_concat__fragment('rspec.example.com-redirect') }
it { is_expected.to contain_concat__fragment('rspec.example.com-rewrite') }
it {
is_expected.to contain_concat__fragment('rspec.example.com-rewrite').with(
content: %r{^\s+RewriteOptions Inherit$},
)
}
it { is_expected.to contain_concat__fragment('rspec.example.com-scriptalias') }
it { is_expected.to contain_concat__fragment('rspec.example.com-serveralias') }
it {
is_expected.to contain_concat__fragment('rspec.example.com-setenv').with_content(
%r{SetEnv FOO=/bin/true},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-setenv').with_content(
%r{SetEnvIf Request_URI "\\.gif\$" object_is_image=gif},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-setenv').with_content(
%r{SetEnvIfNoCase REMOTE_ADDR \^127.0.0.1 localhost=true},
)
}
it { is_expected.to contain_concat__fragment('rspec.example.com-ssl') }
it {
is_expected.to contain_concat__fragment('rspec.example.com-ssl').with(
content: %r{^\s+SSLOpenSSLConfCmd\s+DHParameters "foo.pem"$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-ssl').with(
content: %r{^\s+SSLUserName\s+SSL_CLIENT_S_DN_CN$},
)
}
it { is_expected.to contain_concat__fragment('rspec.example.com-sslproxy') }
it {
is_expected.to contain_concat__fragment('rspec.example.com-sslproxy').with(
content: %r{^\s+SSLProxyEngine On$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-sslproxy').with(
content: %r{^\s+SSLProxyCheckPeerCN\s+on$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-sslproxy').with(
content: %r{^\s+SSLProxyCheckPeerName\s+on$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-sslproxy').with(
content: %r{^\s+SSLProxyCheckPeerExpire\s+on$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-sslproxy').with(
content: %r{^\s+SSLProxyCipherSuite\s+HIGH$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-sslproxy').with(
content: %r{^\s+SSLProxyProtocol\s+TLSv1.2$},
)
}
it { is_expected.to contain_concat__fragment('rspec.example.com-suphp') }
it { is_expected.to contain_concat__fragment('rspec.example.com-php_admin') }
it { is_expected.to contain_concat__fragment('rspec.example.com-header') }
it {
is_expected.to contain_concat__fragment('rspec.example.com-filters').with(
content: %r{^\s+FilterDeclare COMPRESS$},
)
}
it { is_expected.to contain_concat__fragment('rspec.example.com-requestheader') }
it { is_expected.to contain_concat__fragment('rspec.example.com-wsgi') }
it { is_expected.to contain_concat__fragment('rspec.example.com-custom_fragment') }
it { is_expected.to contain_concat__fragment('rspec.example.com-fastcgi') }
it { is_expected.to contain_concat__fragment('rspec.example.com-suexec') }
it { is_expected.to contain_concat__fragment('rspec.example.com-allow_encoded_slashes') }
it { is_expected.to contain_concat__fragment('rspec.example.com-passenger') }
it { is_expected.to contain_concat__fragment('rspec.example.com-charsets') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-security') }
it { is_expected.to contain_concat__fragment('rspec.example.com-file_footer') }
it {
is_expected.to contain_concat__fragment('rspec.example.com-jk_mounts').with(
content: %r{^\s+JkMount\s+\/\*\s+tcnode1$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-jk_mounts').with(
content: %r{^\s+JkUnMount\s+\/\*\.jpg\s+tcnode1$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-auth_kerb').with(
content: %r{^\s+KrbMethodNegotiate\soff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-auth_kerb').with(
content: %r{^\s+KrbAuthoritative\soff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-auth_kerb').with(
content: %r{^\s+KrbAuthRealms\sEXAMPLE.ORG\sEXAMPLE.NET$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-auth_kerb').with(
content: %r{^\s+Krb5Keytab\s\/tmp\/keytab5$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-auth_kerb').with(
content: %r{^\s+KrbLocalUserMapping\soff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-auth_kerb').with(
content: %r{^\s+KrbServiceName\sHTTP$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-auth_kerb').with(
content: %r{^\s+KrbSaveCredentials\soff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-auth_kerb').with(
content: %r{^\s+KrbVerifyKDC\son$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-http_protocol_options').with(
content: %r{^\s*HttpProtocolOptions\s+Strict\s+LenientMethods\s+Allow0\.9$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-keepalive_options').with(
content: %r{^\s+KeepAlive\son$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-keepalive_options').with(
content: %r{^\s+KeepAliveTimeout\s100$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-keepalive_options').with(
content: %r{^\s+MaxKeepAliveRequests\s1000$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-apache-header').with(
content: %r{^\s+Protocols\sh2 http/1.1$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-apache-header').with(
content: %r{^\s+ProtocolsHonorOrder\sOn$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-http2').with(
content: %r{^\s+H2CopyFiles\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-http2').with(
content: %r{^\s+H2Direct\sOn$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-http2').with(
content: %r{^\s+H2EarlyHints\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-http2').with(
content: %r{^\s+H2MaxSessionStreams\s100$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-http2').with(
content: %r{^\s+H2ModernTLSOnly\sOn$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-http2').with(
content: %r{^\s+H2Push\sOn$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-http2').with(
content: %r{^\s+H2PushDiarySize\s256$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-http2').with(
content: %r{^\s+H2PushPriority\sapplication/json 32$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-http2').with(
content: %r{^\s+H2PushResource\s/css/main.css$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-http2').with(
content: %r{^\s+H2PushResource\s/js/main.js$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-http2').with(
content: %r{^\s+H2SerializeHeaders\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-http2').with(
content: %r{^\s+H2StreamMaxMemSize\s65536$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-http2').with(
content: %r{^\s+H2TLSCoolDownSecs\s1$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-http2').with(
content: %r{^\s+H2TLSWarmUpSize\s1048576$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-http2').with(
content: %r{^\s+H2Upgrade\sOn$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-http2').with(
content: %r{^\s+H2WindowSize\s65535$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerEnabled\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerBaseURI\s/app$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerRuby\s/usr/bin/ruby1\.9\.1$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerPython\s/usr/local/bin/python$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerNodejs\s/usr/bin/node$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerMeteorAppSettings\s/path/to/some/file.json$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerAppEnv\stest$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerAppRoot\s/usr/share/myapp$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerAppGroupName\sapp_customer$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerAppType\srack$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerStartupFile\sbin/www$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerRestartDir\stmp$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerSpawnMethod\sdirect$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerLoadShellEnvvars\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerRollingRestarts\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerResistDeploymentErrors\sOn$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerUser\ssandbox$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerGroup\ssandbox$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerFriendlyErrorPages\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerMinInstances\s1$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerMaxInstances\s30$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerMaxPreloaderIdleTime\s600$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerForceMaxConcurrentRequestsPerProcess\s10$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerStartTimeout\s600$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerConcurrencyModel\sthread$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerThreadCount\s5$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerMaxRequests\s1000$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerMaxRequestTime\s2$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerMemoryLimit\s64$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerStatThrottleRate\s5$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-file_footer').with(
content: %r{^PassengerPreStart\shttp://localhost/myapp$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerHighPerformance\sOn$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerBufferUpload\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerBufferResponse\sOff$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerErrorOverride\sOn$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerMaxRequestQueueSize\s10$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerMaxRequestQueueTime\s2$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerStickySessions\sOn$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerStickySessionsCookieName\s_nom_nom_nom$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerAllowEncodedSlashes\sOn$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerDebugger\sOn$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-passenger').with(
content: %r{^\s+PassengerLveMinUid\s500$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-auth_oidc').with(
content: %r{^\s+OIDCProviderMetadataURL\shttps:\/\/login.example.com\/\.well-known\/openid-configuration$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-auth_oidc').with(
content: %r{^\s+OIDCClientID\stest$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-auth_oidc').with(
content: %r{^\s+OIDCRedirectURI\shttps:\/\/login\.example.com\/redirect_uri$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-auth_oidc').with(
content: %r{^\s+OIDCProviderTokenEndpointAuth\sclient_secret_basic$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-auth_oidc').with(
content: %r{^\s+OIDCRemoteUserClaim\ssub$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-auth_oidc').with(
content: %r{^\s+OIDCClientSecret\saae053a9-4abf-4824-8956-e94b2af335c8$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-auth_oidc').with(
content: %r{^\s+OIDCCryptoPassphrase\s4ad1bb46-9979-450e-ae58-c696967df3cd$},
)
}
it { is_expected.to contain_class('apache::mod::md') }
it {
is_expected.to contain_concat__fragment('rspec.example.com-apache-header').with(
content: %r{^MDomain example\.com example\.net auto$},
)
}
end
context 'vhost with multiple ip addresses' do
let :params do
{
'port' => '80',
'ip' => ['127.0.0.1', '::1'],
'ip_based' => true,
'servername' => 'example.com',
'docroot' => '/var/www/html',
'add_listen' => true,
'ensure' => 'present',
}
end
it { is_expected.to compile }
it {
is_expected.to contain_concat__fragment('rspec.example.com-apache-header').with(
content: %r{[.\/m]*[.\/m]*$},
)
}
it { is_expected.to contain_concat__fragment('Listen 127.0.0.1:80') }
it { is_expected.to contain_concat__fragment('Listen [::1]:80') }
it { is_expected.not_to contain_concat__fragment('NameVirtualHost 127.0.0.1:80') }
it { is_expected.not_to contain_concat__fragment('NameVirtualHost [::1]:80') }
end
context 'vhost with multiple ports' do
let :params do
{
'port' => ['80', '8080'],
'ip' => '127.0.0.1',
'ip_based' => true,
'servername' => 'example.com',
'docroot' => '/var/www/html',
'add_listen' => true,
'ensure' => 'present',
}
end
it { is_expected.to compile }
it {
is_expected.to contain_concat__fragment('rspec.example.com-apache-header').with(
content: %r{[.\/m]*[.\/m]*$},
)
}
it { is_expected.to contain_concat__fragment('Listen 127.0.0.1:80') }
it { is_expected.to contain_concat__fragment('Listen 127.0.0.1:8080') }
it { is_expected.not_to contain_concat__fragment('NameVirtualHost 127.0.0.1:80') }
it { is_expected.not_to contain_concat__fragment('NameVirtualHost 127.0.0.1:8080') }
end
context 'vhost with multiple ip addresses, multiple ports' do
let :params do
{
'port' => ['80', '8080'],
'ip' => ['127.0.0.1', '::1'],
'ip_based' => true,
'servername' => 'example.com',
'docroot' => '/var/www/html',
'add_listen' => true,
'ensure' => 'present',
}
end
it { is_expected.to compile }
it {
is_expected.to contain_concat__fragment('rspec.example.com-apache-header').with(
content: %r{[.\/m]*[.\/m]*$},
)
}
it { is_expected.to contain_concat__fragment('Listen 127.0.0.1:80') }
it { is_expected.to contain_concat__fragment('Listen 127.0.0.1:8080') }
it { is_expected.to contain_concat__fragment('Listen [::1]:80') }
it { is_expected.to contain_concat__fragment('Listen [::1]:8080') }
it { is_expected.not_to contain_concat__fragment('NameVirtualHost 127.0.0.1:80') }
it { is_expected.not_to contain_concat__fragment('NameVirtualHost 127.0.0.1:8080') }
it { is_expected.not_to contain_concat__fragment('NameVirtualHost [::1]:80') }
it { is_expected.not_to contain_concat__fragment('NameVirtualHost [::1]:8080') }
end
context 'vhost with ipv6 address' do
let :params do
{
'port' => '80',
'ip' => '::1',
'ip_based' => true,
'servername' => 'example.com',
'docroot' => '/var/www/html',
'add_listen' => true,
'ensure' => 'present',
}
end
it { is_expected.to compile }
it {
is_expected.to contain_concat__fragment('rspec.example.com-apache-header').with(
content: %r{[.\/m]*[.\/m]*$},
)
}
it { is_expected.to contain_concat__fragment('Listen [::1]:80') }
it { is_expected.not_to contain_concat__fragment('NameVirtualHost [::1]:80') }
end
context 'vhost with wildcard ip address' do
let :params do
{
'port' => '80',
'ip' => '*',
'ip_based' => true,
'servername' => 'example.com',
'docroot' => '/var/www/html',
'add_listen' => true,
'ensure' => 'present',
}
end
it { is_expected.to compile }
it {
is_expected.to contain_concat__fragment('rspec.example.com-apache-header').with(
content: %r{[.\/m]*[.\/m]*$},
)
}
it { is_expected.to contain_concat__fragment('Listen *:80') }
it { is_expected.not_to contain_concat__fragment('NameVirtualHost *:80') }
end
context 'modsec_audit_log' do
let :params do
{
'docroot' => '/rspec/docroot',
'modsec_audit_log' => true,
}
end
it { is_expected.to compile }
it {
is_expected.to contain_concat__fragment('rspec.example.com-security').with(
content: %r{^\s*SecAuditLog "\/var\/log\/#{apache_name}\/rspec\.example\.com_security\.log"$},
)
}
end
context 'modsec_audit_log_file' do
let :params do
{
'docroot' => '/rspec/docroot',
'modsec_audit_log_file' => 'foo.log',
}
end
it { is_expected.to compile }
it {
is_expected.to contain_concat__fragment('rspec.example.com-security').with(
content: %r{\s*SecAuditLog "\/var\/log\/#{apache_name}\/foo.log"$},
)
}
end
context 'set only aliases' do
let :params do
{
'docroot' => '/rspec/docroot',
'aliases' => [
{
'alias' => '/alias',
'path' => '/rspec/docroot',
},
],
}
end
it { is_expected.to contain_class('apache::mod::alias') }
end
context 'proxy_pass_match' do
let :params do
{
'docroot' => '/rspec/docroot',
'proxy_pass_match' => [
{
'path' => '.*',
'url' => 'http://backend-a/',
'params' => { 'timeout' => 300 },
},
],
}
end
it {
is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(
%r{ProxyPassMatch .* http:\/\/backend-a\/ timeout=300},
).with_content(%r{## Proxy rules})
}
end
context 'proxy_dest_match' do
let :params do
{
'docroot' => '/rspec/docroot',
'proxy_dest_match' => '/',
}
end
it { is_expected.to contain_concat__fragment('rspec.example.com-proxy').with_content(%r{## Proxy rules}) }
end
context 'not everything can be set together...' do
let :params do
{
'access_log_pipe' => '/dev/null',
'error_log_pipe' => '/dev/null',
'docroot' => '/var/www/foo',
'ensure' => 'absent',
'manage_docroot' => true,
'logroot' => '/tmp/logroot',
'logroot_ensure' => 'absent',
'directories' => [
{
'path' => '/var/www/files',
'provider' => 'files',
'allow' => ['from 127.0.0.1', 'from 127.0.0.2'],
'deny' => ['from 127.0.0.3', 'from 127.0.0.4'],
'satisfy' => 'any',
},
{
'path' => '/var/www/foo',
'provider' => 'files',
'allow' => 'from 127.0.0.5',
'deny' => 'from all',
'order' => 'deny,allow',
},
],
}
end
it { is_expected.to compile }
it { is_expected.not_to contain_class('apache::mod::ssl') }
it { is_expected.not_to contain_class('apache::mod::mime') }
it { is_expected.not_to contain_class('apache::mod::vhost_alias') }
it { is_expected.not_to contain_class('apache::mod::wsgi') }
it { is_expected.not_to contain_class('apache::mod::passenger') }
it { is_expected.not_to contain_class('apache::mod::suexec') }
it { is_expected.not_to contain_class('apache::mod::rewrite') }
it { is_expected.not_to contain_class('apache::mod::alias') }
it { is_expected.not_to contain_class('apache::mod::proxy') }
it { is_expected.not_to contain_class('apache::mod::proxy_http') }
it { is_expected.not_to contain_class('apache::mod::headers') }
it { is_expected.to contain_file('/var/www/foo') }
it {
is_expected.to contain_file('/tmp/logroot').with('ensure' => 'absent')
}
it {
is_expected.to contain_concat('25-rspec.example.com.conf').with('ensure' => 'absent')
}
it { is_expected.to contain_concat__fragment('rspec.example.com-apache-header') }
it { is_expected.to contain_concat__fragment('rspec.example.com-docroot') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-aliases') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-itk') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-fallbackresource') }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories') }
# the following style is only present on Apache 2.2
# That is used in SLES 11, RHEL6, Amazon Linux
if (facts[:os]['family'] == 'RedHat' && facts[:os]['release']['major'].to_i < 7) ||
(facts[:os]['name'] == 'Amazon') ||
(facts[:os]['name'] == 'SLES' && facts[:os]['release']['major'].to_i < 12)
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Allow from 127\.0\.0\.1$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Allow from 127\.0\.0\.2$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Allow from 127\.0\.0\.5$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Deny from 127\.0\.0\.3$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Deny from 127\.0\.0\.4$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Deny from all$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Satisfy any$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Order deny,allow$},
)
}
end
it { is_expected.not_to contain_concat__fragment('rspec.example.com-additional_includes') }
it { is_expected.to contain_concat__fragment('rspec.example.com-logging') }
it { is_expected.to contain_concat__fragment('rspec.example.com-serversignature') }
it { is_expected.to contain_concat__fragment('rspec.example.com-access_log') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-action') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-block') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-error_document') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-proxy') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-redirect') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-rewrite') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-scriptalias') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-serveralias') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-setenv') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-ssl') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-sslproxy') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-suphp') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-php_admin') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-header') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-requestheader') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-wsgi') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-custom_fragment') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-fastcgi') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-suexec') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-charsets') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-limits') }
it { is_expected.to contain_concat__fragment('rspec.example.com-file_footer') }
end
context 'wsgi_application_group should set apache::mod::wsgi' do
let :params do
{
'docroot' => '/rspec/docroot',
'wsgi_application_group' => '%{GLOBAL}',
}
end
it { is_expected.to contain_class('apache::mod::wsgi') }
end
context 'wsgi_daemon_process should set apache::mod::wsgi' do
let :params do
{
'docroot' => '/rspec/docroot',
'wsgi_daemon_process' => { 'foo' => { 'python-home' => '/usr' }, 'bar' => {} },
}
end
it { is_expected.to contain_class('apache::mod::wsgi') }
end
context 'wsgi_import_script on its own should not set apache::mod::wsgi' do
let :params do
{
'docroot' => '/rspec/docroot',
'wsgi_import_script' => '/var/www/demo.wsgi',
}
end
it { is_expected.not_to contain_class('apache::mod::wsgi') }
end
context 'wsgi_import_script_options on its own should not set apache::mod::wsgi' do
let :params do
{
'docroot' => '/rspec/docroot',
'wsgi_import_script_options' => {
'process-group' => 'wsgi',
'application-group' => '%{GLOBAL}',
},
}
end
it { is_expected.not_to contain_class('apache::mod::wsgi') }
end
context 'wsgi_import_script and wsgi_import_script_options should set apache::mod::wsgi' do
let :params do
{
'docroot' => '/rspec/docroot',
'wsgi_import_script' => '/var/www/demo.wsgi',
'wsgi_import_script_options' => {
'process-group' => 'wsgi',
'application-group' => '%{GLOBAL}',
},
}
end
it { is_expected.to contain_class('apache::mod::wsgi') }
end
context 'wsgi_process_group should set apache::mod::wsgi' do
let :params do
{
'docroot' => '/rspec/docroot',
'wsgi_daemon_process' => 'wsgi',
}
end
it { is_expected.to contain_class('apache::mod::wsgi') }
end
context 'wsgi_script_aliases with non-empty aliases should set apache::mod::wsgi' do
let :params do
{
'docroot' => '/rspec/docroot',
'wsgi_script_aliases' => {
'/' => '/var/www/demo.wsgi',
},
}
end
it { is_expected.to contain_class('apache::mod::wsgi') }
end
context 'wsgi_script_aliases with empty aliases should set apache::mod::wsgi' do
let :params do
{
'docroot' => '/rspec/docroot',
'wsgi_script_aliases' => {},
}
end
it { is_expected.not_to contain_class('apache::mod::wsgi') }
end
context 'wsgi_pass_authorization should set apache::mod::wsgi' do
let :params do
{
'docroot' => '/rspec/docroot',
'wsgi_pass_authorization' => 'On',
}
end
it { is_expected.to contain_class('apache::mod::wsgi') }
end
context 'when not setting nor managing the docroot' do
let :params do
{
'docroot' => false,
'manage_docroot' => false,
}
end
it { is_expected.to compile }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-docroot') }
end
context 'ssl_proxyengine without ssl' do
let :params do
{
'docroot' => '/rspec/docroot',
'ssl' => false,
'ssl_proxyengine' => true,
}
end
it { is_expected.to compile }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-ssl') }
it { is_expected.to contain_concat__fragment('rspec.example.com-sslproxy') }
end
context 'ssl_proxy_protocol without ssl_proxyengine' do
let :params do
{
'docroot' => '/rspec/docroot',
'ssl' => true,
'ssl_proxyengine' => false,
'ssl_proxy_protocol' => 'TLSv1.2',
}
end
it { is_expected.to compile }
it { is_expected.to contain_concat__fragment('rspec.example.com-ssl') }
it { is_expected.not_to contain_concat__fragment('rspec.example.com-sslproxy') }
end
describe 'access logs' do
context 'single log file' do
let(:params) do
{
'docroot' => '/rspec/docroot',
'access_log_file' => 'my_log_file',
}
end
it {
is_expected.to contain_concat__fragment('rspec.example.com-access_log').with(
content: %r{^\s+CustomLog.*my_log_file" combined\s*$},
)
}
end
context 'single log file with environment' do
let(:params) do
{
'docroot' => '/rspec/docroot',
'access_log_file' => 'my_log_file',
'access_log_env_var' => 'prod',
}
end
it {
is_expected.to contain_concat__fragment('rspec.example.com-access_log').with(
content: %r{^\s+CustomLog.*my_log_file" combined\s+env=prod$},
)
}
end
context 'multiple log files' do
let(:params) do
{
'docroot' => '/rspec/docroot',
'access_logs' => [
{ 'file' => '/tmp/log1', 'env' => 'dev' },
{ 'file' => 'log2' },
{ 'syslog' => 'syslog', 'format' => '%h %l' },
],
}
end
it {
is_expected.to contain_concat__fragment('rspec.example.com-access_log').with(
content: %r{^\s+CustomLog "\/tmp\/log1"\s+combined\s+env=dev$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-access_log').with(
content: %r{^\s+CustomLog "\/var\/log\/#{apache_name}\/log2"\s+combined\s*$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-access_log').with(
content: %r{^\s+CustomLog "syslog" "%h %l"\s*$},
)
}
end
end # access logs
describe 'error logs format' do
context 'on Apache 2.2' do
let(:params) do
{
'docroot' => '/rspec/docroot',
'apache_version' => '2.2',
'error_log_format' => ['[%t] [%l] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i'],
}
end
it {
is_expected.to contain_concat__fragment('rspec.example.com-logging')
.without_content(%r{ErrorLogFormat})
}
end
context 'single log format directive as a string' do
let(:params) do
{
'docroot' => '/rspec/docroot',
'apache_version' => '2.4',
'error_log_format' => ['[%t] [%l] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i'],
}
end
it {
is_expected.to contain_concat__fragment('rspec.example.com-logging').with(
content: %r{^\s+ErrorLogFormat "\[%t\] \[%l\] %7F: %E: \[client\\ %a\] %M% ,\\ referer\\ %\{Referer\}i"$},
)
}
end
context 'multiple log format directives' do
let(:params) do
{
'docroot' => '/rspec/docroot',
'apache_version' => '2.4',
'error_log_format' => [
'[%{uc}t] [%-m:%-l] [R:%L] [C:%{C}L] %7F: %E: %M',
{ '[%{uc}t] [R:%L] Request %k on C:%{c}L pid:%P tid:%T' => 'request' },
{ "[%{uc}t] [R:%L] UA:'%+{User-Agent}i'" => 'request' },
{ "[%{uc}t] [R:%L] Referer:'%+{Referer}i'" => 'request' },
{ '[%{uc}t] [C:%{c}L] local\ %a remote\ %A' => 'connection' },
],
}
end
it {
is_expected.to contain_concat__fragment('rspec.example.com-logging').with(
content: %r{^\s+ErrorLogFormat "\[%\{uc\}t\] \[%-m:%-l\] \[R:%L\] \[C:%\{C\}L\] %7F: %E: %M"$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-logging').with(
content: %r{^\s+ErrorLogFormat request "\[%\{uc\}t\] \[R:%L\] Request %k on C:%\{c\}L pid:%P tid:%T"$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-logging').with(
content: %r{^\s+ErrorLogFormat request "\[%\{uc\}t\] \[R:%L\] UA:'%\+\{User-Agent\}i'"$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-logging').with(
content: %r{^\s+ErrorLogFormat request "\[%\{uc\}t\] \[R:%L\] Referer:'%\+\{Referer\}i'"$},
)
}
it {
is_expected.to contain_concat__fragment('rspec.example.com-logging').with(
content: %r{^\s+ErrorLogFormat connection "\[%\{uc\}t\] \[C:%\{c\}L\] local\\ %a remote\\ %A"$},
)
}
end
end # error logs format
describe 'validation' do
- context 'bad ensure' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'ensure' => 'bogus',
- }
- end
-
- it { is_expected.to raise_error(Puppet::Error) }
- end
- context 'bad suphp_engine' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'suphp_engine' => 'bogus',
- }
- end
-
- it { is_expected.to raise_error(Puppet::Error) }
- end
- context 'bad ip_based' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'ip_based' => 'bogus',
- }
- end
-
- it { is_expected.to raise_error(Puppet::Error) }
- end
- context 'bad access_log' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'access_log' => 'bogus',
- }
- end
-
- it { is_expected.to raise_error(Puppet::Error) }
- end
- context 'bad error_log' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'error_log' => 'bogus',
- }
- end
-
- it { is_expected.to raise_error(Puppet::Error) }
- end
- context 'bad_ssl' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'ssl' => 'bogus',
- }
- end
-
- it { is_expected.to raise_error(Puppet::Error) }
+ let(:params) do
+ {
+ 'docroot' => '/rspec/docroot',
+ }
end
- context 'bad default_vhost' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'default_vhost' => 'bogus',
- }
- end
- it { is_expected.to raise_error(Puppet::Error) }
- end
- context 'bad ssl_proxyengine' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'ssl_proxyengine' => 'bogus',
- }
+ [
+ 'ensure', 'suphp_engine', 'ip_based', 'access_log', 'error_log',
+ 'ssl', 'default_vhost', 'ssl_proxyengine', 'rewrites', 'suexec_user_group',
+ 'wsgi_script_alias', 'wsgi_daemon_process_options',
+ 'wsgi_import_script_alias', 'itk', 'logroot_ensure', 'log_level',
+ 'fallbackresource'
+ ].each do |parameter|
+ context "bad #{parameter}" do
+ let(:params) { super().merge(parameter => 'bogus') }
+
+ it { is_expected.to raise_error(Puppet::Error) }
end
-
- it { is_expected.to raise_error(Puppet::Error) }
end
- context 'bad rewrites' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'rewrites' => 'bogus',
- }
- end
- it { is_expected.to raise_error(Puppet::Error) }
- end
context 'bad rewrites 2' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'rewrites' => ['bogus'],
- }
- end
+ let(:params) { super().merge('rewrites' => ['bogus']) }
it { is_expected.to raise_error(Puppet::Error) }
end
context 'empty rewrites' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'rewrites' => [],
- }
- end
+ let(:params) { super().merge('rewrites' => []) }
it { is_expected.to compile }
end
- context 'bad suexec_user_group' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'suexec_user_group' => 'bogus',
- }
- end
-
- it { is_expected.to raise_error(Puppet::Error) }
- end
- context 'bad wsgi_script_alias' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'wsgi_script_alias' => 'bogus',
- }
- end
-
- it { is_expected.to raise_error(Puppet::Error) }
- end
- context 'bad wsgi_daemon_process_options' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'wsgi_daemon_process_options' => 'bogus',
- }
- end
-
- it { is_expected.to raise_error(Puppet::Error) }
- end
- context 'bad wsgi_import_script_alias' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'wsgi_import_script_alias' => 'bogus',
- }
- end
-
- it { is_expected.to raise_error(Puppet::Error) }
- end
- context 'bad itk' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'itk' => 'bogus',
- }
- end
-
- it { is_expected.to raise_error(Puppet::Error) }
- end
- context 'bad logroot_ensure' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'log_level' => 'bogus',
- }
- end
-
- it { is_expected.to raise_error(Puppet::Error) }
- end
- context 'bad log_level' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'log_level' => 'bogus',
- }
- end
-
- it { is_expected.to raise_error(Puppet::Error) }
- end
context 'bad error_log_format flag' do
let :params do
- {
- 'docroot' => '/rspec/docroot',
+ super().merge(
'error_log_format' => [
{ 'some format' => 'bogus' },
],
- }
+ )
end
it { is_expected.to raise_error(Puppet::Error) }
end
context 'access_log_file and access_log_pipe' do
let :params do
- {
- 'docroot' => '/rspec/docroot',
+ super().merge(
'access_log_file' => 'bogus',
'access_log_pipe' => 'bogus',
- }
+ )
end
it { is_expected.to raise_error(Puppet::Error) }
end
context 'error_log_file and error_log_pipe' do
let :params do
- {
- 'docroot' => '/rspec/docroot',
+ super().merge(
'error_log_file' => 'bogus',
'error_log_pipe' => 'bogus',
- }
- end
-
- it { is_expected.to raise_error(Puppet::Error) }
- end
- context 'bad fallbackresource' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'fallbackresource' => 'bogus',
- }
+ )
end
it { is_expected.to raise_error(Puppet::Error) }
end
context 'bad custom_fragment' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'custom_fragment' => true,
- }
- end
+ let(:params) { super().merge('custom_fragment' => true) }
it { is_expected.to raise_error(Puppet::Error) }
end
context 'bad access_logs' do
- let :params do
- {
- 'docroot' => '/rspec/docroot',
- 'access_logs' => '/var/log/somewhere',
- }
- end
+ let(:params) { super().merge('access_logs' => '/var/log/somewhere') }
it { is_expected.to raise_error(Puppet::Error) }
end
context 'default of require all granted' do
let :params do
{
'docroot' => '/var/www/foo',
'directories' => [
{
'path' => '/var/www/foo/files',
'provider' => 'files',
},
],
}
end
it { is_expected.to compile }
it { is_expected.to contain_concat('25-rspec.example.com.conf') }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories') }
# this works only with apache 2.4 and newer
if (facts[:os]['family'] == 'RedHat' && facts[:os]['release']['major'].to_i > 6) ||
(facts[:os]['name'] == 'SLES' && facts[:os]['release']['major'].to_i > 11)
it {
is_expected.to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Require all granted$},
)
}
end
end
context 'require unmanaged' do
let :params do
{
'docroot' => '/var/www/foo',
'directories' => [
{
'path' => '/var/www/foo',
'require' => 'unmanaged',
},
],
}
end
it { is_expected.to compile }
it { is_expected.to contain_concat('25-rspec.example.com.conf') }
it { is_expected.to contain_concat__fragment('rspec.example.com-directories') }
it {
is_expected.not_to contain_concat__fragment('rspec.example.com-directories').with(
content: %r{^\s+Require all granted$},
)
}
end
describe 'redirectmatch_*' do
- let :dparams do
- {
- docroot: '/rspec/docroot',
- port: '84',
- }
- end
+ let(:params) { super().merge(port: '84') }
context 'status' do
- let(:params) { dparams.merge(redirectmatch_status: '404') }
+ let(:params) { super().merge(redirectmatch_status: '404') }
it { is_expected.to contain_class('apache::mod::alias') }
end
context 'dest' do
- let(:params) { dparams.merge(redirectmatch_dest: 'http://other.example.com$1.jpg') }
+ let(:params) { super().merge(redirectmatch_dest: 'http://other.example.com$1.jpg') }
it { is_expected.to contain_class('apache::mod::alias') }
end
context 'regexp' do
- let(:params) { dparams.merge(redirectmatch_regexp: "(.*)\.gif$") }
+ let(:params) { super().merge(redirectmatch_regexp: "(.*)\.gif$") }
it { is_expected.to contain_class('apache::mod::alias') }
end
context 'none' do
- let(:params) { dparams }
-
it { is_expected.not_to contain_class('apache::mod::alias') }
end
end
end
context 'oidc_settings RedirectURL' do
describe 'with VALID relative URI' do
let :params do
default_params.merge(
'auth_oidc' => true,
'oidc_settings' => { 'ProviderMetadataURL' => 'https://login.example.com/.well-known/openid-configuration',
'ClientID' => 'test',
'RedirectURI' => '/some/valid/relative/uri',
'ProviderTokenEndpointAuth' => 'client_secret_basic',
'RemoteUserClaim' => 'sub',
'ClientSecret' => 'aae053a9-4abf-4824-8956-e94b2af335c8',
'CryptoPassphrase' => '4ad1bb46-9979-450e-ae58-c696967df3cd' },
)
end
it { is_expected.to compile }
it {
is_expected.to contain_concat__fragment('rspec.example.com-auth_oidc').with(
content: %r{^\s+OIDCRedirectURI\s/some/valid/relative/uri$},
)
}
end
describe 'with INVALID relative URI' do
let :params do
default_params.merge(
'auth_oidc' => true,
'oidc_settings' => { 'ProviderMetadataURL' => 'https://login.example.com/.well-known/openid-configuration',
'ClientID' => 'test',
'RedirectURI' => 'invalid_uri',
'ProviderTokenEndpointAuth' => 'client_secret_basic',
'RemoteUserClaim' => 'sub',
'ClientSecret' => 'aae053a9-4abf-4824-8956-e94b2af335c8',
'CryptoPassphrase' => '4ad1bb46-9979-450e-ae58-c696967df3cd' },
)
end
it { is_expected.not_to compile }
end
end
context 'mdomain' do
let :params do
default_params.merge(
'mdomain' => true,
)
end
it {
is_expected.to contain_concat__fragment('rspec.example.com-apache-header').with(
content: %r{^MDomain rspec.example.com$},
)
}
end
end
end
end
end
diff --git a/spec/spec_helper_local.rb b/spec/spec_helper_local.rb
index 0c6b56b9..b380956a 100644
--- a/spec/spec_helper_local.rb
+++ b/spec/spec_helper_local.rb
@@ -1,38 +1,175 @@
# frozen_string_literal: true
if ENV['COVERAGE'] == 'yes'
require 'simplecov'
require 'simplecov-console'
require 'codecov'
SimpleCov.formatters = [
SimpleCov::Formatter::HTMLFormatter,
SimpleCov::Formatter::Console,
SimpleCov::Formatter::Codecov,
]
SimpleCov.start do
track_files 'lib/**/*.rb'
add_filter '/spec'
# do not track vendored files
add_filter '/vendor'
add_filter '/.vendor'
# do not track gitignored files
# this adds about 4 seconds to the coverage check
# this could definitely be optimized
add_filter do |f|
# system returns true if exit status is 0, which with git-check-ignore means file is ignored
system("git check-ignore --quiet #{f.filename}")
end
end
end
shared_examples :compile, compile: true do
it { is_expected.to compile.with_all_deps }
end
shared_context 'a mod class, without including apache' do
let(:facts) { on_supported_os['debian-8-x86_64'] }
end
+
+shared_context 'Debian 8' do
+ let(:facts) { on_supported_os['debian-8-x86_64'] }
+end
+
+shared_context 'Ubuntu 18.04' do
+ let(:facts) { on_supported_os['ubuntu-18.04-x86_64'] }
+end
+
+shared_context 'RedHat 6' do
+ let(:facts) { on_supported_os['redhat-6-x86_64'] }
+end
+
+shared_context 'RedHat 7' do
+ let(:facts) { on_supported_os['redhat-7-x86_64'] }
+end
+
+shared_context 'RedHat 8' do
+ let(:facts) { on_supported_os['redhat-8-x86_64'] }
+end
+
+shared_context 'Fedora 17' do
+ let :facts do
+ {
+ id: 'root',
+ kernel: 'Linux',
+ osfamily: 'RedHat',
+ operatingsystem: 'Fedora',
+ operatingsystemrelease: '17',
+ path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
+ }
+ end
+end
+
+shared_context 'Fedora 21' do
+ let :facts do
+ {
+ id: 'root',
+ kernel: 'Linux',
+ osfamily: 'RedHat',
+ operatingsystem: 'Fedora',
+ operatingsystemrelease: '21',
+ path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
+ }
+ end
+end
+
+shared_context 'Fedora 28' do
+ let :facts do
+ {
+ id: 'root',
+ kernel: 'Linux',
+ osfamily: 'RedHat',
+ operatingsystem: 'Fedora',
+ operatingsystemrelease: '28',
+ path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
+ }
+ end
+end
+
+shared_context 'Fedora Rawhide' do
+ let :facts do
+ {
+ id: 'root',
+ kernel: 'Linux',
+ osfamily: 'RedHat',
+ operatingsystem: 'Fedora',
+ operatingsystemrelease: 'Rawhide',
+ path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
+ }
+ end
+end
+
+shared_context 'FreeBSD 9' do
+ let :facts do
+ {
+ osfamily: 'FreeBSD',
+ operatingsystemrelease: '9',
+ operatingsystem: 'FreeBSD',
+ id: 'root',
+ kernel: 'FreeBSD',
+ path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
+ }
+ end
+end
+
+shared_context 'FreeBSD 10' 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',
+ }
+ end
+end
+
+shared_context 'Gentoo' do
+ let :facts do
+ {
+ id: 'root',
+ kernel: 'Linux',
+ osfamily: 'Gentoo',
+ operatingsystem: 'Gentoo',
+ operatingsystemrelease: '3.16.1-gentoo',
+ path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
+ }
+ end
+end
+
+shared_context 'Darwin' do
+ let :facts do
+ {
+ osfamily: 'Darwin',
+ operatingsystemrelease: '13.1.0',
+ }
+ end
+end
+
+shared_context 'Unsupported OS' do
+ let :facts do
+ {
+ osfamily: 'Magic',
+ operatingsystemrelease: '0',
+ operatingsystem: 'Magic',
+ id: 'root',
+ kernel: 'Linux',
+ path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
+ }
+ end
+end
+
+shared_context 'SLES 12' do
+ let(:facts) { on_supported_os['sles-12-x86_64'] }
+end