]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/apache/spec/acceptance/class_spec.rb
try again, with puppetforge modules, correctly included now
[dsa-puppet.git] / 3rdparty / modules / apache / spec / acceptance / class_spec.rb
diff --git a/3rdparty/modules/apache/spec/acceptance/class_spec.rb b/3rdparty/modules/apache/spec/acceptance/class_spec.rb
new file mode 100644 (file)
index 0000000..0a7d67b
--- /dev/null
@@ -0,0 +1,88 @@
+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