Line 0
Link Here
|
|
|
1 |
#!/usr/bin/perl |
2 |
|
3 |
use Modern::Perl; |
4 |
use Test::MockModule; |
5 |
use Test::More tests => 133; |
6 |
|
7 |
use C4::Budgets; |
8 |
|
9 |
my $C4_Budgets_module = new Test::MockModule('C4::Budgets'); |
10 |
$C4_Budgets_module->mock('GetBudgetUsers', \&Mock_GetBudgetUsers); |
11 |
my $C4_Context_module = new Test::MockModule('C4::Context'); |
12 |
$C4_Context_module->mock('userenv', \&Mock_userenv); |
13 |
|
14 |
my %budgetusers = ( |
15 |
1 => [], |
16 |
2 => [1], |
17 |
3 => [2], |
18 |
4 => [3], |
19 |
5 => [], |
20 |
6 => [1], |
21 |
7 => [2], |
22 |
8 => [3], |
23 |
9 => [], |
24 |
10 => [1], |
25 |
11 => [2], |
26 |
12 => [3], |
27 |
13 => [], |
28 |
14 => [1], |
29 |
15 => [2], |
30 |
16 => [3], |
31 |
); |
32 |
|
33 |
my $borrower1 = { |
34 |
borrowernumber => 1 |
35 |
}; |
36 |
my $borrower2 = { |
37 |
borrowernumber => 2 |
38 |
}; |
39 |
|
40 |
my $budget1 = { |
41 |
budget_id => 1, |
42 |
budget_permission => 0, |
43 |
budget_owner_id => undef, |
44 |
budget_branchcode => undef, |
45 |
}; |
46 |
my $budget2 = { |
47 |
budget_id => 2, |
48 |
budget_permission => 0, |
49 |
budget_owner_id => undef, |
50 |
budget_branchcode => 'B1', |
51 |
}; |
52 |
my $budget3 = { |
53 |
budget_id => 3, |
54 |
budget_permission => 0, |
55 |
budget_owner_id => 1, |
56 |
budget_branchcode => undef, |
57 |
}; |
58 |
my $budget4 = { |
59 |
budget_id => 4, |
60 |
budget_permission => 0, |
61 |
budget_owner_id => 1, |
62 |
budget_branchcode => 'B1', |
63 |
}; |
64 |
my $budget5 = { |
65 |
budget_id => 5, |
66 |
budget_permission => 1, |
67 |
budget_owner_id => undef, |
68 |
budget_branchcode => undef, |
69 |
}; |
70 |
my $budget6 = { |
71 |
budget_id => 6, |
72 |
budget_permission => 1, |
73 |
budget_owner_id => undef, |
74 |
budget_branchcode => 'B1', |
75 |
}; |
76 |
my $budget7 = { |
77 |
budget_id => 7, |
78 |
budget_permission => 1, |
79 |
budget_owner_id => 1, |
80 |
budget_branchcode => undef, |
81 |
}; |
82 |
my $budget8 = { |
83 |
budget_id => 8, |
84 |
budget_permission => 1, |
85 |
budget_owner_id => 1, |
86 |
budget_branchcode => 'B1', |
87 |
}; |
88 |
my $budget9 = { |
89 |
budget_id => 9, |
90 |
budget_permission => 2, |
91 |
budget_owner_id => undef, |
92 |
budget_branchcode => undef, |
93 |
}; |
94 |
my $budget10 = { |
95 |
budget_id => 10, |
96 |
budget_permission => 2, |
97 |
budget_owner_id => undef, |
98 |
budget_branchcode => 'B1', |
99 |
}; |
100 |
my $budget11 = { |
101 |
budget_id => 11, |
102 |
budget_permission => 2, |
103 |
budget_owner_id => 1, |
104 |
budget_branchcode => undef, |
105 |
}; |
106 |
my $budget12 = { |
107 |
budget_id => 12, |
108 |
budget_permission => 2, |
109 |
budget_owner_id => 1, |
110 |
budget_branchcode => 'B1', |
111 |
}; |
112 |
my $budget13 = { |
113 |
budget_id => 13, |
114 |
budget_permission => 3, |
115 |
budget_owner_id => undef, |
116 |
budget_branchcode => undef, |
117 |
}; |
118 |
my $budget14 = { |
119 |
budget_id => 14, |
120 |
budget_permission => 3, |
121 |
budget_owner_id => undef, |
122 |
budget_branchcode => 'B1', |
123 |
}; |
124 |
my $budget15 = { |
125 |
budget_id => 15, |
126 |
budget_permission => 3, |
127 |
budget_owner_id => 1, |
128 |
budget_branchcode => undef, |
129 |
}; |
130 |
my $budget16 = { |
131 |
budget_id => 16, |
132 |
budget_permission => 3, |
133 |
budget_owner_id => 1, |
134 |
budget_branchcode => 'B1', |
135 |
}; |
136 |
|
137 |
my $userenv = {}; |
138 |
|
139 |
|
140 |
ok (CanUserModifyBudget($borrower1, $budget1, {superlibrarian => 1})); |
141 |
ok (CanUserModifyBudget($borrower1, $budget1, { |
142 |
acquisition => { |
143 |
budget_manage_all => 1 |
144 |
} |
145 |
})); |
146 |
ok (CanUserModifyBudget($borrower1, $budget1, {acquisition => 1})); |
147 |
|
148 |
ok (!CanUserModifyBudget($borrower1, $budget1, {})); |
149 |
ok (!CanUserModifyBudget($borrower1, $budget1, {acquisition => 0})); |
150 |
|
151 |
my $flags = {acquisition => {budget_modify => 1}}; |
152 |
|
153 |
$userenv->{branch} = 'B1'; |
154 |
|
155 |
# Restriction is 'none' |
156 |
ok (CanUserModifyBudget($borrower1, $budget1, $flags)); |
157 |
ok (CanUserModifyBudget($borrower1, $budget2, $flags)); |
158 |
ok (CanUserModifyBudget($borrower1, $budget3, $flags)); |
159 |
ok (CanUserModifyBudget($borrower1, $budget4, $flags)); |
160 |
ok (CanUserModifyBudget($borrower2, $budget1, $flags)); |
161 |
ok (CanUserModifyBudget($borrower2, $budget2, $flags)); |
162 |
ok (CanUserModifyBudget($borrower2, $budget3, $flags)); |
163 |
ok (CanUserModifyBudget($borrower2, $budget4, $flags)); |
164 |
|
165 |
# Restriction is 'owner' |
166 |
ok (CanUserModifyBudget($borrower1, $budget5, $flags)); |
167 |
ok (CanUserModifyBudget($borrower1, $budget6, $flags)); |
168 |
ok (CanUserModifyBudget($borrower1, $budget7, $flags)); |
169 |
ok (CanUserModifyBudget($borrower1, $budget8, $flags)); |
170 |
ok (CanUserModifyBudget($borrower2, $budget5, $flags)); |
171 |
ok (CanUserModifyBudget($borrower2, $budget6, $flags)); |
172 |
ok (!CanUserModifyBudget($borrower2, $budget7, $flags)); |
173 |
ok (!CanUserModifyBudget($borrower2, $budget8, $flags)); |
174 |
|
175 |
# Restriction is 'owner, users and library' |
176 |
ok (CanUserModifyBudget($borrower1, $budget9, $flags)); |
177 |
ok (CanUserModifyBudget($borrower1, $budget10, $flags)); |
178 |
ok (CanUserModifyBudget($borrower1, $budget11, $flags)); |
179 |
ok (CanUserModifyBudget($borrower1, $budget12, $flags)); |
180 |
ok (CanUserModifyBudget($borrower2, $budget9, $flags)); |
181 |
ok (CanUserModifyBudget($borrower2, $budget10, $flags)); |
182 |
ok (CanUserModifyBudget($borrower2, $budget11, $flags)); |
183 |
ok (CanUserModifyBudget($borrower2, $budget12, $flags)); |
184 |
|
185 |
# Restriction is 'owner and users' |
186 |
ok (CanUserModifyBudget($borrower1, $budget13, $flags)); |
187 |
ok (CanUserModifyBudget($borrower1, $budget14, $flags)); |
188 |
ok (CanUserModifyBudget($borrower1, $budget15, $flags)); |
189 |
ok (CanUserModifyBudget($borrower1, $budget16, $flags)); |
190 |
ok (CanUserModifyBudget($borrower2, $budget13, $flags)); |
191 |
ok (CanUserModifyBudget($borrower2, $budget14, $flags)); |
192 |
ok (CanUserModifyBudget($borrower2, $budget15, $flags)); |
193 |
ok (!CanUserModifyBudget($borrower2, $budget16, $flags)); |
194 |
|
195 |
|
196 |
$userenv->{branch} = 'B2'; |
197 |
|
198 |
# Restriction is 'none' |
199 |
ok (CanUserModifyBudget($borrower1, $budget1, $flags)); |
200 |
ok (CanUserModifyBudget($borrower1, $budget2, $flags)); |
201 |
ok (CanUserModifyBudget($borrower1, $budget3, $flags)); |
202 |
ok (CanUserModifyBudget($borrower1, $budget4, $flags)); |
203 |
ok (CanUserModifyBudget($borrower2, $budget1, $flags)); |
204 |
ok (CanUserModifyBudget($borrower2, $budget2, $flags)); |
205 |
ok (CanUserModifyBudget($borrower2, $budget3, $flags)); |
206 |
ok (CanUserModifyBudget($borrower2, $budget4, $flags)); |
207 |
|
208 |
# Restriction is 'owner' |
209 |
ok (CanUserModifyBudget($borrower1, $budget5, $flags)); |
210 |
ok (CanUserModifyBudget($borrower1, $budget6, $flags)); |
211 |
ok (CanUserModifyBudget($borrower1, $budget7, $flags)); |
212 |
ok (CanUserModifyBudget($borrower1, $budget8, $flags)); |
213 |
ok (CanUserModifyBudget($borrower2, $budget5, $flags)); |
214 |
ok (CanUserModifyBudget($borrower2, $budget6, $flags)); |
215 |
ok (!CanUserModifyBudget($borrower2, $budget7, $flags)); |
216 |
ok (!CanUserModifyBudget($borrower2, $budget8, $flags)); |
217 |
|
218 |
# Restriction is 'owner, users and library' |
219 |
ok (CanUserModifyBudget($borrower1, $budget9, $flags)); |
220 |
ok (CanUserModifyBudget($borrower1, $budget10, $flags)); |
221 |
ok (CanUserModifyBudget($borrower1, $budget11, $flags)); |
222 |
ok (CanUserModifyBudget($borrower1, $budget12, $flags)); |
223 |
ok (CanUserModifyBudget($borrower2, $budget9, $flags)); |
224 |
ok (CanUserModifyBudget($borrower2, $budget10, $flags)); |
225 |
ok (CanUserModifyBudget($borrower2, $budget11, $flags)); |
226 |
ok (!CanUserModifyBudget($borrower2, $budget12, $flags)); |
227 |
|
228 |
# Restriction is 'owner and users' |
229 |
ok (CanUserModifyBudget($borrower1, $budget13, $flags)); |
230 |
ok (CanUserModifyBudget($borrower1, $budget14, $flags)); |
231 |
ok (CanUserModifyBudget($borrower1, $budget15, $flags)); |
232 |
ok (CanUserModifyBudget($borrower1, $budget16, $flags)); |
233 |
ok (CanUserModifyBudget($borrower2, $budget13, $flags)); |
234 |
ok (CanUserModifyBudget($borrower2, $budget14, $flags)); |
235 |
ok (CanUserModifyBudget($borrower2, $budget15, $flags)); |
236 |
ok (!CanUserModifyBudget($borrower2, $budget16, $flags)); |
237 |
|
238 |
|
239 |
# Same tests as above, without budget_modify permission |
240 |
# All tests should failed |
241 |
$flags = {acquisition => {order_manage => 1}}; |
242 |
|
243 |
$userenv->{branch} = 'B1'; |
244 |
|
245 |
# Restriction is 'none' |
246 |
ok (!CanUserModifyBudget($borrower1, $budget1, $flags)); |
247 |
ok (!CanUserModifyBudget($borrower1, $budget2, $flags)); |
248 |
ok (!CanUserModifyBudget($borrower1, $budget3, $flags)); |
249 |
ok (!CanUserModifyBudget($borrower1, $budget4, $flags)); |
250 |
ok (!CanUserModifyBudget($borrower2, $budget1, $flags)); |
251 |
ok (!CanUserModifyBudget($borrower2, $budget2, $flags)); |
252 |
ok (!CanUserModifyBudget($borrower2, $budget3, $flags)); |
253 |
ok (!CanUserModifyBudget($borrower2, $budget4, $flags)); |
254 |
|
255 |
# Restriction is 'owner' |
256 |
ok (!CanUserModifyBudget($borrower1, $budget5, $flags)); |
257 |
ok (!CanUserModifyBudget($borrower1, $budget6, $flags)); |
258 |
ok (!CanUserModifyBudget($borrower1, $budget7, $flags)); |
259 |
ok (!CanUserModifyBudget($borrower1, $budget8, $flags)); |
260 |
ok (!CanUserModifyBudget($borrower2, $budget5, $flags)); |
261 |
ok (!CanUserModifyBudget($borrower2, $budget6, $flags)); |
262 |
ok (!CanUserModifyBudget($borrower2, $budget7, $flags)); |
263 |
ok (!CanUserModifyBudget($borrower2, $budget8, $flags)); |
264 |
|
265 |
# Restriction is 'owner, users and library' |
266 |
ok (!CanUserModifyBudget($borrower1, $budget9, $flags)); |
267 |
ok (!CanUserModifyBudget($borrower1, $budget10, $flags)); |
268 |
ok (!CanUserModifyBudget($borrower1, $budget11, $flags)); |
269 |
ok (!CanUserModifyBudget($borrower1, $budget12, $flags)); |
270 |
ok (!CanUserModifyBudget($borrower2, $budget9, $flags)); |
271 |
ok (!CanUserModifyBudget($borrower2, $budget10, $flags)); |
272 |
ok (!CanUserModifyBudget($borrower2, $budget11, $flags)); |
273 |
ok (!CanUserModifyBudget($borrower2, $budget12, $flags)); |
274 |
|
275 |
# Restriction is 'owner and users' |
276 |
ok (!CanUserModifyBudget($borrower1, $budget13, $flags)); |
277 |
ok (!CanUserModifyBudget($borrower1, $budget14, $flags)); |
278 |
ok (!CanUserModifyBudget($borrower1, $budget15, $flags)); |
279 |
ok (!CanUserModifyBudget($borrower1, $budget16, $flags)); |
280 |
ok (!CanUserModifyBudget($borrower2, $budget13, $flags)); |
281 |
ok (!CanUserModifyBudget($borrower2, $budget14, $flags)); |
282 |
ok (!CanUserModifyBudget($borrower2, $budget15, $flags)); |
283 |
ok (!CanUserModifyBudget($borrower2, $budget16, $flags)); |
284 |
|
285 |
|
286 |
$userenv->{branch} = 'B2'; |
287 |
|
288 |
# Restriction is 'none' |
289 |
ok (!CanUserModifyBudget($borrower1, $budget1, $flags)); |
290 |
ok (!CanUserModifyBudget($borrower1, $budget2, $flags)); |
291 |
ok (!CanUserModifyBudget($borrower1, $budget3, $flags)); |
292 |
ok (!CanUserModifyBudget($borrower1, $budget4, $flags)); |
293 |
ok (!CanUserModifyBudget($borrower2, $budget1, $flags)); |
294 |
ok (!CanUserModifyBudget($borrower2, $budget2, $flags)); |
295 |
ok (!CanUserModifyBudget($borrower2, $budget3, $flags)); |
296 |
ok (!CanUserModifyBudget($borrower2, $budget4, $flags)); |
297 |
|
298 |
# Restriction is 'owner' |
299 |
ok (!CanUserModifyBudget($borrower1, $budget5, $flags)); |
300 |
ok (!CanUserModifyBudget($borrower1, $budget6, $flags)); |
301 |
ok (!CanUserModifyBudget($borrower1, $budget7, $flags)); |
302 |
ok (!CanUserModifyBudget($borrower1, $budget8, $flags)); |
303 |
ok (!CanUserModifyBudget($borrower2, $budget5, $flags)); |
304 |
ok (!CanUserModifyBudget($borrower2, $budget6, $flags)); |
305 |
ok (!CanUserModifyBudget($borrower2, $budget7, $flags)); |
306 |
ok (!CanUserModifyBudget($borrower2, $budget8, $flags)); |
307 |
|
308 |
# Restriction is 'owner, users and library' |
309 |
ok (!CanUserModifyBudget($borrower1, $budget9, $flags)); |
310 |
ok (!CanUserModifyBudget($borrower1, $budget10, $flags)); |
311 |
ok (!CanUserModifyBudget($borrower1, $budget11, $flags)); |
312 |
ok (!CanUserModifyBudget($borrower1, $budget12, $flags)); |
313 |
ok (!CanUserModifyBudget($borrower2, $budget9, $flags)); |
314 |
ok (!CanUserModifyBudget($borrower2, $budget10, $flags)); |
315 |
ok (!CanUserModifyBudget($borrower2, $budget11, $flags)); |
316 |
ok (!CanUserModifyBudget($borrower2, $budget12, $flags)); |
317 |
|
318 |
# Restriction is 'owner and users' |
319 |
ok (!CanUserModifyBudget($borrower1, $budget13, $flags)); |
320 |
ok (!CanUserModifyBudget($borrower1, $budget14, $flags)); |
321 |
ok (!CanUserModifyBudget($borrower1, $budget15, $flags)); |
322 |
ok (!CanUserModifyBudget($borrower1, $budget16, $flags)); |
323 |
ok (!CanUserModifyBudget($borrower2, $budget13, $flags)); |
324 |
ok (!CanUserModifyBudget($borrower2, $budget14, $flags)); |
325 |
ok (!CanUserModifyBudget($borrower2, $budget15, $flags)); |
326 |
ok (!CanUserModifyBudget($borrower2, $budget16, $flags)); |
327 |
|
328 |
|
329 |
# Mocked subs |
330 |
|
331 |
# C4::Acquisition::GetBudgetUsers |
332 |
sub Mock_GetBudgetUsers { |
333 |
my ($budget_id) = @_; |
334 |
|
335 |
return @{ $budgetusers{$budget_id} }; |
336 |
} |
337 |
|
338 |
# C4::Context->userenv |
339 |
sub Mock_userenv { |
340 |
return $userenv; |
341 |
} |