summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorHunter Haugen <h.haugen@gmail.com>2012-08-29 13:50:25 -0700
committerHunter Haugen <h.haugen@gmail.com>2012-08-29 14:12:48 -0700
commitee028ee6c7872de0adc35b5b50e6d802e02c25a5 (patch)
treefb29b766db59a3fe7ac068e69744816a3596a582 /spec
parent8a56bba7a7ac6376627e64be00d3ca2db14fdf71 (diff)
Update specs for haproxy base class with debian support
Many of the tests that apply to the RedHat family also apply to Debian. The tests have been updated to reflect this, as well as to capture the minor differences between the two platforms. This commit incorperates the changes from glarizza#7 and glarizza#12 Not all tests pass because I found it pertinent to update the spec where the actual module code was lacking.
Diffstat (limited to 'spec')
-rw-r--r--spec/classes/haproxy_spec.rb152
1 files changed, 103 insertions, 49 deletions
diff --git a/spec/classes/haproxy_spec.rb b/spec/classes/haproxy_spec.rb
index 46c8124..fa171f3 100644
--- a/spec/classes/haproxy_spec.rb
+++ b/spec/classes/haproxy_spec.rb
@@ -1,59 +1,113 @@
require 'spec_helper'
describe 'haproxy', :type => :class do
-
- context 'on Redhat family operatingsystems' do
- let(:facts) do
- {
- :osfamily => 'Redhat',
- :concat_basedir => '/dne'
- }
- end
- it { should include_class('concat::setup') }
-
- it 'should install the haproxy package' do
- subject.should contain_package('haproxy').with(
- 'ensure' => 'present'
- )
- end
-
- it 'should install the haproxy service' do
- subject.should contain_service('haproxy').with(
- 'ensure' => 'running',
- 'enable' => 'true',
- 'hasrestart' => 'true',
- 'hasstatus' => 'true'
- )
- end
-
- it 'should set up /etc/haproxy/haproxy.cfg as a concat resource' do
- subject.should contain_concat('/etc/haproxy/haproxy.cfg').with(
- 'owner' => '0',
- 'group' => '0',
- 'mode' => '0644'
- )
- end
-
- it 'should contain a header concat fragment' do
- subject.should contain_concat__fragment('00-header').with(
- 'target' => '/etc/haproxy/haproxy.cfg',
- 'order' => '01',
- 'content' => "# This file managed by Puppet\n"
- )
+ let(:default_facts) do
+ {
+ :concat_basedir => '/dne',
+ :ipaddress => '10.10.10.10'
+ }
+ end
+ context 'on supported platforms' do
+ describe 'for OS-agnostic configuration' do
+ ['Debian', 'RedHat'].each do |osfamily|
+ context "on #{osfamily} family operatingsystems" do
+ let(:facts) do
+ { :osfamily => osfamily }.merge default_facts
+ end
+ let(:params) do
+ {'enable' => true}
+ end
+ it { should include_class('concat::setup') }
+ it 'should install the haproxy package' do
+ subject.should contain_package('haproxy').with(
+ 'ensure' => 'present'
+ )
+ end
+ it 'should install the haproxy service' do
+ subject.should contain_service('haproxy').with(
+ 'ensure' => 'running',
+ 'enable' => 'true',
+ 'hasrestart' => 'true',
+ 'hasstatus' => 'true',
+ 'require' => [
+ 'Concat[/etc/haproxy/haproxy.cfg]',
+ 'File[/var/lib/haproxy]'
+ ]
+ )
+ end
+ it 'should set up /etc/haproxy/haproxy.cfg as a concat resource' do
+ subject.should contain_concat('/etc/haproxy/haproxy.cfg').with(
+ 'owner' => '0',
+ 'group' => '0',
+ 'mode' => '0644'
+ )
+ end
+ it 'should manage the chroot directory' do
+ subject.should contain_file('/var/lib/haproxy').with(
+ 'ensure' => 'directory'
+ )
+ end
+ it 'should contain a header concat fragment' do
+ subject.should contain_concat__fragment('00-header').with(
+ 'target' => '/etc/haproxy/haproxy.cfg',
+ 'order' => '01',
+ 'content' => "# This file managed by Puppet\n"
+ )
+ end
+ it 'should contain a haproxy-base concat fragment' do
+ subject.should contain_concat__fragment('haproxy-base').with(
+ 'target' => '/etc/haproxy/haproxy.cfg',
+ 'order' => '10'
+ )
+ end
+ describe 'Base concat fragment contents' do
+ let(:contents) { param_value(subject, 'concat::fragment', 'haproxy-base', 'content').split("\n") }
+ it 'should contain global and defaults sections' do
+ contents.should include('global')
+ contents.should include('defaults')
+ end
+ it 'should log to an ip address for local0' do
+ contents.should be_any { |match| match =~ / log \d+(\.\d+){3} local0/ }
+ end
+ it 'should specify the default chroot' do
+ contents.should include(' chroot /var/lib/haproxy')
+ end
+ it 'should specify the correct user' do
+ contents.should include(' user haproxy')
+ end
+ it 'should specify the correct group' do
+ contents.should include(' group haproxy')
+ end
+ it 'should specify the correct pidfile' do
+ contents.should include(' pidfile /var/run/haproxy.pid')
+ end
+ end
+ end
+ end
end
-
- it 'should contain a haproxy-base concat fragment' do
- subject.should contain_concat__fragment('haproxy-base').with(
- 'target' => '/etc/haproxy/haproxy.cfg',
- 'order' => '10',
- 'content' => "global\n chroot /var/lib/haproxy\n daemon \n group haproxy\n log local0\n maxconn 4000\n pidfile /var/run/haproxy.pid\n stats socket /var/lib/haproxy/stats\n user haproxy\n\ndefaults\n log global\n maxconn 8000\n option redispatch\n retries 3\n stats enable\n timeout http-request 10s\n timeout queue 1m\n timeout connect 10s\n timeout client 1m\n timeout server 1m\n timeout check 10s\n"
- )
+ describe 'for OS-specific configuration' do
+ context 'only on Debian family operatingsystems' do
+ let(:facts) do
+ { :osfamily => 'Debian' }.merge default_facts
+ end
+ it 'should manage haproxy service defaults' do
+ subject.should contain_file('/etc/default/haproxy').with(
+ 'before' => 'Service[haproxy]',
+ 'require' => 'Package[haproxy]'
+ )
+ verify_contents(subject, '/etc/default/haproxy', ['ENABLED=1'])
+ end
+ end
+ context 'only on RedHat family operatingsystems' do
+ let(:facts) do
+ { :osfamily => 'RedHat' }.merge default_facts
+ end
+ end
end
end
-
- context 'on non-Redhat family operatingsystems' do
+ context 'on unsupported operatingsystems' do
let(:facts) do
- { :osfamily => 'Debian' }
+ { :osfamily => 'RainbowUnicorn' }.merge default_facts
end
it do
expect {