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