From b2887d66ca29b78c5b99fdb3b2ec96086b4381e0 Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Sat, 6 Feb 2021 23:02:52 +0100 Subject: [PATCH 01/13] Remove left over debug code --- spec/classes/mod/passenger_spec.rb | 3 --- 1 file changed, 3 deletions(-) diff --git a/spec/classes/mod/passenger_spec.rb b/spec/classes/mod/passenger_spec.rb index f2c7152aa9..fb56891124 100644 --- a/spec/classes/mod/passenger_spec.rb +++ b/spec/classes/mod/passenger_spec.rb @@ -223,9 +223,6 @@ 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', From 48d6abdf079bb1da018fbd5e0f3163d961435866 Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Sun, 7 Feb 2021 14:15:12 +0100 Subject: [PATCH 02/13] Rewrite mod_jk specs to use inheritance --- spec/classes/mod/jk_spec.rb | 228 ++++++++++++++---------------------- 1 file changed, 90 insertions(+), 138 deletions(-) diff --git a/spec/classes/mod/jk_spec.rb b/spec/classes/mod/jk_spec.rb index 84c09bc57e..839a1f0c61 100644 --- a/spec/classes/mod/jk_spec.rb +++ b/spec/classes/mod/jk_spec.rb @@ -63,36 +63,7 @@ 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 } - - mod_dir = '/etc/httpd/conf.d' - - 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 - - context 'Debian 8 with only required facts and default parameters' do + context 'Debian 8' do let(:facts) do { osfamily: 'Debian', @@ -101,50 +72,32 @@ ipaddress: default_ip, } end - let(:pre_condition) do - 'include apache' - end - let(:params) do - { - logroot: '/var/log/apache2', - } - end - let(:mod_dir) { mod_dir } - mod_dir = '/etc/apache2/mods-available' + 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 { is_expected.to contain_package('libapache2-mod-jk') } - it { - verify_contents(catalogue, 'jk.conf', ['', '']) - } - end + mod_dir = '/etc/apache2/mods-available' - context 'RHEL 6 with required facts and alternative IP' do - let(:facts) do - { - osfamily: 'RedHat', - operatingsystem: 'RedHat', - operatingsystemrelease: '6', - ipaddress: default_ip, + 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(: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 'RHEL 6 with required facts and alternative port' do + context 'RHEL 6' do let(:facts) do { osfamily: 'RedHat', @@ -158,89 +111,88 @@ end let(:params) do { - port: altern8_port, logroot: '/var/log/httpd', } end - it { is_expected.to contain_apache__listen("#{default_ip}:#{altern8_port}") } - end + context 'with required facts' do + let(:facts) { super().merge('ipaddress' => default_ip) } - 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 + context 'and default parameters' do + let(:mod_dir) { mod_dir } - it { is_expected.not_to contain_apache__listen("#{default_ip}:#{default_port}") } - end + mod_dir = '/etc/httpd/conf.d' - { - 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_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 - let(:pre_condition) do - 'include apache' + + context 'and alternative IP' do + let(:params) { super().merge(ip: altern8_ip) } + + it { is_expected.to contain_apache__listen("#{altern8_ip}:#{default_port}") } end - let(:params) do - { - logroot: '/var/log/httpd', - shm_file: paths[:shm_file], - log_file: paths[:log_file], - } + + context 'and alternative port' do + let(:params) { super().merge(port: altern8_port) } + + it { is_expected.to contain_apache__listen("#{default_ip}:#{altern8_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) } + context 'no binding' do + let(:params) { super().merge(add_listen: false) } + + it { is_expected.not_to contain_apache__listen("#{default_ip}:#{default_port}") } + end + + { + 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 From df4002b95c4aa275f3e912c3a33c16e1b4972765 Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Sun, 7 Feb 2021 14:55:15 +0100 Subject: [PATCH 03/13] Rewrite some defs as shared examples Shared examples have the benefit that they are a bit more native in rspec. --- spec/classes/mod/status_spec.rb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/spec/classes/mod/status_spec.rb b/spec/classes/mod/status_spec.rb index 5db47bb4c6..1764320db8 100644 --- a/spec/classes/mod/status_spec.rb +++ b/spec/classes/mod/status_spec.rb @@ -4,7 +4,7 @@ # 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"\ @@ -47,7 +47,7 @@ def require_directives(requires) 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"\ @@ -84,7 +84,7 @@ def status_conf_spec_require(requires, extended_status, status_path) it { is_expected.to contain_apache__mod('status') } - status_conf_spec(['127.0.0.1', '::1'], 'On', '/server-status') + include_examples 'status_conf_spec', ['127.0.0.1', '::1'], 'On', '/server-status' it { is_expected.to contain_file('status.conf').with(ensure: 'file', @@ -112,7 +112,7 @@ def status_conf_spec_require(requires, extended_status, status_path) it { is_expected.to contain_apache__mod('status') } - status_conf_spec(['127.0.0.1', '::1'], 'On', '/server-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 @@ -164,7 +164,7 @@ def status_conf_spec_require(requires, extended_status, status_path) it { is_expected.to contain_apache__mod('status') } - status_conf_spec_require(req_value, 'On', '/server-status') + include_examples 'status_conf_spec_require', req_value, 'On', '/server-status' it { is_expected.to contain_file('status.conf').with(ensure: 'file', @@ -198,7 +198,7 @@ def status_conf_spec_require(requires, extended_status, status_path) it { is_expected.to contain_apache__mod('status') } - status_conf_spec_require(req_value, 'On', '/server-status') + include_examples '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 @@ -224,7 +224,7 @@ def status_conf_spec_require(requires, extended_status, status_path) it { is_expected.to contain_apache__mod('status') } - status_conf_spec_require(req_value, 'On', '/server-status') + include_examples '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 @@ -253,7 +253,7 @@ def status_conf_spec_require(requires, extended_status, status_path) it { is_expected.to compile } - status_conf_spec(['10.10.10.10', '11.11.11.11'], 'Off', '/custom-status') + include_examples '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 From 2cb0580e3078e54ff75c7e50c52b5cd506ea26fe Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Sun, 7 Feb 2021 15:13:29 +0100 Subject: [PATCH 04/13] Restructure apache::mod::status spec tests This uses a lot more inheritance to reduce duplication. It also makes it easier to read the results due to the test hierarchy. --- spec/classes/mod/status_spec.rb | 341 ++++++++++++++------------------ 1 file changed, 144 insertions(+), 197 deletions(-) diff --git a/spec/classes/mod/status_spec.rb b/spec/classes/mod/status_spec.rb index 1764320db8..540db78a7a 100644 --- a/spec/classes/mod/status_spec.rb +++ b/spec/classes/mod/status_spec.rb @@ -68,7 +68,7 @@ def require_directives(requires) 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 + context 'on a Debian 6 OS' do let :facts do { osfamily: 'Debian', @@ -82,89 +82,10 @@ def require_directives(requires) } end - 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(ensure: 'file', - path: '/etc/apache2/mods-available/status.conf') - } - - it { - is_expected.to contain_file('status.conf symlink').with(ensure: 'link', - path: '/etc/apache2/mods-enabled/status.conf') - } - end - - context 'on a RedHat 6 OS with default params' do - let :facts do - { - osfamily: 'RedHat', - operatingsystemrelease: '6', - operatingsystem: 'RedHat', - id: 'root', - kernel: 'Linux', - path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', - is_pe: false, - } - end - - it { is_expected.to contain_apache__mod('status') } - - 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 - - valid_requires = { - undef: :undef, - empty: '', - unmanaged: 'unmanaged', - string: 'ip 127.0.0.1 192.168', - array: [ - 'ip 127.0.0.1', - 'ip ::1', - 'host localhost', - ], - hash: { - requires: [ - 'ip 10.1', - 'host somehost', - ], - }, - enforce: { - enforce: 'all', - requires: [ - 'ip 127.0.0.1', - 'host localhost', - ], - }, - } - valid_requires.each do |req_key, req_value| - context "on a Debian 8 OS with default params and #{req_key} requires" do - let :facts do - { - osfamily: 'Debian', - operatingsystemrelease: '8', - lsbdistcodename: 'squeeze', - operatingsystem: 'Debian', - id: 'root', - kernel: 'Linux', - path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', - is_pe: false, - } - end - - let :params do - { - requires: req_value, - } - end - + context 'with default params' do it { is_expected.to contain_apache__mod('status') } - include_examples 'status_conf_spec_require', req_value, 'On', '/server-status' + include_examples 'status_conf_spec', ['127.0.0.1', '::1'], 'On', '/server-status' it { is_expected.to contain_file('status.conf').with(ensure: 'file', @@ -177,172 +98,198 @@ def require_directives(requires) } end - context "on a RedHat 7 OS with default params and #{req_key} requires" do - let :facts do - { - osfamily: 'RedHat', - operatingsystemrelease: '7', - operatingsystem: 'RedHat', - id: 'root', - kernel: 'Linux', - path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', - is_pe: false, - } - end - + 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 { - requires: req_value, + allow_from: ['10.10.10.10', '11.11.11.11'], + extended_status: 'Off', + status_path: '/custom-status', } end - it { is_expected.to contain_apache__mod('status') } + it { is_expected.to compile } + + include_examples 'status_conf_spec', ['10.10.10.10', '11.11.11.11'], 'Off', '/custom-status' + end - include_examples 'status_conf_spec_require', req_value, 'On', '/server-status' + context "with valid parameter type $allow_from => ['10.10.10.10']" do + let :params do + { allow_from: ['10.10.10.10'] } + end - it { is_expected.to contain_file('status.conf').with_path('/etc/httpd/conf.modules.d/status.conf') } + it 'expects to succeed array validation' do + is_expected.to compile + end end - context "on a RedHat 8 OS with default params and #{req_key} requires" do + context "with invalid parameter type $allow_from => '10.10.10.10'" do let :facts do { - osfamily: 'RedHat', - operatingsystemrelease: '8', - operatingsystem: 'RedHat', + 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 - { - requires: req_value, - } + { allow_from: '10.10.10.10' } end - it { is_expected.to contain_apache__mod('status') } - - include_examples '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') } + it 'expects to fail array validation' do + is_expected.to compile.and_raise_error(%r{allow_from}) + end 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', - } + # 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 'expects to succeed regular expression validation' do + is_expected.to compile + end + end end - it { is_expected.to compile } + ['Yes', 'No'].each do |invalid_param| + context "with invalid value $extended_status => '#{invalid_param}'" do + let :params do + { extended_status: invalid_param } + end - include_examples 'status_conf_spec', ['10.10.10.10', '11.11.11.11'], 'Off', '/custom-status' + it 'expects to fail regular expression validation' do + is_expected.to compile.and_raise_error(%r{extended_status}) + end + end + end end - context "with valid parameter type $allow_from => ['10.10.10.10']" do + context 'on a RedHat 6 OS' do let :facts do { - osfamily: 'Debian', + osfamily: 'RedHat', operatingsystemrelease: '6', - lsbdistcodename: 'squeeze', - operatingsystem: 'Debian', + operatingsystem: 'RedHat', id: 'root', kernel: 'Linux', path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', is_pe: false, } end - let :params do - { allow_from: ['10.10.10.10'] } - end - it 'expects to succeed array validation' do - is_expected.to compile - end - end + context 'with default params' do + it { is_expected.to contain_apache__mod('status') } - 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 + include_examples '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}) + it { is_expected.to contain_file('status.conf').with_path('/etc/httpd/conf.d/status.conf') } 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 + 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 "with default params and #{req_key} requires" do + let :params 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, + requires: req_value, } end - let :params do - { extended_status: valid_param } - end - it 'expects to succeed regular expression validation' do - is_expected.to compile - end - end - end + context 'on a Debian 8 OS' 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 + + it { is_expected.to contain_apache__mod('status') } + + include_examples 'status_conf_spec_require', req_value, 'On', '/server-status' + + it { + is_expected.to contain_file('status.conf').with(ensure: 'file', + path: '/etc/apache2/mods-available/status.conf') + } - ['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, + it { + is_expected.to contain_file('status.conf symlink').with(ensure: 'link', + path: '/etc/apache2/mods-enabled/status.conf') } end - let :params do - { extended_status: invalid_param } + + context 'on a RedHat 7 OS' 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 + + it { is_expected.to contain_apache__mod('status') } + + include_examples '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 - it 'expects to fail regular expression validation' do - is_expected.to compile.and_raise_error(%r{extended_status}) + context 'on a RedHat 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 + + it { is_expected.to contain_apache__mod('status') } + + include_examples '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 end From d0863d449c49406595be0fce9d9cf125fc0402c2 Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Sat, 6 Feb 2021 21:15:19 +0100 Subject: [PATCH 05/13] Use shared examples for facts This extracts common sets of facts to shared examples to reduce duplication. It also makes it easier to actually provide correct OS facts and use modern facts. --- spec/classes/apache_spec.rb | 96 +------- spec/classes/mod/alias_spec.rb | 87 +------ spec/classes/mod/auth_cas_spec.rb | 37 +-- spec/classes/mod/auth_gssapi_spec.rb | 49 +--- spec/classes/mod/auth_kerb_spec.rb | 61 +---- spec/classes/mod/auth_mellon_spec.rb | 27 +- spec/classes/mod/auth_openidc_spec.rb | 49 +--- spec/classes/mod/authn_dbd_spec.rb | 25 +- spec/classes/mod/authnz_ldap_spec.rb | 13 +- spec/classes/mod/authnz_pam_spec.rb | 25 +- spec/classes/mod/cluster_spec.rb | 36 +-- spec/classes/mod/data_spec.rb | 12 +- spec/classes/mod/dav_svn_spec.rb | 52 +--- spec/classes/mod/deflate_spec.rb | 49 +--- spec/classes/mod/dev_spec.rb | 21 +- spec/classes/mod/dir_spec.rb | 49 +--- spec/classes/mod/disk_cache_spec.rb | 37 +-- spec/classes/mod/dumpio_spec.rb | 15 +- spec/classes/mod/event_spec.rb | 49 +--- spec/classes/mod/expires_spec.rb | 39 +-- spec/classes/mod/ext_filter_spec.rb | 27 +- spec/classes/mod/fcgid_spec.rb | 65 +---- spec/classes/mod/http2_spec.rb | 13 +- spec/classes/mod/info_spec.rb | 49 +--- .../classes/mod/intercept_form_submit_spec.rb | 25 +- spec/classes/mod/itk_spec.rb | 39 +-- spec/classes/mod/jk_spec.rb | 18 +- spec/classes/mod/ldap_spec.rb | 25 +- spec/classes/mod/lookup_identity.rb | 25 +- spec/classes/mod/mime_magic_spec.rb | 38 +-- spec/classes/mod/mime_spec.rb | 25 +- spec/classes/mod/negotiation_spec.rb | 13 +- spec/classes/mod/pagespeed_spec.rb | 25 +- spec/classes/mod/perl_spec.rb | 49 +--- spec/classes/mod/peruser_spec.rb | 24 +- spec/classes/mod/prefork_spec.rb | 49 +--- spec/classes/mod/proxy_balancer_spec.rb | 38 +-- spec/classes/mod/proxy_connect_spec.rb | 26 +- spec/classes/mod/proxy_html_spec.rb | 56 +---- spec/classes/mod/python_spec.rb | 49 +--- spec/classes/mod/remoteip_spec.rb | 12 +- spec/classes/mod/reqtimeout_spec.rb | 49 +--- spec/classes/mod/rpaf_spec.rb | 37 +-- spec/classes/mod/shib_spec.rb | 27 +- spec/classes/mod/speling_spec.rb | 25 +- spec/classes/mod/ssl_spec.rb | 121 +-------- spec/classes/mod/status_spec.rb | 73 +----- spec/classes/mod/userdir_spec.rb | 15 +- spec/classes/mod/worker_spec.rb | 61 +---- spec/classes/mod/wsgi_spec.rb | 65 +---- spec/classes/params_spec.rb | 13 +- spec/classes/service_spec.rb | 51 +--- spec/classes/vhosts_spec.rb | 12 +- spec/defines/balancer_spec.rb | 14 +- spec/defines/balancermember_spec.rb | 14 +- spec/defines/custom_config_spec.rb | 14 +- spec/defines/mod_spec.rb | 49 +--- spec/defines/vhost_custom_spec.rb | 53 +--- spec/spec_helper_local.rb | 231 ++++++++++++++++++ 59 files changed, 426 insertions(+), 2016 deletions(-) diff --git a/spec/classes/apache_spec.rb b/spec/classes/apache_spec.rb index f6a14c9747..3fb67b3bdf 100644 --- a/spec/classes/apache_spec.rb +++ b/spec/classes/apache_spec.rb @@ -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 6' it { is_expected.to contain_class('apache::params') } it { @@ -244,10 +233,7 @@ end context '8' do - let :facts do - super().merge(lsbdistcodename: 'jessie', - operatingsystemrelease: '8.0.0') - end + include_examples 'Debian 8' it { is_expected.to contain_file('/var/www/html').with( @@ -265,11 +251,7 @@ end context 'on Ubuntu 14.04' do - let :facts do - super().merge(operatingsystem: 'Ubuntu', - lsbdistrelease: '14.04', - operatingsystemrelease: '14.04') - end + include_examples 'Ubuntu 14.04' it { is_expected.to contain_file('/var/www/html').with( @@ -280,17 +262,7 @@ 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 + include_examples 'RedHat 5' it { is_expected.to contain_class('apache::params') } it { @@ -667,46 +639,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') } @@ -764,17 +714,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') } @@ -805,17 +745,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 @@ -900,11 +830,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 diff --git a/spec/classes/mod/alias_spec.rb b/spec/classes/mod/alias_spec.rb index 4974211ce0..9d27c80658 100644 --- a/spec/classes/mod/alias_spec.rb +++ b/spec/classes/mod/alias_spec.rb @@ -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\/"}) } @@ -75,23 +34,14 @@ 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 @@ -99,38 +49,19 @@ 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\/"}) } diff --git a/spec/classes/mod/auth_cas_spec.rb b/spec/classes/mod/auth_cas_spec.rb index f9686b221a..d8328d8598 100644 --- a/spec/classes/mod/auth_cas_spec.rb +++ b/spec/classes/mod/auth_cas_spec.rb @@ -24,18 +24,7 @@ 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') } @@ -44,17 +33,7 @@ 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') } @@ -68,17 +47,7 @@ "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') } diff --git a/spec/classes/mod/auth_gssapi_spec.rb b/spec/classes/mod/auth_gssapi_spec.rb index fbb0763a50..071ed76831 100644 --- a/spec/classes/mod/auth_gssapi_spec.rb +++ b/spec/classes/mod/auth_gssapi_spec.rb @@ -7,69 +7,28 @@ 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 6' 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') } diff --git a/spec/classes/mod/auth_kerb_spec.rb b/spec/classes/mod/auth_kerb_spec.rb index a4a09dc11d..ea2fe8fe1e 100644 --- a/spec/classes/mod/auth_kerb_spec.rb +++ b/spec/classes/mod/auth_kerb_spec.rb @@ -7,69 +7,28 @@ 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 6' 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') } @@ -78,17 +37,7 @@ 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 diff --git a/spec/classes/mod/auth_mellon_spec.rb b/spec/classes/mod/auth_mellon_spec.rb index 1a915a08ed..c7358a45ed 100644 --- a/spec/classes/mod/auth_mellon_spec.rb +++ b/spec/classes/mod/auth_mellon_spec.rb @@ -6,19 +6,7 @@ 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') } @@ -47,18 +35,7 @@ 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') } diff --git a/spec/classes/mod/auth_openidc_spec.rb b/spec/classes/mod/auth_openidc_spec.rb index a0309da8d1..c8c90acad6 100644 --- a/spec/classes/mod/auth_openidc_spec.rb +++ b/spec/classes/mod/auth_openidc_spec.rb @@ -7,52 +7,21 @@ 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') } @@ -61,17 +30,7 @@ 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 diff --git a/spec/classes/mod/authn_dbd_spec.rb b/spec/classes/mod/authn_dbd_spec.rb index 0f78816f96..afd3901747 100644 --- a/spec/classes/mod/authn_dbd_spec.rb +++ b/spec/classes/mod/authn_dbd_spec.rb @@ -23,18 +23,7 @@ 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') } @@ -43,17 +32,7 @@ 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') } diff --git a/spec/classes/mod/authnz_ldap_spec.rb b/spec/classes/mod/authnz_ldap_spec.rb index e6ecc50f03..dbd76c0e39 100644 --- a/spec/classes/mod/authnz_ldap_spec.rb +++ b/spec/classes/mod/authnz_ldap_spec.rb @@ -6,18 +6,7 @@ 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') } diff --git a/spec/classes/mod/authnz_pam_spec.rb b/spec/classes/mod/authnz_pam_spec.rb index 92bc157bd3..4361fb649f 100644 --- a/spec/classes/mod/authnz_pam_spec.rb +++ b/spec/classes/mod/authnz_pam_spec.rb @@ -7,18 +7,7 @@ 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') } @@ -26,17 +15,7 @@ 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') } diff --git a/spec/classes/mod/cluster_spec.rb b/spec/classes/mod/cluster_spec.rb index 998ab1d799..bf2ac85bf0 100644 --- a/spec/classes/mod/cluster_spec.rb +++ b/spec/classes/mod/cluster_spec.rb @@ -4,17 +4,7 @@ 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 { @@ -37,17 +27,7 @@ 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 { @@ -70,17 +50,7 @@ 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 { diff --git a/spec/classes/mod/data_spec.rb b/spec/classes/mod/data_spec.rb index 4511996f4f..f849167507 100644 --- a/spec/classes/mod/data_spec.rb +++ b/spec/classes/mod/data_spec.rb @@ -4,17 +4,7 @@ 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 diff --git a/spec/classes/mod/dav_svn_spec.rb b/spec/classes/mod/dav_svn_spec.rb index 1d773b3b9c..68d6beded5 100644 --- a/spec/classes/mod/dav_svn_spec.rb +++ b/spec/classes/mod/dav_svn_spec.rb @@ -7,19 +7,7 @@ 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') } @@ -40,18 +28,7 @@ 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') } @@ -72,18 +49,7 @@ 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') } @@ -105,17 +71,7 @@ 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') } diff --git a/spec/classes/mod/deflate_spec.rb b/spec/classes/mod/deflate_spec.rb index 1770cd6cc3..5c71e7a5e3 100644 --- a/spec/classes/mod/deflate_spec.rb +++ b/spec/classes/mod/deflate_spec.rb @@ -37,18 +37,7 @@ def general_deflate_specs 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 @@ -64,17 +53,7 @@ def general_deflate_specs 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 @@ -83,17 +62,7 @@ def general_deflate_specs 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 @@ -105,17 +74,7 @@ def general_deflate_specs 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 diff --git a/spec/classes/mod/dev_spec.rb b/spec/classes/mod/dev_spec.rb index 9294597cf4..7a1200e08f 100644 --- a/spec/classes/mod/dev_spec.rb +++ b/spec/classes/mod/dev_spec.rb @@ -11,24 +11,9 @@ 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 diff --git a/spec/classes/mod/dir_spec.rb b/spec/classes/mod/dir_spec.rb index 93d2246f57..9f1e533c4b 100644 --- a/spec/classes/mod/dir_spec.rb +++ b/spec/classes/mod/dir_spec.rb @@ -6,18 +6,7 @@ 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 + include_examples 'Debian 8' context 'passing no parameters' do it { is_expected.to contain_class('apache::params') } @@ -40,17 +29,7 @@ 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 + include_examples 'RedHat 6' context 'passing no parameters' do it { is_expected.to contain_class('apache::params') } @@ -73,17 +52,7 @@ 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 + include_examples 'FreeBSD 9' context 'passing no parameters' do it { is_expected.to contain_class('apache::params') } @@ -106,17 +75,7 @@ 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 + include_examples 'Gentoo' context 'passing no parameters' do it { is_expected.to contain_class('apache::params') } diff --git a/spec/classes/mod/disk_cache_spec.rb b/spec/classes/mod/disk_cache_spec.rb index 31ee6cd5d4..7ab6d48680 100644 --- a/spec/classes/mod/disk_cache_spec.rb +++ b/spec/classes/mod/disk_cache_spec.rb @@ -4,18 +4,7 @@ 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 { @@ -61,17 +50,7 @@ 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 { @@ -111,17 +90,7 @@ 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 { diff --git a/spec/classes/mod/dumpio_spec.rb b/spec/classes/mod/dumpio_spec.rb index 4af592abe2..529e2aa083 100644 --- a/spec/classes/mod/dumpio_spec.rb +++ b/spec/classes/mod/dumpio_spec.rb @@ -10,19 +10,8 @@ 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 } diff --git a/spec/classes/mod/event_spec.rb b/spec/classes/mod/event_spec.rb index da70fd440c..70073efc26 100644 --- a/spec/classes/mod/event_spec.rb +++ b/spec/classes/mod/event_spec.rb @@ -8,52 +8,21 @@ 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') } @@ -178,17 +147,7 @@ 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 diff --git a/spec/classes/mod/expires_spec.rb b/spec/classes/mod/expires_spec.rb index c01ca25768..003a325514 100644 --- a/spec/classes/mod/expires_spec.rb +++ b/spec/classes/mod/expires_spec.rb @@ -6,18 +6,7 @@ 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}) } @@ -26,23 +15,14 @@ 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( @@ -55,17 +35,6 @@ 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' => [ @@ -75,6 +44,8 @@ } end + include_examples 'RedHat 7' + it { is_expected.to contain_apache__mod('expires') } it { is_expected.to contain_file('expires.conf').with_content( diff --git a/spec/classes/mod/ext_filter_spec.rb b/spec/classes/mod/ext_filter_spec.rb index 1d7d4c6dde..04d91bd840 100644 --- a/spec/classes/mod/ext_filter_spec.rb +++ b/spec/classes/mod/ext_filter_spec.rb @@ -5,19 +5,7 @@ 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') } @@ -34,18 +22,7 @@ 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') } diff --git a/spec/classes/mod/fcgid_spec.rb b/spec/classes/mod/fcgid_spec.rb index 08205ec45d..680bf787af 100644 --- a/spec/classes/mod/fcgid_spec.rb +++ b/spec/classes/mod/fcgid_spec.rb @@ -6,19 +6,7 @@ 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 { @@ -28,18 +16,7 @@ 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') } @@ -77,18 +54,7 @@ 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') } @@ -100,18 +66,7 @@ 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 { @@ -121,17 +76,7 @@ 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 { diff --git a/spec/classes/mod/http2_spec.rb b/spec/classes/mod/http2_spec.rb index 978eb63f0f..af3ff161c8 100644 --- a/spec/classes/mod/http2_spec.rb +++ b/spec/classes/mod/http2_spec.rb @@ -6,18 +6,7 @@ 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 diff --git a/spec/classes/mod/info_spec.rb b/spec/classes/mod/info_spec.rb index 5dc70f7139..316863a98f 100644 --- a/spec/classes/mod/info_spec.rb +++ b/spec/classes/mod/info_spec.rb @@ -124,18 +124,7 @@ def general_info_specs_apache24 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 6' # Load the more generic tests for this context general_info_specs_apache22 @@ -151,17 +140,7 @@ def general_info_specs_apache24 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 @@ -173,17 +152,7 @@ def general_info_specs_apache24 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 @@ -195,17 +164,7 @@ def general_info_specs_apache24 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 diff --git a/spec/classes/mod/intercept_form_submit_spec.rb b/spec/classes/mod/intercept_form_submit_spec.rb index 45045cbd09..7d2d557171 100644 --- a/spec/classes/mod/intercept_form_submit_spec.rb +++ b/spec/classes/mod/intercept_form_submit_spec.rb @@ -7,18 +7,7 @@ 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') } @@ -26,17 +15,7 @@ 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') } diff --git a/spec/classes/mod/itk_spec.rb b/spec/classes/mod/itk_spec.rb index 0e7956e5b1..4812840cd6 100644 --- a/spec/classes/mod/itk_spec.rb +++ b/spec/classes/mod/itk_spec.rb @@ -8,18 +8,7 @@ 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') } @@ -81,17 +70,7 @@ 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') } @@ -156,18 +135,8 @@ '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') } diff --git a/spec/classes/mod/jk_spec.rb b/spec/classes/mod/jk_spec.rb index 839a1f0c61..b6093ab18c 100644 --- a/spec/classes/mod/jk_spec.rb +++ b/spec/classes/mod/jk_spec.rb @@ -64,14 +64,7 @@ altern8_port = 8008 context 'Debian 8' do - let(:facts) do - { - osfamily: 'Debian', - operatingsystem: 'Debian', - operatingsystemrelease: '8', - ipaddress: default_ip, - } - end + include_examples 'Debian 8' context 'with only required facts and default parameters' do let(:facts) { super().merge('ipaddress' => default_ip) } @@ -98,14 +91,7 @@ end context 'RHEL 6' do - let(:facts) do - { - osfamily: 'RedHat', - operatingsystem: 'RedHat', - operatingsystemrelease: '6', - ipaddress: default_ip, - } - end + include_examples 'RedHat 6' let(:pre_condition) do 'include apache' end diff --git a/spec/classes/mod/ldap_spec.rb b/spec/classes/mod/ldap_spec.rb index e95a33cfbc..fd14caceca 100644 --- a/spec/classes/mod/ldap_spec.rb +++ b/spec/classes/mod/ldap_spec.rb @@ -6,18 +6,7 @@ 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') } @@ -66,17 +55,7 @@ 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') } diff --git a/spec/classes/mod/lookup_identity.rb b/spec/classes/mod/lookup_identity.rb index 33c8017e3e..4557f99012 100644 --- a/spec/classes/mod/lookup_identity.rb +++ b/spec/classes/mod/lookup_identity.rb @@ -7,18 +7,7 @@ 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') } @@ -26,17 +15,7 @@ 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') } diff --git a/spec/classes/mod/mime_magic_spec.rb b/spec/classes/mod/mime_magic_spec.rb index 28fcfe03cb..bba4cf4e81 100644 --- a/spec/classes/mod/mime_magic_spec.rb +++ b/spec/classes/mod/mime_magic_spec.rb @@ -11,18 +11,7 @@ def general_mime_magic_specs 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 6' general_mime_magic_specs @@ -55,17 +44,7 @@ def general_mime_magic_specs 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 @@ -79,18 +58,7 @@ def general_mime_magic_specs 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 6' let :params do { magic_file: '/tmp/magic' } diff --git a/spec/classes/mod/mime_spec.rb b/spec/classes/mod/mime_spec.rb index a2b5382439..b7b4525fce 100644 --- a/spec/classes/mod/mime_spec.rb +++ b/spec/classes/mod/mime_spec.rb @@ -18,18 +18,7 @@ def general_mime_specs 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 @@ -37,17 +26,7 @@ def general_mime_specs 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 diff --git a/spec/classes/mod/negotiation_spec.rb b/spec/classes/mod/negotiation_spec.rb index 63c24acd86..8f27052610 100644 --- a/spec/classes/mod/negotiation_spec.rb +++ b/spec/classes/mod/negotiation_spec.rb @@ -5,18 +5,7 @@ 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') } diff --git a/spec/classes/mod/pagespeed_spec.rb b/spec/classes/mod/pagespeed_spec.rb index a6c2629087..38e9809ef1 100644 --- a/spec/classes/mod/pagespeed_spec.rb +++ b/spec/classes/mod/pagespeed_spec.rb @@ -4,18 +4,7 @@ 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') } @@ -39,17 +28,7 @@ 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') } diff --git a/spec/classes/mod/perl_spec.rb b/spec/classes/mod/perl_spec.rb index ddd004b687..d2f3d961d5 100644 --- a/spec/classes/mod/perl_spec.rb +++ b/spec/classes/mod/perl_spec.rb @@ -5,69 +5,28 @@ 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') } diff --git a/spec/classes/mod/peruser_spec.rb b/spec/classes/mod/peruser_spec.rb index 2533a28bab..d514238044 100644 --- a/spec/classes/mod/peruser_spec.rb +++ b/spec/classes/mod/peruser_spec.rb @@ -8,32 +8,12 @@ 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') } diff --git a/spec/classes/mod/prefork_spec.rb b/spec/classes/mod/prefork_spec.rb index fdc8762a9c..83e27ed040 100644 --- a/spec/classes/mod/prefork_spec.rb +++ b/spec/classes/mod/prefork_spec.rb @@ -8,18 +8,7 @@ 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') } @@ -54,17 +43,7 @@ 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') } @@ -104,34 +83,14 @@ 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') } diff --git a/spec/classes/mod/proxy_balancer_spec.rb b/spec/classes/mod/proxy_balancer_spec.rb index e4b1a72ce8..487394626a 100644 --- a/spec/classes/mod/proxy_balancer_spec.rb +++ b/spec/classes/mod/proxy_balancer_spec.rb @@ -24,18 +24,7 @@ def balancer_manager_conf_spec(allow_from, manager_path) 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') } @@ -44,17 +33,7 @@ def balancer_manager_conf_spec(allow_from, manager_path) 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') } @@ -63,18 +42,7 @@ def balancer_manager_conf_spec(allow_from, manager_path) 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, diff --git a/spec/classes/mod/proxy_connect_spec.rb b/spec/classes/mod/proxy_connect_spec.rb index b9fc082ea2..575f17d15c 100644 --- a/spec/classes/mod/proxy_connect_spec.rb +++ b/spec/classes/mod/proxy_connect_spec.rb @@ -11,22 +11,8 @@ it_behaves_like 'a mod class, without including apache' context 'on a Debian OS' do - let :facts 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, - } - end - context 'with Apache version < 2.2' do - let :facts do - super().merge(operatingsystemrelease: '7.0', - lsbdistcodename: 'wheezy') - end + include_examples 'Debian 7' let :params do { apache_version: '2.1', @@ -36,10 +22,7 @@ it { is_expected.not_to contain_apache__mod('proxy_connect') } end context 'with Apache version = 2.2' do - let :facts do - super().merge(operatingsystemrelease: '7.0', - lsbdistcodename: 'wheezy') - end + include_examples 'Debian 7' let :params do { apache_version: '2.2', @@ -49,10 +32,7 @@ it { is_expected.to contain_apache__mod('proxy_connect') } end context 'with Apache version >= 2.4' do - let :facts do - super().merge(operatingsystemrelease: '8.0', - lsbdistcodename: 'jessie') - end + include_examples 'Debian 8' let :params do { apache_version: '2.4', diff --git a/spec/classes/mod/proxy_html_spec.rb b/spec/classes/mod/proxy_html_spec.rb index c305aa31d2..a019416337 100644 --- a/spec/classes/mod/proxy_html_spec.rb +++ b/spec/classes/mod/proxy_html_spec.rb @@ -17,24 +17,11 @@ 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 @@ -43,8 +30,7 @@ end context 'on jessie x64' do let(:facts) do - super().merge(operatingsystemrelease: '8', - hardwaremodel: 'x86_64', + super().merge(hardwaremodel: 'x86_64', architecture: 'amd64') end @@ -54,17 +40,7 @@ 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) } @@ -72,17 +48,7 @@ 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) } @@ -90,17 +56,7 @@ 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) } diff --git a/spec/classes/mod/python_spec.rb b/spec/classes/mod/python_spec.rb index a433deb062..aa08c5dbc5 100644 --- a/spec/classes/mod/python_spec.rb +++ b/spec/classes/mod/python_spec.rb @@ -6,35 +6,14 @@ 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') } @@ -50,34 +29,14 @@ 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') } diff --git a/spec/classes/mod/remoteip_spec.rb b/spec/classes/mod/remoteip_spec.rb index 3de472cbc9..f83c0f2f5a 100644 --- a/spec/classes/mod/remoteip_spec.rb +++ b/spec/classes/mod/remoteip_spec.rb @@ -4,17 +4,7 @@ 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 diff --git a/spec/classes/mod/reqtimeout_spec.rb b/spec/classes/mod/reqtimeout_spec.rb index 6dca3cb2d0..7d72ea706b 100644 --- a/spec/classes/mod/reqtimeout_spec.rb +++ b/spec/classes/mod/reqtimeout_spec.rb @@ -5,18 +5,7 @@ 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') } @@ -43,17 +32,7 @@ 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') } @@ -80,17 +59,7 @@ 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') } @@ -117,17 +86,7 @@ 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') } diff --git a/spec/classes/mod/rpaf_spec.rb b/spec/classes/mod/rpaf_spec.rb index a36af731e6..44a8e2cd72 100644 --- a/spec/classes/mod/rpaf_spec.rb +++ b/spec/classes/mod/rpaf_spec.rb @@ -5,18 +5,7 @@ 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') } @@ -49,17 +38,7 @@ 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') } @@ -92,17 +71,7 @@ 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') } diff --git a/spec/classes/mod/shib_spec.rb b/spec/classes/mod/shib_spec.rb index a6bbe46bf8..2ade2eb584 100644 --- a/spec/classes/mod/shib_spec.rb +++ b/spec/classes/mod/shib_spec.rb @@ -5,37 +5,14 @@ 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') } diff --git a/spec/classes/mod/speling_spec.rb b/spec/classes/mod/speling_spec.rb index f4a34e3fe2..2a698f0a4b 100644 --- a/spec/classes/mod/speling_spec.rb +++ b/spec/classes/mod/speling_spec.rb @@ -5,34 +5,13 @@ 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 diff --git a/spec/classes/mod/ssl_spec.rb b/spec/classes/mod/ssl_spec.rb index 36972364ca..bcf4fe9458 100644 --- a/spec/classes/mod/ssl_spec.rb +++ b/spec/classes/mod/ssl_spec.rb @@ -5,34 +5,14 @@ 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') } @@ -41,17 +21,7 @@ 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') } @@ -60,17 +30,7 @@ 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 @@ -83,17 +43,7 @@ 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', @@ -110,18 +60,7 @@ 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') } @@ -129,34 +68,14 @@ 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') } @@ -164,17 +83,7 @@ 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') } @@ -182,17 +91,7 @@ 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$}) } diff --git a/spec/classes/mod/status_spec.rb b/spec/classes/mod/status_spec.rb index 540db78a7a..6fb3f69038 100644 --- a/spec/classes/mod/status_spec.rb +++ b/spec/classes/mod/status_spec.rb @@ -69,18 +69,7 @@ def require_directives(requires) context 'default configuration with parameters' do context 'on a Debian 6 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 6' context 'with default params' do it { is_expected.to contain_apache__mod('status') } @@ -123,17 +112,6 @@ def require_directives(requires) 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 @@ -170,17 +148,7 @@ def require_directives(requires) end context 'on a RedHat 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' context 'with default params' do it { is_expected.to contain_apache__mod('status') } @@ -224,18 +192,7 @@ def require_directives(requires) end context 'on a Debian 8 OS' 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 + include_examples 'Debian 8' it { is_expected.to contain_apache__mod('status') } @@ -253,17 +210,7 @@ def require_directives(requires) end context 'on a RedHat 7 OS' 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' it { is_expected.to contain_apache__mod('status') } @@ -273,17 +220,7 @@ def require_directives(requires) end context 'on a RedHat 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_apache__mod('status') } diff --git a/spec/classes/mod/userdir_spec.rb b/spec/classes/mod/userdir_spec.rb index 848dc72544..73c01a137b 100644 --- a/spec/classes/mod/userdir_spec.rb +++ b/spec/classes/mod/userdir_spec.rb @@ -10,19 +10,8 @@ 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 } diff --git a/spec/classes/mod/worker_spec.rb b/spec/classes/mod/worker_spec.rb index 8ab2090051..c1ffa7ac29 100644 --- a/spec/classes/mod/worker_spec.rb +++ b/spec/classes/mod/worker_spec.rb @@ -8,18 +8,7 @@ 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') } @@ -54,17 +43,7 @@ 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') } @@ -98,34 +77,14 @@ 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') } @@ -134,17 +93,7 @@ # 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{^$}) } diff --git a/spec/classes/mod/wsgi_spec.rb b/spec/classes/mod/wsgi_spec.rb index fb018099cd..b8fadb1026 100644 --- a/spec/classes/mod/wsgi_spec.rb +++ b/spec/classes/mod/wsgi_spec.rb @@ -5,18 +5,7 @@ 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 { @@ -27,17 +16,7 @@ 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 { @@ -48,9 +27,7 @@ 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}) } @@ -141,17 +118,7 @@ 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 { @@ -162,17 +129,7 @@ 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 { @@ -184,17 +141,7 @@ 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 diff --git a/spec/classes/params_spec.rb b/spec/classes/params_spec.rb index ef0c06b5cc..a2a876ee70 100644 --- a/spec/classes/params_spec.rb +++ b/spec/classes/params_spec.rb @@ -4,18 +4,7 @@ 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) } diff --git a/spec/classes/service_spec.rb b/spec/classes/service_spec.rb index d446f66703..564c0f00a0 100644 --- a/spec/classes/service_spec.rb +++ b/spec/classes/service_spec.rb @@ -8,18 +8,7 @@ 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( @@ -107,17 +96,7 @@ 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 + include_examples 'RedHat 5' let(:params) do { 'service_ensure' => 'running', @@ -129,18 +108,8 @@ 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( @@ -152,17 +121,7 @@ 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( diff --git a/spec/classes/vhosts_spec.rb b/spec/classes/vhosts_spec.rb index 673028b8ac..42a5ed9002 100644 --- a/spec/classes/vhosts_spec.rb +++ b/spec/classes/vhosts_spec.rb @@ -4,17 +4,7 @@ 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 diff --git a/spec/defines/balancer_spec.rb b/spec/defines/balancer_spec.rb index 7ba64a8a99..5d8054695b 100644 --- a/spec/defines/balancer_spec.rb +++ b/spec/defines/balancer_spec.rb @@ -6,18 +6,8 @@ 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 diff --git a/spec/defines/balancermember_spec.rb b/spec/defines/balancermember_spec.rb index 8458d3f3f3..23d169a0de 100644 --- a/spec/defines/balancermember_spec.rb +++ b/spec/defines/balancermember_spec.rb @@ -6,18 +6,8 @@ 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 diff --git a/spec/defines/custom_config_spec.rb b/spec/defines/custom_config_spec.rb index 9011fd68f3..791c5abd47 100644 --- a/spec/defines/custom_config_spec.rb +++ b/spec/defines/custom_config_spec.rb @@ -9,18 +9,8 @@ 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 diff --git a/spec/defines/mod_spec.rb b/spec/defines/mod_spec.rb index e4c11af57a..ab2fd74dd1 100644 --- a/spec/defines/mod_spec.rb +++ b/spec/defines/mod_spec.rb @@ -8,17 +8,7 @@ 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 @@ -62,18 +52,7 @@ 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 @@ -99,17 +78,7 @@ 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 @@ -128,17 +97,7 @@ 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 diff --git a/spec/defines/vhost_custom_spec.rb b/spec/defines/vhost_custom_spec.rb index 962e12da3e..527719289b 100644 --- a/spec/defines/vhost_custom_spec.rb +++ b/spec/defines/vhost_custom_spec.rb @@ -14,37 +14,14 @@ 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 + include_examples 'RedHat 6' let(:params) { default_params } - let(:facts) { default_facts } 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 + include_examples 'Debian 8' let(:params) { default_params } - let(:facts) { default_facts } it { is_expected.to contain_file('apache_rspec.example.com').with( @@ -62,19 +39,8 @@ } 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 + include_examples 'FreeBSD 9' let(:params) { default_params } - let(:facts) { default_facts } it { is_expected.to contain_file('apache_rspec.example.com').with( @@ -85,19 +51,8 @@ } 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 + include_examples 'Gentoo' let(:params) { default_params } - let(:facts) { default_facts } it { is_expected.to contain_file('apache_rspec.example.com').with( diff --git a/spec/spec_helper_local.rb b/spec/spec_helper_local.rb index 0c6b56b930..75a932c16e 100644 --- a/spec/spec_helper_local.rb +++ b/spec/spec_helper_local.rb @@ -36,3 +36,234 @@ shared_context 'a mod class, without including apache' do let(:facts) { on_supported_os['debian-8-x86_64'] } end + +shared_context 'Debian 6' do + let :facts do + { + id: 'root', + kernel: 'Linux', + osfamily: 'Debian', + operatingsystem: 'Debian', + operatingsystemrelease: '6', + path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', + } + end +end + +shared_context 'Debian 7' do + let :facts do + { + id: 'root', + kernel: 'Linux', + osfamily: 'Debian', + operatingsystem: 'Debian', + operatingsystemrelease: '7.0.0', + path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', + } + end +end + +shared_context 'Debian 8' do + let :facts do + { + id: 'root', + kernel: 'Linux', + osfamily: 'Debian', + operatingsystem: 'Debian', + operatingsystemrelease: '8.0.0', + path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', + } + end +end + +shared_context 'Ubuntu 14.04' do + let :facts do + { + id: 'root', + kernel: 'Linux', + osfamily: 'Debian', + operatingsystem: 'Ubuntu', + operatingsystemrelease: '14.04', + lsbdistrelease: '14.04', + path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', + } + end +end + +shared_context 'RedHat 5' 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', + } + end +end + +shared_context 'RedHat 6' 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', + } + end +end + +shared_context 'RedHat 7' 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', + } + end +end + +shared_context 'RedHat 8' 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', + } + end +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 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', + } + end +end From 2a75887712044d10fe9a73417a3fa5df4e53c92f Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Sun, 7 Feb 2021 00:19:28 +0100 Subject: [PATCH 06/13] Use rspec better for shorter specs --- spec/defines/custom_config_spec.rb | 52 +++---- spec/defines/mod_spec.rb | 23 +-- spec/defines/vhost_custom_spec.rb | 6 +- spec/defines/vhost_spec.rb | 238 ++++------------------------- 4 files changed, 55 insertions(+), 264 deletions(-) diff --git a/spec/defines/custom_config_spec.rb b/spec/defines/custom_config_spec.rb index 791c5abd47..59119a53ab 100644 --- a/spec/defines/custom_config_spec.rb +++ b/spec/defines/custom_config_spec.rb @@ -20,21 +20,21 @@ 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 @@ -55,10 +55,11 @@ '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 @@ -71,9 +72,7 @@ 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 @@ -84,9 +83,7 @@ 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 @@ -97,18 +94,11 @@ } 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 ab2fd74dd1..14a7e2929a 100644 --- a/spec/defines/mod_spec.rb +++ b/spec/defines/mod_spec.rb @@ -7,14 +7,14 @@ 'include apache' end + let :title do + 'spec_m' + end + context 'on a RedHat osfamily' do 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', @@ -29,9 +29,6 @@ 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') @@ -55,10 +52,6 @@ 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', @@ -81,10 +74,6 @@ 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', @@ -100,10 +89,6 @@ 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', diff --git a/spec/defines/vhost_custom_spec.rb b/spec/defines/vhost_custom_spec.rb index 527719289b..c5db0b82a1 100644 --- a/spec/defines/vhost_custom_spec.rb +++ b/spec/defines/vhost_custom_spec.rb @@ -6,7 +6,7 @@ let :title do 'rspec.example.com' end - let :default_params do + let(:params) do { content: 'foobar', } @@ -15,13 +15,11 @@ describe 'os-dependent items' do context 'on RedHat based systems' do include_examples 'RedHat 6' - let(:params) { default_params } it { is_expected.to compile } end context 'on Debian based systems' do include_examples 'Debian 8' - let(:params) { default_params } it { is_expected.to contain_file('apache_rspec.example.com').with( @@ -40,7 +38,6 @@ end context 'on FreeBSD systems' do include_examples 'FreeBSD 9' - let(:params) { default_params } it { is_expected.to contain_file('apache_rspec.example.com').with( @@ -52,7 +49,6 @@ end context 'on Gentoo systems' do include_examples 'Gentoo' - let(:params) { default_params } it { is_expected.to contain_file('apache_rspec.example.com').with( diff --git a/spec/defines/vhost_spec.rb b/spec/defines/vhost_spec.rb index a6ce2b291b..7d6e49bc5d 100644 --- a/spec/defines/vhost_spec.rb +++ b/spec/defines/vhost_spec.rb @@ -2119,247 +2119,74 @@ 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 @@ -2414,31 +2241,24 @@ } 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 From a0f41cd8678b7ca1e5c8fb72c6af8bb2fa4d5202 Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Sun, 7 Feb 2021 00:33:57 +0100 Subject: [PATCH 07/13] Use facts from rspec-puppet-facts where possible These operating systems are listed in metadata.json and thus can use facts from rspec-puppet-facts. --- spec/spec_helper_local.rb | 55 ++++----------------------------------- 1 file changed, 5 insertions(+), 50 deletions(-) diff --git a/spec/spec_helper_local.rb b/spec/spec_helper_local.rb index 75a932c16e..7b559a80d5 100644 --- a/spec/spec_helper_local.rb +++ b/spec/spec_helper_local.rb @@ -64,16 +64,7 @@ end shared_context 'Debian 8' do - let :facts do - { - id: 'root', - kernel: 'Linux', - osfamily: 'Debian', - operatingsystem: 'Debian', - operatingsystemrelease: '8.0.0', - path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', - } - end + let(:facts) { on_supported_os['debian-8-x86_64'] } end shared_context 'Ubuntu 14.04' do @@ -104,42 +95,15 @@ end shared_context 'RedHat 6' 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', - } - end + let(:facts) { on_supported_os['redhat-6-x86_64'] } end shared_context 'RedHat 7' 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', - } - end + let(:facts) { on_supported_os['redhat-7-x86_64'] } end shared_context 'RedHat 8' 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', - } - end + let(:facts) { on_supported_os['redhat-8-x86_64'] } end shared_context 'Fedora 17' do @@ -256,14 +220,5 @@ end shared_context 'SLES 12' 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', - } - end + let(:facts) { on_supported_os['sles-12-x86_64'] } end From be0505496c4b45101db56b80649a86cb54ba5174 Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Sun, 7 Feb 2021 00:49:00 +0100 Subject: [PATCH 08/13] Remove OS fact differences in proxy_connect_spec Using `it_behaves_like` creates a new scope and runs those tests in them. `a mod class, including apache` is a shared context and doesn't contain any tests. When using `include_examples`, you can actually inherit the context. It then goes a step further and reuses that context in every test. This works because the Apache version is a parameter so it doesn't matter. After that, nothing refers to the Debian 7 facts anymore and can be cleaned up. --- spec/classes/mod/proxy_connect_spec.rb | 48 ++++++++++++-------------- spec/spec_helper_local.rb | 13 ------- 2 files changed, 22 insertions(+), 39 deletions(-) diff --git a/spec/classes/mod/proxy_connect_spec.rb b/spec/classes/mod/proxy_connect_spec.rb index 575f17d15c..cb433f0677 100644 --- a/spec/classes/mod/proxy_connect_spec.rb +++ b/spec/classes/mod/proxy_connect_spec.rb @@ -9,37 +9,33 @@ ] end - it_behaves_like 'a mod class, without including apache' - context 'on a Debian OS' do - context 'with Apache version < 2.2' do - include_examples 'Debian 7' - let :params do - { - apache_version: '2.1', - } - end + include_examples 'a mod class, without including apache' - it { is_expected.not_to contain_apache__mod('proxy_connect') } + context 'with Apache version < 2.2' do + let :params do + { + apache_version: '2.1', + } end - context 'with Apache version = 2.2' do - include_examples 'Debian 7' - let :params do - { - apache_version: '2.2', - } - end - it { is_expected.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.4' do - include_examples 'Debian 8' - let :params do - { - apache_version: '2.4', - } - 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 + + it { is_expected.to contain_apache__mod('proxy_connect') } end end diff --git a/spec/spec_helper_local.rb b/spec/spec_helper_local.rb index 7b559a80d5..fa79367c1a 100644 --- a/spec/spec_helper_local.rb +++ b/spec/spec_helper_local.rb @@ -50,19 +50,6 @@ end end -shared_context 'Debian 7' do - let :facts do - { - id: 'root', - kernel: 'Linux', - osfamily: 'Debian', - operatingsystem: 'Debian', - operatingsystemrelease: '7.0.0', - path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', - } - end -end - shared_context 'Debian 8' do let(:facts) { on_supported_os['debian-8-x86_64'] } end From 0cd8b4013457413ef1a7a7890340e61eb5d33833 Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Sun, 7 Feb 2021 00:58:20 +0100 Subject: [PATCH 09/13] Replace Debian 6 tests with Debian 8 Debian 6 is no longer supported according to metadata.json so it doesn't make sense to test it. Debian 8 is. This cleans it up. --- spec/classes/apache_spec.rb | 27 +++++++++------------------ spec/classes/mod/auth_gssapi_spec.rb | 2 +- spec/classes/mod/auth_kerb_spec.rb | 2 +- spec/classes/mod/info_spec.rb | 4 ++-- spec/classes/mod/mime_magic_spec.rb | 4 ++-- spec/classes/mod/status_spec.rb | 8 ++++---- spec/spec_helper_local.rb | 13 ------------- 7 files changed, 19 insertions(+), 41 deletions(-) diff --git a/spec/classes/apache_spec.rb b/spec/classes/apache_spec.rb index 3fb67b3bdf..25c88f07a2 100644 --- a/spec/classes/apache_spec.rb +++ b/spec/classes/apache_spec.rb @@ -4,7 +4,7 @@ describe 'apache', type: :class do context 'on a Debian OS' do - include_examples 'Debian 6' + include_examples 'Debian 8' it { is_expected.to contain_class('apache::params') } it { @@ -17,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', ) } @@ -46,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", @@ -232,22 +232,13 @@ end end - context '8' do - include_examples 'Debian 8' - - 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') } + 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 context 'on Ubuntu 14.04' do diff --git a/spec/classes/mod/auth_gssapi_spec.rb b/spec/classes/mod/auth_gssapi_spec.rb index 071ed76831..231450f0b3 100644 --- a/spec/classes/mod/auth_gssapi_spec.rb +++ b/spec/classes/mod/auth_gssapi_spec.rb @@ -7,7 +7,7 @@ context 'default configuration with parameters' do context 'on a Debian OS', :compile do - include_examples 'Debian 6' + include_examples 'Debian 8' it { is_expected.to contain_class('apache::params') } it { is_expected.to contain_apache__mod('auth_gssapi') } diff --git a/spec/classes/mod/auth_kerb_spec.rb b/spec/classes/mod/auth_kerb_spec.rb index ea2fe8fe1e..dd1dd48260 100644 --- a/spec/classes/mod/auth_kerb_spec.rb +++ b/spec/classes/mod/auth_kerb_spec.rb @@ -7,7 +7,7 @@ context 'default configuration with parameters' do context 'on a Debian OS', :compile do - include_examples 'Debian 6' + include_examples 'Debian 8' it { is_expected.to contain_class('apache::params') } it { is_expected.to contain_apache__mod('auth_kerb') } diff --git a/spec/classes/mod/info_spec.rb b/spec/classes/mod/info_spec.rb index 316863a98f..a24d1122fd 100644 --- a/spec/classes/mod/info_spec.rb +++ b/spec/classes/mod/info_spec.rb @@ -124,10 +124,10 @@ def general_info_specs_apache24 it_behaves_like 'a mod class, without including apache' context 'On a Debian OS' do - include_examples 'Debian 6' + 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', diff --git a/spec/classes/mod/mime_magic_spec.rb b/spec/classes/mod/mime_magic_spec.rb index bba4cf4e81..369a34e088 100644 --- a/spec/classes/mod/mime_magic_spec.rb +++ b/spec/classes/mod/mime_magic_spec.rb @@ -11,7 +11,7 @@ def general_mime_magic_specs it_behaves_like 'a mod class, without including apache' context 'On a Debian OS with default params' do - include_examples 'Debian 6' + include_examples 'Debian 8' general_mime_magic_specs @@ -58,7 +58,7 @@ def general_mime_magic_specs end context 'with magic_file => /tmp/magic' do - include_examples 'Debian 6' + include_examples 'Debian 8' let :params do { magic_file: '/tmp/magic' } diff --git a/spec/classes/mod/status_spec.rb b/spec/classes/mod/status_spec.rb index 6fb3f69038..c4d814bd97 100644 --- a/spec/classes/mod/status_spec.rb +++ b/spec/classes/mod/status_spec.rb @@ -68,13 +68,13 @@ def require_directives(requires) it_behaves_like 'a mod class, without including apache' context 'default configuration with parameters' do - context 'on a Debian 6 OS' do - include_examples 'Debian 6' + 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', ['127.0.0.1', '::1'], 'On', '/server-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', @@ -98,7 +98,7 @@ def require_directives(requires) it { is_expected.to compile } - include_examples 'status_conf_spec', ['10.10.10.10', '11.11.11.11'], 'Off', '/custom-status' + include_examples 'status_conf_spec_require', 'ip 10.10.10.10 11.11.11.11', 'Off', '/custom-status' end context "with valid parameter type $allow_from => ['10.10.10.10']" do diff --git a/spec/spec_helper_local.rb b/spec/spec_helper_local.rb index fa79367c1a..79e1863020 100644 --- a/spec/spec_helper_local.rb +++ b/spec/spec_helper_local.rb @@ -37,19 +37,6 @@ let(:facts) { on_supported_os['debian-8-x86_64'] } end -shared_context 'Debian 6' do - let :facts do - { - id: 'root', - kernel: 'Linux', - osfamily: 'Debian', - operatingsystem: 'Debian', - operatingsystemrelease: '6', - path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', - } - end -end - shared_context 'Debian 8' do let(:facts) { on_supported_os['debian-8-x86_64'] } end From 99379af66fd19afcb29614d93b12f4875d604dbd Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Sun, 7 Feb 2021 03:11:52 +0100 Subject: [PATCH 10/13] Replace RedHat 5 specs with RedHat 8 Red Hat 5 is EOL and not supported according to metadata.json while Red Hat 8 is supported. --- spec/classes/apache_spec.rb | 8 ++++---- spec/classes/service_spec.rb | 4 ++-- spec/spec_helper_local.rb | 13 ------------- 3 files changed, 6 insertions(+), 19 deletions(-) diff --git a/spec/classes/apache_spec.rb b/spec/classes/apache_spec.rb index 25c88f07a2..980be7ffdb 100644 --- a/spec/classes/apache_spec.rb +++ b/spec/classes/apache_spec.rb @@ -252,8 +252,8 @@ end end - context 'on a RedHat 5 OS' do - include_examples 'RedHat 5' + context 'on a RedHat 8 OS' do + include_examples 'RedHat 8' it { is_expected.to contain_class('apache::params') } it { @@ -301,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", @@ -328,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 diff --git a/spec/classes/service_spec.rb b/spec/classes/service_spec.rb index 564c0f00a0..824b2eab5c 100644 --- a/spec/classes/service_spec.rb +++ b/spec/classes/service_spec.rb @@ -95,8 +95,8 @@ end end - context 'on a RedHat 5 OS, do not manage service' do - include_examples 'RedHat 5' + context 'on a RedHat 8 OS, do not manage service' do + include_examples 'RedHat 8' let(:params) do { 'service_ensure' => 'running', diff --git a/spec/spec_helper_local.rb b/spec/spec_helper_local.rb index 79e1863020..7b7d607c4b 100644 --- a/spec/spec_helper_local.rb +++ b/spec/spec_helper_local.rb @@ -55,19 +55,6 @@ end end -shared_context 'RedHat 5' 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', - } - end -end - shared_context 'RedHat 6' do let(:facts) { on_supported_os['redhat-6-x86_64'] } end From 581c95f0e5b8320280654fe4c8a9e93058dc80fe Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Sun, 7 Feb 2021 03:14:54 +0100 Subject: [PATCH 11/13] Replace Ubuntu 14.04 tests with 18.04 --- spec/classes/apache_spec.rb | 4 ++-- spec/spec_helper_local.rb | 14 ++------------ 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/spec/classes/apache_spec.rb b/spec/classes/apache_spec.rb index 980be7ffdb..c2b27fde8a 100644 --- a/spec/classes/apache_spec.rb +++ b/spec/classes/apache_spec.rb @@ -241,8 +241,8 @@ it { is_expected.to contain_exec('/usr/sbin/a2dismod prefork') } end - context 'on Ubuntu 14.04' do - include_examples 'Ubuntu 14.04' + context 'on Ubuntu 18.04' do + include_examples 'Ubuntu 18.04' it { is_expected.to contain_file('/var/www/html').with( diff --git a/spec/spec_helper_local.rb b/spec/spec_helper_local.rb index 7b7d607c4b..b380956a21 100644 --- a/spec/spec_helper_local.rb +++ b/spec/spec_helper_local.rb @@ -41,18 +41,8 @@ let(:facts) { on_supported_os['debian-8-x86_64'] } end -shared_context 'Ubuntu 14.04' do - let :facts do - { - id: 'root', - kernel: 'Linux', - osfamily: 'Debian', - operatingsystem: 'Ubuntu', - operatingsystemrelease: '14.04', - lsbdistrelease: '14.04', - path: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', - } - end +shared_context 'Ubuntu 18.04' do + let(:facts) { on_supported_os['ubuntu-18.04-x86_64'] } end shared_context 'RedHat 6' do From a6fc3b31e68cfaaf5840f679d2d59c1d1190a037 Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Mon, 8 Feb 2021 12:03:58 +0100 Subject: [PATCH 12/13] Reuse resources in tests to save time Prior to this patch the runtime was ~21 seconds, after ~18 seconds. A huge part of that is actually initializing facts from rspec-puppet-facts. --- spec/classes/mod/dir_spec.rb | 80 ++++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 36 deletions(-) diff --git a/spec/classes/mod/dir_spec.rb b/spec/classes/mod/dir_spec.rb index 9f1e533c4b..8f0dd3524b 100644 --- a/spec/classes/mod/dir_spec.rb +++ b/spec/classes/mod/dir_spec.rb @@ -11,21 +11,23 @@ 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$}) } + 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$}) } + it { is_expected.to contain_file('dir.conf').with_content(%r{ example\.txt }).with_content(%r{ fearsome\.aspx$}) } end end context 'default configuration with parameters on a RedHat OS' do @@ -34,21 +36,23 @@ 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$}) } + 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$}) } + it { is_expected.to contain_file('dir.conf').with_content(%r{ example\.txt }).with_content(%r{ fearsome\.aspx$}) } end end context 'default configuration with parameters on a FreeBSD OS' do @@ -57,21 +61,23 @@ 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$}) } + 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$}) } + it { is_expected.to contain_file('dir.conf').with_content(%r{ example\.txt }).with_content(%r{ fearsome\.aspx$}) } end end context 'default configuration with parameters on a Gentoo OS' do @@ -80,21 +86,23 @@ 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$}) } + 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$}) } + it { is_expected.to contain_file('dir.conf').with_content(%r{ example\.txt }).with_content(%r{ fearsome\.aspx$}) } end end end From 675ba83d4ff986bf19dafc83a876c174c9acfc42 Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Mon, 8 Feb 2021 12:07:02 +0100 Subject: [PATCH 13/13] Reduce duplication in mod_dir spec test --- spec/classes/mod/dir_spec.rb | 123 +++++++---------------------------- 1 file changed, 24 insertions(+), 99 deletions(-) diff --git a/spec/classes/mod/dir_spec.rb b/spec/classes/mod/dir_spec.rb index 8f0dd3524b..919d86399d 100644 --- a/spec/classes/mod/dir_spec.rb +++ b/spec/classes/mod/dir_spec.rb @@ -3,106 +3,31 @@ 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 - include_examples 'Debian 8' - - 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 }).with_content(%r{ fearsome\.aspx$}) } - end - end - context 'default configuration with parameters on a RedHat OS' do - include_examples 'RedHat 6' - - 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 }).with_content(%r{ fearsome\.aspx$}) } - end - end - context 'default configuration with parameters on a FreeBSD OS' do - include_examples 'FreeBSD 9' - - 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$}) + ['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 }).with_content(%r{ fearsome\.aspx$}) } 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 }).with_content(%r{ fearsome\.aspx$}) } - end - end - context 'default configuration with parameters on a Gentoo OS' do - include_examples 'Gentoo' - - 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 }).with_content(%r{ fearsome\.aspx$}) } - end end end