]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/rabbitmq/spec/unit/puppet/provider/rabbitmq_user_permissions/rabbitmqctl_spec.rb
move to puppetlabs rabbitmq module
[dsa-puppet.git] / 3rdparty / modules / rabbitmq / spec / unit / puppet / provider / rabbitmq_user_permissions / rabbitmqctl_spec.rb
1 require 'puppet'
2 require 'mocha'
3 RSpec.configure do |config|
4   config.mock_with :mocha
5 end
6 describe 'Puppet::Type.type(:rabbitmq_user_permissions).provider(:rabbitmqctl)' do
7   before :each do
8     @provider_class = Puppet::Type.type(:rabbitmq_user_permissions).provider(:rabbitmqctl)
9     @resource = Puppet::Type::Rabbitmq_user_permissions.new(
10       {:name => 'foo@bar'}
11     )
12     @provider = @provider_class.new(@resource)
13   end
14   after :each do
15     @provider_class.instance_variable_set(:@users, nil)
16   end
17   it 'should match user permissions from list' do
18     @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
19 bar 1 2 3
20 EOT
21     @provider.exists?.should == {:configure=>"1", :write=>"2", :read=>"3"}
22   end
23   it 'should match user permissions with empty columns' do
24     @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
25 bar                     3
26 EOT
27     @provider.exists?.should == {:configure=>"", :write=>"", :read=>"3"}
28   end
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
31 bar 1 2 3 4
32 EOT
33     expect { @provider.exists? }.to raise_error(Puppet::Error, /cannot parse line from list_user_permissions/)
34   end
35   it 'should not match an empty list' do
36     @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
37 EOT
38     @provider.exists?.should == nil
39   end
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', "''", "''", "''")
44     @provider.create
45   end
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')
50     @provider.destroy
51   end
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
55 bar 1 2 3
56 EOT
57       @provider.send(k).should == v
58     end
59   end
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
63 bar 1 2 3
64 EOT
65       @provider.exists?
66       @provider.send(k).should == v
67     end
68   end
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
75 bar 1 2 3
76 EOT
77       @provider.resource[perm] = 'foo'
78       @provider.expects(:rabbitmqctl).with('set_permissions', '-p', 'bar', 'foo', *columns)
79       @provider.send("#{perm}=".to_sym, 'foo')
80     end
81   end
82   it 'should only call set_permissions once' do
83     @provider.class.expects(:rabbitmqctl).with('-q', 'list_user_permissions', 'foo').returns <<-EOT
84 bar 1 2 3
85 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'
91   end
92 end
93