]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/apache/spec/classes/mod/status_spec.rb
add Openstack modules to 3rdparty
[dsa-puppet.git] / 3rdparty / modules / apache / spec / classes / mod / status_spec.rb
diff --git a/3rdparty/modules/apache/spec/classes/mod/status_spec.rb b/3rdparty/modules/apache/spec/classes/mod/status_spec.rb
new file mode 100644 (file)
index 0000000..e3b3d24
--- /dev/null
@@ -0,0 +1,206 @@
+require 'spec_helper'
+
+# Helper function for testing the contents of `status.conf`
+def status_conf_spec(allow_from, extended_status, status_path)
+  it do
+    is_expected.to contain_file("status.conf").with_content(
+      "<Location #{status_path}>\n"\
+      "    SetHandler server-status\n"\
+      "    Order deny,allow\n"\
+      "    Deny from all\n"\
+      "    Allow from #{Array(allow_from).join(' ')}\n"\
+      "</Location>\n"\
+      "ExtendedStatus #{extended_status}\n"\
+      "\n"\
+      "<IfModule mod_proxy.c>\n"\
+      "    # Show Proxy LoadBalancer status in mod_status\n"\
+      "    ProxyStatus On\n"\
+      "</IfModule>\n"
+    )
+  end
+end
+
+describe 'apache::mod::status', :type => :class do
+  let :pre_condition do
+    'include apache'
+  end
+
+  context "on a Debian OS with default params" do
+    let :facts do
+      {
+        :osfamily               => 'Debian',
+        :operatingsystemrelease => '6',
+        :concat_basedir         => '/dne',
+        :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") }
+
+    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 OS with default params" do
+    let :facts do
+      {
+        :osfamily               => 'RedHat',
+        :operatingsystemrelease => '6',
+        :concat_basedir         => '/dne',
+        :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") }
+
+    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
+
+  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',
+        :concat_basedir         => '/dne',
+        :lsbdistcodename        => 'squeeze',
+        :operatingsystem        => 'Debian',
+        :id                     => 'root',
+        :kernel                 => 'Linux',
+        :path                   => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
+        :is_pe                  => false,
+      }
+    end
+    let :params do
+      {
+        :allow_from => ['10.10.10.10','11.11.11.11'],
+        :extended_status => 'Off',
+        :status_path => '/custom-status',
+      }
+    end
+
+    status_conf_spec(["10.10.10.10", "11.11.11.11"], "Off", "/custom-status")
+
+  end
+
+  context "with valid parameter type $allow_from => ['10.10.10.10']" do
+    let :facts do
+      {
+        :osfamily               => 'Debian',
+        :operatingsystemrelease => '6',
+        :concat_basedir         => '/dne',
+        :lsbdistcodename        => 'squeeze',
+        :operatingsystem        => 'Debian',
+        :id                     => 'root',
+        :kernel                 => 'Linux',
+        :path                   => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
+        :is_pe                  => false,
+      }
+    end
+    let :params do
+      { :allow_from => ['10.10.10.10'] }
+    end
+    it 'should expect to succeed array validation' do
+      expect {
+        is_expected.to contain_file("status.conf")
+      }.not_to raise_error()
+    end
+  end
+
+  context "with invalid parameter type $allow_from => '10.10.10.10'" do
+    let :facts do
+      {
+        :osfamily               => 'Debian',
+        :operatingsystemrelease => '6',
+        :concat_basedir         => '/dne',
+        :operatingsystem        => 'Debian',
+        :id                     => 'root',
+        :kernel                 => 'Linux',
+        :path                   => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
+        :is_pe                  => false,
+      }
+    end
+    let :params do
+      { :allow_from => '10.10.10.10' }
+    end
+    it 'should expect to fail array validation' do
+      expect {
+        is_expected.to contain_file("status.conf")
+      }.to raise_error(Puppet::Error)
+    end
+  end
+
+  # Only On or Off are valid options
+  ['On', 'Off'].each do |valid_param|
+    context "with valid value $extended_status => '#{valid_param}'" do
+      let :facts do
+        {
+          :osfamily               => 'Debian',
+          :operatingsystemrelease => '6',
+          :concat_basedir         => '/dne',
+          :lsbdistcodename        => 'squeeze',
+          :operatingsystem        => 'Debian',
+          :id                     => 'root',
+          :kernel                 => 'Linux',
+          :path                   => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
+          :is_pe                  => false,
+        }
+      end
+      let :params do
+        { :extended_status => valid_param }
+      end
+      it 'should expect to succeed regular expression validation' do
+        expect {
+          is_expected.to contain_file("status.conf")
+        }.not_to raise_error()
+      end
+    end
+  end
+
+  ['Yes', 'No'].each do |invalid_param|
+    context "with invalid value $extended_status => '#{invalid_param}'" do
+      let :facts do
+        {
+          :osfamily               => 'Debian',
+          :operatingsystemrelease => '6',
+          :concat_basedir         => '/dne',
+          :operatingsystem        => 'Debian',
+          :id                     => 'root',
+          :kernel                 => 'Linux',
+          :path                   => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
+          :is_pe                  => false,
+        }
+      end
+      let :params do
+        { :extended_status => invalid_param }
+      end
+      it 'should expect to fail regular expression validation' do
+        expect {
+          is_expected.to contain_file("status.conf")
+        }.to raise_error(Puppet::Error)
+      end
+    end
+  end
+
+end