--- /dev/null
+require 'spec_helper'
+
+describe 'apache::service', :type => :class do
+ let :pre_condition do
+ 'include apache::params'
+ end
+ context "on a Debian OS" 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_service("httpd").with(
+ 'name' => 'apache2',
+ 'ensure' => 'running',
+ 'enable' => 'true'
+ )
+ }
+
+ context "with $service_name => 'foo'" do
+ let (:params) {{ :service_name => 'foo' }}
+ it { is_expected.to contain_service("httpd").with(
+ 'name' => 'foo'
+ )
+ }
+ end
+
+ context "with $service_enable => true" do
+ let (:params) {{ :service_enable => true }}
+ it { is_expected.to contain_service("httpd").with(
+ 'name' => 'apache2',
+ 'ensure' => 'running',
+ 'enable' => 'true'
+ )
+ }
+ end
+
+ context "with $service_enable => false" do
+ let (:params) {{ :service_enable => false }}
+ it { is_expected.to contain_service("httpd").with(
+ 'name' => 'apache2',
+ 'ensure' => 'running',
+ 'enable' => 'false'
+ )
+ }
+ end
+
+ context "$service_enable must be a bool" do
+ let (:params) {{ :service_enable => 'not-a-boolean' }}
+
+ it 'should fail' do
+ expect { catalogue }.to raise_error(Puppet::Error, /is not a boolean/)
+ end
+ end
+
+ context "$service_manage must be a bool" do
+ let (:params) {{ :service_manage => 'not-a-boolean' }}
+
+ it 'should fail' do
+ expect { catalogue }.to raise_error(Puppet::Error, /is not a boolean/)
+ end
+ end
+
+ context "with $service_ensure => 'running'" do
+ let (:params) {{ :service_ensure => 'running', }}
+ it { is_expected.to contain_service("httpd").with(
+ 'ensure' => 'running',
+ 'enable' => 'true'
+ )
+ }
+ end
+
+ context "with $service_ensure => 'stopped'" do
+ let (:params) {{ :service_ensure => 'stopped', }}
+ it { is_expected.to contain_service("httpd").with(
+ 'ensure' => 'stopped',
+ 'enable' => 'true'
+ )
+ }
+ end
+
+ context "with $service_ensure => 'UNDEF'" do
+ let (:params) {{ :service_ensure => 'UNDEF' }}
+ it { is_expected.to contain_service("httpd").without_ensure }
+ end
+
+ context "with $service_restart unset" do
+ it { is_expected.to contain_service("httpd").without_restart }
+ end
+
+ context "with $service_restart => '/usr/sbin/apachectl graceful'" do
+ let (:params) {{ :service_restart => '/usr/sbin/apachectl graceful' }}
+ it { is_expected.to contain_service("httpd").with(
+ 'restart' => '/usr/sbin/apachectl graceful'
+ )
+ }
+ end
+ end
+
+
+ context "on a RedHat 5 OS, do not manage service" do
+ let :facts do
+ {
+ :osfamily => 'RedHat',
+ :operatingsystemrelease => '5',
+ :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
+ let(:params) do
+ {
+ 'service_ensure' => 'running',
+ 'service_name' => 'httpd',
+ 'service_manage' => false
+ }
+ end
+ it 'should not manage the httpd service' do
+ subject.should_not contain_service('httpd')
+ end
+ end
+
+ context "on a FreeBSD 5 OS" do
+ let :facts do
+ {
+ :osfamily => 'FreeBSD',
+ :operatingsystemrelease => '9',
+ :concat_basedir => '/dne',
+ :operatingsystem => 'FreeBSD',
+ :id => 'root',
+ :kernel => 'FreeBSD',
+ :path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
+ :is_pe => false,
+ }
+ end
+ it { is_expected.to contain_service("httpd").with(
+ 'name' => 'apache24',
+ 'ensure' => 'running',
+ 'enable' => 'true'
+ )
+ }
+ end
+
+ context "on a Gentoo OS" do
+ let :facts do
+ {
+ :osfamily => 'Gentoo',
+ :operatingsystem => 'Gentoo',
+ :operatingsystemrelease => '3.16.1-gentoo',
+ :concat_basedir => '/dne',
+ :id => 'root',
+ :kernel => 'Linux',
+ :path => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin',
+ :is_pe => false,
+ }
+ end
+ it { is_expected.to contain_service("httpd").with(
+ 'name' => 'apache2',
+ 'ensure' => 'running',
+ 'enable' => 'true'
+ )
+ }
+ end
+end