3 RSpec.configure do |config|
4 config.mock_with :mocha
6 describe 'Puppet::Type.type(:rabbitmq_user_permissions).provider(:rabbitmqctl)' do
8 @provider_class = Puppet::Type.type(:rabbitmq_user_permissions).provider(:rabbitmqctl)
9 @resource = Puppet::Type::Rabbitmq_user_permissions.new(
12 @provider = @provider_class.new(@resource)
15 @provider_class.instance_variable_set(:@users, nil)
17 it 'should match user permissions from list' do
18 @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
21 @provider.exists?.should == {:configure=>"1", :write=>"2", :read=>"3"}
23 it 'should match user permissions with empty columns' do
24 @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
27 @provider.exists?.should == {:configure=>"", :write=>"", :read=>"3"}
29 it 'should not match user permissions with more than 3 columns' do
30 @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
33 expect { @provider.exists? }.to raise_error(Puppet::Error, /cannot parse line from list_user_permissions/)
35 it 'should not match an empty list' do
36 @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
38 @provider.exists?.should == nil
40 it 'should create default permissions' do
41 @provider.instance_variable_set(:@should_vhost, "bar")
42 @provider.instance_variable_set(:@should_user, "foo")
43 @provider.expects(:rabbitmqctl).with('set_permissions', '-p', 'bar', 'foo', "''", "''", "''")
46 it 'should destroy permissions' do
47 @provider.instance_variable_set(:@should_vhost, "bar")
48 @provider.instance_variable_set(:@should_user, "foo")
49 @provider.expects(:rabbitmqctl).with('clear_permissions', '-p', 'bar', 'foo')
52 {:configure_permission => '1', :write_permission => '2', :read_permission => '3'}.each do |k,v|
53 it "should be able to retrieve #{k}" do
54 @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
57 @provider.send(k).should == v
60 {:configure_permission => '1', :write_permission => '2', :read_permission => '3'}.each do |k,v|
61 it "should be able to retrieve #{k} after exists has been called" do
62 @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
66 @provider.send(k).should == v
69 {:configure_permission => ['foo', '2', '3'],
70 :read_permission => ['1', '2', 'foo'],
71 :write_permission => ['1', 'foo', '3']
72 }.each do |perm, columns|
73 it "should be able to sync #{perm}" do
74 @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
77 @provider.resource[perm] = 'foo'
78 @provider.expects(:rabbitmqctl).with('set_permissions', '-p', 'bar', 'foo', *columns)
79 @provider.send("#{perm}=".to_sym, 'foo')
82 it 'should only call set_permissions once' do
83 @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
86 @provider.resource[:configure_permission] = 'foo'
87 @provider.resource[:read_permission] = 'foo'
88 @provider.expects(:rabbitmqctl).with('set_permissions', '-p', 'bar', 'foo', 'foo', '2', 'foo').once
89 @provider.configure_permission='foo'
90 @provider.read_permission='foo'