3 describe Puppet::Type.type(:rabbitmq_parameter).provider(:rabbitmqctl) do
5 Puppet::Type.type(:rabbitmq_parameter).new(
6 name: 'documentumShovel@/',
7 component_name: 'shovel',
9 'src-uri' => 'amqp://',
10 'src-queue' => 'my-queue',
11 'dest-uri' => 'amqp://remote-server',
12 'dest-queue' => 'another-queue'
14 provider: described_class.name
17 let(:provider) { resource.provider }
20 described_class.instance_variable_set(:@parameters, nil)
23 context 'has "@" in parameter name' do
25 Puppet::Type.type(:rabbitmq_parameter).new(
26 name: 'documentumShovel@/',
27 component_name: 'shovel',
29 'src-uri' => 'amqp://',
30 'src-queue' => 'my-queue',
31 'dest-uri' => 'amqp://remote-server',
32 'dest-queue' => 'another-queue'
34 provider: described_class.name
37 let(:provider) { described_class.new(resource) }
40 expect(provider.should_parameter).to eq('documentumShovel')
44 expect(provider.should_vhost).to eq('/')
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})
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"}
57 expect(provider.exists?).to eq(component_name: 'shovel',
59 'src-uri' => 'amqp://',
60 'src-queue' => 'my-queue',
61 'dest-uri' => 'amqp://remote-server',
62 'dest-queue' => 'another-queue'
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)
71 it 'destroys parameter' do
72 provider.expects(:rabbitmqctl).with('clear_parameter', '-p', '/', 'shovel', 'documentumShovel')
76 it 'onlies call set_parameter once' do
77 provider.expects(:rabbitmqctl).with('set_parameter',
81 '{"src-uri":"amqp://","src-queue":"my-queue","dest-uri":"amqp://remote-server","dest-queue":"another-queue"}').once