2 describe Puppet::Type.type(:rabbitmq_user_permissions) do
4 Puppet::Type.type(:rabbitmq_user_permissions).new(name: 'foo@bar')
7 it 'accepts a valid hostname name' do
8 perms[:name] = 'dan@bar'
9 expect(perms[:name]).to eq('dan@bar')
11 it 'requires a name' do
13 Puppet::Type.type(:rabbitmq_user_permissions).new({})
14 end.to raise_error(Puppet::Error, 'Title or name must be provided')
16 it 'fails when names dont have a @' do
19 end.to raise_error(Puppet::Error, %r{Valid values match})
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)
25 it "should accept a valid regex for #{param}" do
27 expect(perms[param]).to eq('.*?')
29 it "should accept an empty string for #{param}" do
31 expect(perms[param]).to eq('')
33 it "should not accept invalid regex for #{param}" do
36 end.to raise_error(Puppet::Error, %r{Invalid regexp})
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')
45 Puppet::Type.type(k).new(name: 'test', password: 'pass')
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 }
51 rel = perm.autorequire[0]
52 expect(rel.source.ref).to eq(vhost.ref)
53 expect(rel.target.ref).to eq(perm.ref)
56 # rubocop:enable RSpec/MultipleExpectations