--- /dev/null
+require 'spec_helper_acceptance'
+
+describe 'apache class', :unless => UNSUPPORTED_PLATFORMS.include?(fact('osfamily')) do
+ case fact('osfamily')
+ when 'RedHat'
+ package_name = 'httpd'
+ service_name = 'httpd'
+ when 'Debian'
+ package_name = 'apache2'
+ service_name = 'apache2'
+ when 'FreeBSD'
+ package_name = 'apache24'
+ service_name = 'apache24'
+ when 'Gentoo'
+ package_name = 'www-servers/apache'
+ service_name = 'apache2'
+ end
+
+ context 'default parameters' do
+ it 'should work with no errors' do
+ pp = <<-EOS
+ class { 'apache': }
+ EOS
+
+ # Run it twice and test for idempotency
+ apply_manifest(pp, :catch_failures => true)
+ expect(apply_manifest(pp, :catch_failures => true).exit_code).to be_zero
+ end
+
+ describe package(package_name) do
+ it { is_expected.to be_installed }
+ end
+
+ describe service(service_name) do
+ it { is_expected.to be_enabled }
+ it { is_expected.to be_running }
+ end
+
+ describe port(80) do
+ it { should be_listening }
+ end
+ end
+
+ context 'custom site/mod dir parameters' do
+ # Using puppet_apply as a helper
+ it 'should work with no errors' do
+ pp = <<-EOS
+ if $::osfamily == 'RedHat' and $::selinux {
+ $semanage_package = $::operatingsystemmajrelease ? {
+ '5' => 'policycoreutils',
+ default => 'policycoreutils-python',
+ }
+
+ package { $semanage_package: ensure => installed }
+ exec { 'set_apache_defaults':
+ command => 'semanage fcontext -a -t httpd_sys_content_t "/apache_spec(/.*)?"',
+ path => '/bin:/usr/bin/:/sbin:/usr/sbin',
+ subscribe => Package[$semanage_package],
+ refreshonly => true,
+ }
+ exec { 'restorecon_apache':
+ command => 'restorecon -Rv /apache_spec',
+ path => '/bin:/usr/bin/:/sbin:/usr/sbin',
+ before => Service['httpd'],
+ require => Class['apache'],
+ subscribe => Exec['set_apache_defaults'],
+ refreshonly => true,
+ }
+ }
+ file { '/apache_spec': ensure => directory, }
+ file { '/apache_spec/apache_custom': ensure => directory, }
+ class { 'apache':
+ mod_dir => '/apache_spec/apache_custom/mods',
+ vhost_dir => '/apache_spec/apache_custom/vhosts',
+ }
+ EOS
+
+ # Run it twice and test for idempotency
+ apply_manifest(pp, :catch_failures => true)
+ apply_manifest(pp, :catch_changes => true)
+ end
+
+ describe service(service_name) do
+ it { is_expected.to be_enabled }
+ it { is_expected.to be_running }
+ end
+ end
+end