Skip to content

(MAINT) Use shared examples for facts + other spec cleanups #2120

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Feb 15, 2021
Merged
125 changes: 21 additions & 104 deletions spec/classes/apache_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,7 @@

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 {
Expand All @@ -28,7 +17,7 @@
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',
)
}
Expand Down Expand Up @@ -57,7 +46,7 @@
).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",
Expand Down Expand Up @@ -243,33 +232,17 @@
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(
Expand All @@ -279,18 +252,8 @@
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 {
Expand Down Expand Up @@ -338,7 +301,7 @@
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",
Expand All @@ -365,7 +328,7 @@
}
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
Expand Down Expand Up @@ -667,46 +630,24 @@
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') }
Expand Down Expand Up @@ -764,17 +705,7 @@
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') }
Expand Down Expand Up @@ -805,17 +736,7 @@
}
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
Expand Down Expand Up @@ -900,11 +821,7 @@
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
Expand Down
87 changes: 9 additions & 78 deletions spec/classes/mod/alias_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,66 +7,25 @@

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\/"}) }
Expand All @@ -75,62 +34,34 @@
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\/"}) }
Expand Down
Loading