prosody: posix_acl is fighting with the prosody module about proper modes; remove...
[mirror/dsa-puppet.git] / 3rdparty / modules / posix_acl / spec / unit / puppet / type / acl_spec.rb
1 require 'spec_helper'
2
3 # rubocop:disable RSpec/MultipleExpectations
4 acl_type = Puppet::Type.type(:posix_acl)
5
6 describe acl_type do
7   context 'when not setting parameters' do
8     it 'fails without permissions' do
9       expect do
10         acl_type.new name: '/tmp/foo'
11       end.to raise_error
12     end
13   end
14   context 'when setting parameters' do
15     it 'works with a correct permission parameter' do
16       resource = acl_type.new name: '/tmp/foo', permission: ['user:root:rwx']
17       expect(resource[:name]).to eq('/tmp/foo')
18       expect(resource[:permission]).to eq(['user:root:rwx'])
19     end
20     it 'converts a permission string to an array' do
21       resource = acl_type.new name: '/tmp/foo', permission: 'user:root:rwx'
22       expect(resource[:name]).to eq('/tmp/foo')
23       expect(resource[:permission]).to eq(['user:root:rwx'])
24     end
25     it 'converts the u: shorcut to user:' do
26       resource = acl_type.new name: '/tmp/foo', permission: ['u:root:rwx']
27       expect(resource[:name]).to eq('/tmp/foo')
28       expect(resource[:permission]).to eq(['user:root:rwx'])
29     end
30     it 'converts the g: shorcut to group:' do
31       resource = acl_type.new name: '/tmp/foo', permission: ['g:root:rwx']
32       expect(resource[:name]).to eq('/tmp/foo')
33       expect(resource[:permission]).to eq(['group:root:rwx'])
34     end
35     it 'converts the m: shorcut to mask:' do
36       resource = acl_type.new name: '/tmp/foo', permission: ['m::rwx']
37       expect(resource[:name]).to eq('/tmp/foo')
38       expect(resource[:permission]).to eq(['mask::rwx'])
39     end
40     it 'converts the o: shorcut to other:' do
41       resource = acl_type.new name: '/tmp/foo', permission: ['o::rwx']
42       expect(resource[:name]).to eq('/tmp/foo')
43       expect(resource[:permission]).to eq(['other::rwx'])
44     end
45     it 'has the "set" action by default' do
46       resource = acl_type.new name: '/tmp/foo', permission: ['o::rwx']
47       expect(resource[:name]).to eq('/tmp/foo')
48       expect(resource[:action]).to eq(:set)
49     end
50     it 'accepts an action "set"' do
51       resource = acl_type.new name: '/tmp/foo', permission: ['o::rwx'], action: :set
52       expect(resource[:name]).to eq('/tmp/foo')
53       expect(resource[:action]).to eq(:set)
54     end
55     it 'accepts an action "purge"' do
56       resource = acl_type.new name: '/tmp/foo', permission: ['o::rwx'], action: :purge
57       expect(resource[:name]).to eq('/tmp/foo')
58       expect(resource[:action]).to eq(:purge)
59     end
60     it 'accepts an action "unset"' do
61       resource = acl_type.new name: '/tmp/foo', permission: ['o::rwx'], action: :unset
62       expect(resource[:name]).to eq('/tmp/foo')
63       expect(resource[:action]).to eq(:unset)
64     end
65     it 'accepts an action "exact"' do
66       resource = acl_type.new name: '/tmp/foo', permission: ['o::rwx'], action: :exact
67       expect(resource[:name]).to eq('/tmp/foo')
68       expect(resource[:action]).to eq(:exact)
69     end
70     it 'has path as namevar' do
71       resource = acl_type.new name: '/tmp/foo', permission: ['o::rwx']
72       expect(resource[:name]).to eq('/tmp/foo')
73       expect(resource[:path]).to eq(resource[:name])
74     end
75     it 'accepts a path parameter' do
76       resource = acl_type.new path: '/tmp/foo', permission: ['o::rwx'], action: :exact
77       expect(resource[:path]).to eq('/tmp/foo')
78       expect(resource[:name]).to eq(resource[:path])
79     end
80     it 'is not recursive by default' do
81       resource = acl_type.new name: '/tmp/foo', permission: ['o::rwx']
82       expect(resource[:name]).to eq('/tmp/foo')
83       expect(resource[:recursive]).to eq(:false)
84     end
85     it 'accepts a recursive "true"' do
86       resource = acl_type.new name: '/tmp/foo', permission: ['o::rwx'], recursive: true
87       expect(resource[:name]).to eq('/tmp/foo')
88       expect(resource[:recursive]).to eq(:true)
89     end
90     it 'accepts a recurse "false"' do
91       resource = acl_type.new name: '/tmp/foo', permission: ['o::rwx'], recursive: false
92       expect(resource[:name]).to eq('/tmp/foo')
93       expect(resource[:recursive]).to eq(:false)
94     end
95     it 'gets recursemode lazy by default' do
96       resource = acl_type.new name: '/tmp/foo', permission: ['o::rwx']
97       expect(resource[:name]).to eq('/tmp/foo')
98       expect(resource[:recursemode]).to eq(:lazy)
99     end
100     it 'accepts a recursemode deep' do
101       resource = acl_type.new name: '/tmp/foo', permission: ['o::rwx'], recursemode: 'deep'
102       expect(resource[:name]).to eq('/tmp/foo')
103       expect(resource[:recursemode]).to eq(:deep)
104     end
105     it 'accepts a recursemode lazy' do
106       resource = acl_type.new name: '/tmp/foo', permission: ['o::rwx'], recursemode: :lazy
107       expect(resource[:name]).to eq('/tmp/foo')
108       expect(resource[:recursemode]).to eq(:lazy)
109     end
110     it 'fails with a wrong action' do
111       expect do
112         acl_type.new name: '/tmp/foo', permission: ['o::rwx'], action: :xset
113       end.to raise_error
114     end
115     it 'fails with a wrong recurselimit' do
116       expect do
117         acl_type.new name: '/tmp/foo', permission: ['o::rwx'], recurselimit: :a
118       end.to raise_error
119     end
120     it 'fails with a wrong first argument' do
121       expect do
122         acl_type.new name: '/tmp/foo', permission: ['wrong::rwx']
123       end.to raise_error
124     end
125     it 'fails with a wrong last argument' do
126       expect do
127         acl_type.new name: '/tmp/foo', permission: ['user::-_-']
128       end.to raise_error
129     end
130   end
131
132   context 'when removing default parameters' do
133     basic_perms = ['user:foo:rwx', 'group:foo:rwx']
134     advanced_perms = ['user:foo:rwx', 'group:foo:rwx', 'default:user:foo:---']
135     advanced_perms_results = ['user:foo:rwx', 'group:foo:rwx']
136     mysql_perms = [
137       'user:mysql:rwx',
138       'd:user:mysql:rw',
139       'mask::rwx'
140     ]
141     mysql_perms_results = [
142       'user:mysql:rwx',
143       'mask::rwx'
144     ]
145     it 'does not do anything with no defaults' do
146       expect(acl_type.pick_default_perms(basic_perms)).to match_array(basic_perms)
147     end
148     it 'removes defaults' do
149       expect(acl_type.pick_default_perms(advanced_perms)).to match_array(advanced_perms_results)
150     end
151     it 'removes defaults with d:' do
152       expect(acl_type.pick_default_perms(mysql_perms)).to match_array(mysql_perms_results)
153     end
154   end
155 end
156 # rubocop:enable RSpec/MultipleExpectations