Revert "Add systemd module, required by rabbitmq"
[mirror/dsa-puppet.git] / 3rdparty / modules / rabbitmq / spec / unit / puppet / provider / rabbitmq_parameter / rabbitmqctl_spec.rb
1 require 'spec_helper'
2
3 describe Puppet::Type.type(:rabbitmq_parameter).provider(:rabbitmqctl) do
4   let(:resource) do
5     Puppet::Type.type(:rabbitmq_parameter).new(
6       name: 'documentumShovel@/',
7       component_name: 'shovel',
8       value: {
9         'src-uri'    => 'amqp://',
10         'src-queue'  => 'my-queue',
11         'dest-uri'   => 'amqp://remote-server',
12         'dest-queue' => 'another-queue'
13       },
14       provider: described_class.name
15     )
16   end
17   let(:provider) { resource.provider }
18
19   after do
20     described_class.instance_variable_set(:@parameters, nil)
21   end
22
23   context 'has "@" in parameter name' do
24     let(:resource) do
25       Puppet::Type.type(:rabbitmq_parameter).new(
26         name: 'documentumShovel@/',
27         component_name: 'shovel',
28         value: {
29           'src-uri'    => 'amqp://',
30           'src-queue'  => 'my-queue',
31           'dest-uri'   => 'amqp://remote-server',
32           'dest-queue' => 'another-queue'
33         },
34         provider: described_class.name
35       )
36     end
37     let(:provider) { described_class.new(resource) }
38
39     it do
40       expect(provider.should_parameter).to eq('documentumShovel')
41     end
42
43     it do
44       expect(provider.should_vhost).to eq('/')
45     end
46   end
47
48   it 'fails with invalid output from list' do
49     provider.class.expects(:rabbitmqctl).with('list_parameters', '-q', '-p', '/').returns 'foobar'
50     expect { provider.exists? }.to raise_error(Puppet::Error, %r{cannot parse line from list_parameter})
51   end
52
53   it 'matches parameters from list' do
54     provider.class.expects(:rabbitmqctl).with('list_parameters', '-q', '-p', '/').returns <<-EOT
55 shovel  documentumShovel  {"src-uri":"amqp://","src-queue":"my-queue","dest-uri":"amqp://remote-server","dest-queue":"another-queue"}
56 EOT
57     expect(provider.exists?).to eq(component_name: 'shovel',
58                                    value: {
59                                      'src-uri' => 'amqp://',
60                                      'src-queue'  => 'my-queue',
61                                      'dest-uri'   => 'amqp://remote-server',
62                                      'dest-queue' => 'another-queue'
63                                    })
64   end
65
66   it 'does not match an empty list' do
67     provider.class.expects(:rabbitmqctl).with('list_parameters', '-q', '-p', '/').returns ''
68     expect(provider.exists?).to eq(nil)
69   end
70
71   it 'destroys parameter' do
72     provider.expects(:rabbitmqctl).with('clear_parameter', '-p', '/', 'shovel', 'documentumShovel')
73     provider.destroy
74   end
75
76   it 'onlies call set_parameter once' do
77     provider.expects(:rabbitmqctl).with('set_parameter',
78                                         '-p', '/',
79                                         'shovel',
80                                         'documentumShovel',
81                                         '{"src-uri":"amqp://","src-queue":"my-queue","dest-uri":"amqp://remote-server","dest-queue":"another-queue"}').once
82     provider.create
83   end
84 end