]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/apache/spec/defines/custom_config_spec.rb
add Openstack modules to 3rdparty
[dsa-puppet.git] / 3rdparty / modules / apache / spec / defines / custom_config_spec.rb
diff --git a/3rdparty/modules/apache/spec/defines/custom_config_spec.rb b/3rdparty/modules/apache/spec/defines/custom_config_spec.rb
new file mode 100644 (file)
index 0000000..a5efd15
--- /dev/null
@@ -0,0 +1,138 @@
+require 'spec_helper'
+
+describe 'apache::custom_config', :type => :define do
+  let :pre_condition do
+    'class { "apache": }'
+  end
+  let :title do
+    'rspec'
+  end
+  let :facts do
+    {
+      :osfamily               => 'Debian',
+      :operatingsystemrelease => '6',
+      :concat_basedir         => '/',
+      :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
+  context 'defaults with content' do
+    let :params do
+      {
+        'content' => '# Test',
+      }
+    end
+    it { is_expected.to contain_exec("service notify for rspec").with({
+      'refreshonly' => 'true',
+      'subscribe'   => 'File[apache_rspec]',
+      'command'     => '/usr/sbin/apachectl -t',
+      'notify'      => 'Class[Apache::Service]',
+      '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',
+    })
+    }
+    it { is_expected.to contain_file("apache_rspec").with({
+      'ensure'  => 'present',
+      'content' => '# Test',
+      'require' => 'Package[httpd]',
+    })
+    }
+  end
+  context 'set everything with source' do
+    let :params do
+      {
+        'confdir'        => '/dne',
+        'priority'       => '30',
+        'source'         => 'puppet:///modules/apache/test',
+        'verify_command' => '/bin/true',
+      }
+    end
+    it { is_expected.to contain_exec("service notify for rspec").with({
+      'command'     => '/bin/true',
+    })
+    }
+    it { is_expected.to contain_exec("remove rspec if invalid").with({
+      'command'     => '/bin/rm /dne/30-rspec.conf',
+      '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]',
+    })
+    }
+  end
+  context 'verify_config => false' do
+    let :params do
+      {
+        'content'       => '# test',
+        'verify_config' => false,
+      }
+    end
+    it { is_expected.to_not contain_exec('service notify for rspec') }
+    it { is_expected.to_not contain_exec('remove rspec if invalid') }
+    it { is_expected.to contain_file('apache_rspec').with({
+      'notify' => 'Class[Apache::Service]'
+    })
+    }
+  end
+  context 'ensure => absent' do
+    let :params do
+      {
+        'ensure' => 'absent'
+      }
+    end
+    it { is_expected.to_not contain_exec('service notify for rspec') }
+    it { is_expected.to_not contain_exec('remove rspec if invalid') }
+    it { is_expected.to contain_file('apache_rspec').with({
+      'ensure' => 'absent',
+    })
+    }
+  end
+  describe 'validation' do
+    context 'both content and source' do
+      let :params do
+        {
+          'content' => 'foo',
+          'source'  => 'bar',
+        }
+      end
+      it do
+        expect {
+          catalogue
+        }.to raise_error(Puppet::Error, /Only one of \$content and \$source can be specified\./)
+      end
+    end
+    context 'neither content nor source' do
+      it do
+        expect {
+          catalogue
+        }.to raise_error(Puppet::Error, /One of \$content and \$source must be specified\./)
+      end
+    end
+    context 'bad ensure' do
+      let :params do
+        {
+          'content' => 'foo',
+          'ensure'  => 'foo',
+        }
+      end
+      it do
+        expect {
+          catalogue
+        }.to raise_error(Puppet::Error, /is not supported for ensure/)
+      end
+    end
+  end
+end