3 describe 'Puppet::Type.type(:rabbitmq_user_permissions).provider(:rabbitmqctl)' do
5 Puppet::Type::Rabbitmq_user_permissions.new(
9 let(:provider_class) { Puppet::Type.type(:rabbitmq_user_permissions).provider(:rabbitmqctl) }
10 let(:provider) { provider_class.new(resource) }
13 provider_class.instance_variable_set(:@users, nil)
15 it 'matches user permissions from list' do
16 provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
19 expect(provider.exists?).to eq(configure: '1', write: '2', read: '3')
21 it 'matches user permissions with empty columns' do
22 provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
25 expect(provider.exists?).to eq(configure: '', write: '', read: '3')
27 it 'does not match user permissions with more than 3 columns' do
28 provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
31 expect { provider.exists? }.to raise_error(Puppet::Error, %r{cannot parse line from list_user_permissions})
33 it 'does not match an empty list' do
34 provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
36 expect(provider.exists?).to eq(nil)
38 it 'creates default permissions' do
39 provider.instance_variable_set(:@should_vhost, 'bar')
40 provider.instance_variable_set(:@should_user, 'foo')
41 provider.expects(:rabbitmqctl).with('set_permissions', '-p', 'bar', 'foo', "''", "''", "''")
44 it 'destroys permissions' do
45 provider.instance_variable_set(:@should_vhost, 'bar')
46 provider.instance_variable_set(:@should_user, 'foo')
47 provider.expects(:rabbitmqctl).with('clear_permissions', '-p', 'bar', 'foo')
50 { configure_permission: '1', write_permission: '2', read_permission: '3' }.each do |k, v|
51 it "should be able to retrieve #{k}" do
52 provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
55 expect(provider.send(k)).to eq(v)
58 { configure_permission: '1', write_permission: '2', read_permission: '3' }.each do |k, v|
59 it "should be able to retrieve #{k} after exists has been called" do
60 provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
64 expect(provider.send(k)).to eq(v)
67 { configure_permission: %w[foo 2 3],
68 read_permission: %w[1 2 foo],
69 write_permission: %w[1 foo 3] }.each do |perm, columns|
70 it "should be able to sync #{perm}" do
71 provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
74 provider.resource[perm] = 'foo'
75 provider.expects(:rabbitmqctl).with('set_permissions', '-p', 'bar', 'foo', *columns)
76 provider.send("#{perm}=".to_sym, 'foo')
79 it 'onlies call set_permissions once' do
80 provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
83 provider.resource[:configure_permission] = 'foo'
84 provider.resource[:read_permission] = 'foo'
85 provider.expects(:rabbitmqctl).with('set_permissions', '-p', 'bar', 'foo', 'foo', '2', 'foo').once
86 provider.configure_permission = 'foo'
87 provider.read_permission = 'foo'