Update rabbitmq module
[mirror/dsa-puppet.git] / 3rdparty / modules / rabbitmq / spec / unit / puppet / type / rabbitmq_user_permissions_spec.rb
1 require 'spec_helper'
2 describe Puppet::Type.type(:rabbitmq_user_permissions) do
3   let(:perms) do
4     Puppet::Type.type(:rabbitmq_user_permissions).new(name: 'foo@bar')
5   end
6
7   it 'accepts a valid hostname name' do
8     perms[:name] = 'dan@bar'
9     expect(perms[:name]).to eq('dan@bar')
10   end
11   it 'requires a name' do
12     expect do
13       Puppet::Type.type(:rabbitmq_user_permissions).new({})
14     end.to raise_error(Puppet::Error, 'Title or name must be provided')
15   end
16   it 'fails when names dont have a @' do
17     expect do
18       perms[:name] = 'bar'
19     end.to raise_error(Puppet::Error, %r{Valid values match})
20   end
21   [:configure_permission, :read_permission, :write_permission].each do |param|
22     it 'does not default to anything' do
23       expect(perms[param]).to eq(nil)
24     end
25     it "should accept a valid regex for #{param}" do
26       perms[param] = '.*?'
27       expect(perms[param]).to eq('.*?')
28     end
29     it "should accept an empty string for #{param}" do
30       perms[param] = ''
31       expect(perms[param]).to eq('')
32     end
33     it "should not accept invalid regex for #{param}" do
34       expect do
35         perms[param] = '*'
36       end.to raise_error(Puppet::Error, %r{Invalid regexp})
37     end
38   end
39   # rubocop:disable RSpec/MultipleExpectations
40   { rabbitmq_vhost: 'dan@test', rabbitmq_user: 'test@dan' }.each do |k, v|
41     it "should autorequire #{k}" do
42       vhost = if k == :rabbitmq_vhost
43                 Puppet::Type.type(k).new(name: 'test')
44               else
45                 Puppet::Type.type(k).new(name: 'test', password: 'pass')
46               end
47       perm = Puppet::Type.type(:rabbitmq_user_permissions).new(name: v)
48       Puppet::Resource::Catalog.new :testing do |conf|
49         [vhost, perm].each { |resource| conf.add_resource resource }
50       end
51       rel = perm.autorequire[0]
52       expect(rel.source.ref).to eq(vhost.ref)
53       expect(rel.target.ref).to eq(perm.ref)
54     end
55   end
56   # rubocop:enable RSpec/MultipleExpectations
57 end