Update rabbitmq module
[mirror/dsa-puppet.git] / 3rdparty / modules / rabbitmq / spec / acceptance / class_spec.rb
1 require 'spec_helper_acceptance'
2
3 describe 'rabbitmq class:' do
4   case fact('os.family')
5   when 'RedHat'
6     package_name = 'rabbitmq-server'
7     service_name = 'rabbitmq-server'
8   when 'SUSE'
9     package_name = 'rabbitmq-server'
10     service_name = 'rabbitmq-server'
11   when 'Debian'
12     package_name = 'rabbitmq-server'
13     service_name = 'rabbitmq-server'
14   when 'Archlinux'
15     package_name = 'rabbitmq'
16     service_name = 'rabbitmq'
17   end
18
19   context 'default class inclusion' do
20     let(:pp) do
21       <<-EOS
22       class { 'rabbitmq': }
23       if $facts['os']['family'] == 'RedHat' {
24         class { 'erlang': epel_enable => true}
25         Class['erlang'] -> Class['rabbitmq']
26       }
27       EOS
28     end
29
30     it_behaves_like 'an idempotent resource'
31
32     describe package(package_name) do
33       it { is_expected.to be_installed }
34     end
35
36     describe service(service_name) do
37       it { is_expected.to be_enabled }
38       it { is_expected.to be_running }
39     end
40   end
41
42   context 'disable and stop service' do
43     let(:pp) do
44       <<-EOS
45         class { 'rabbitmq':
46           service_ensure => 'stopped',
47         }
48         if $facts['os']['family'] == 'RedHat' {
49           class { 'erlang': epel_enable => true}
50           Class['erlang'] -> Class['rabbitmq']
51         }
52       EOS
53     end
54
55     it_behaves_like 'an idempotent resource'
56
57     describe service(service_name) do
58       it { is_expected.not_to be_enabled }
59       it { is_expected.not_to be_running }
60     end
61   end
62
63   context 'service is unmanaged' do
64     it 'runs successfully' do
65       pp_pre = <<-EOS
66         class { 'rabbitmq': }
67         if $facts['os']['family'] == 'RedHat' {
68           class { 'erlang': epel_enable => true}
69           Class['erlang'] -> Class['rabbitmq']
70         }
71       EOS
72
73       pp = <<-EOS
74         class { 'rabbitmq':
75           service_manage => false,
76           service_ensure  => 'stopped',
77         }
78         if $facts['os']['family'] == 'RedHat' {
79           class { 'erlang': epel_enable => true}
80           Class['erlang'] -> Class['rabbitmq']
81         }
82       EOS
83
84       apply_manifest(pp_pre, catch_failures: true)
85       apply_manifest(pp, catch_failures: true)
86     end
87
88     describe service(service_name) do
89       it { is_expected.to be_enabled }
90       it { is_expected.to be_running }
91     end
92   end
93
94   context 'binding on all interfaces' do
95     let(:pp) do
96       <<-EOS
97       class { 'rabbitmq':
98         service_manage    => true,
99         port              => 5672,
100         admin_enable      => true,
101         node_ip_address   => '0.0.0.0'
102       }
103       EOS
104     end
105
106     it_behaves_like 'an idempotent resource'
107
108     describe service(service_name) do
109       it { is_expected.to be_running }
110     end
111     describe port(5672) do
112       it { is_expected.to be_listening.on('0.0.0.0').with('tcp') }
113     end
114     describe port(15_672) do
115       it { is_expected.to be_listening.on('0.0.0.0').with('tcp') }
116     end
117     describe port(25_672) do
118       xit 'Is on 55672 instead on older rmq versions' do
119         is_expected.to be_listening.on('0.0.0.0').with('tcp')
120       end
121     end
122   end
123
124   context 'binding to localhost only' do
125     let(:pp) do
126       <<-EOS
127         class { 'rabbitmq':
128           service_manage    => true,
129           port              => 5672,
130           admin_enable      => true,
131           node_ip_address   => '127.0.0.1'
132         }
133       EOS
134     end
135
136     it_behaves_like 'an idempotent resource'
137
138     describe service(service_name) do
139       it { is_expected.to be_running }
140     end
141     describe port(5672) do
142       it { is_expected.to be_listening.on('127.0.0.1').with('tcp') }
143     end
144     describe port(15_672) do
145       it { is_expected.to be_listening.on('127.0.0.1').with('tcp') }
146     end
147     # This listens on all interfaces regardless of these settings
148     describe port(25_672) do
149       xit 'Is on 55672 instead on older rmq versions' do
150         is_expected.to be_listening.on('0.0.0.0').with('tcp')
151       end
152     end
153   end
154
155   context 'ssl enabled' do
156     let(:pp) do
157       <<-EOS
158         class { 'rabbitmq':
159           service_manage  => true,
160           admin_enable    => true,
161           node_ip_address => '0.0.0.0',
162           ssl_interface   => '0.0.0.0',
163           ssl             => true,
164           ssl_cacert      => '/tmp/cacert.crt',
165           ssl_cert        => '/tmp/rabbitmq.crt',
166           ssl_key         => '/tmp/rabbitmq.key',
167         }
168       EOS
169     end
170
171     it_behaves_like 'an idempotent resource'
172
173     describe service(service_name) do
174       it { is_expected.to be_running }
175     end
176     describe port(5671) do
177       it { is_expected.to be_listening.on('0.0.0.0').with('tcp') }
178     end
179     describe port(15_671) do
180       it { is_expected.to be_listening.on('0.0.0.0').with('tcp') }
181     end
182   end
183
184   context 'different management_ip_address and node_ip_address' do
185     let(:pp) do
186       <<-EOS
187         class { 'rabbitmq':
188           service_manage        => true,
189           port                  => 5672,
190           admin_enable          => true,
191           node_ip_address       => '0.0.0.0',
192           management_ip_address => '127.0.0.1'
193         }
194       EOS
195     end
196
197     it_behaves_like 'an idempotent resource'
198
199     describe service(service_name) do
200       it { is_expected.to be_running }
201     end
202     describe port(5672) do
203       it { is_expected.to be_listening.on('0.0.0.0').with('tcp') }
204     end
205     describe port(15_672) do
206       it { is_expected.to be_listening.on('127.0.0.1').with('tcp') }
207     end
208     describe port(25_672) do
209       xit 'Is on 55672 instead on older rmq versions' do
210         is_expected.to be_listening.on('0.0.0.0').with('tcp')
211       end
212     end
213   end
214 end