]> git.proxmox.com Git - pve-access-control.git/blame - test/perm-test6.pl
d/control: bump debhelper compat to >= 12
[pve-access-control.git] / test / perm-test6.pl
CommitLineData
4bc17477
DM
1#!/usr/bin/perl -w
2
3use strict;
4use PVE::Tools;
5use PVE::AccessControl;
6use PVE::RPCEnvironment;
7use Getopt::Long;
8
9my $rpcenv = PVE::RPCEnvironment->init('cli');
10
11my $cfgfn = "test6.cfg";
12$rpcenv->init_request(userconfig => $cfgfn);
13
14sub check_roles {
15 my ($user, $path, $expected_result) = @_;
16
7e8bcaa7
FG
17 my $roles = PVE::AccessControl::roles($rpcenv->{user_cfg}, $user, $path);
18 my $res = join(',', sort keys %$roles);
4bc17477
DM
19
20 die "unexpected result\nneed '${expected_result}'\ngot '$res'\n"
21 if $res ne $expected_result;
22
23 print "ROLES:$path:$user:$res\n";
24}
25
a31f1d85
FG
26sub check_permissions {
27 my ($user, $path, $expected_result) = @_;
28
29 my $perm = $rpcenv->permissions($user, $path);
30 my $res = join(',', sort keys %$perm);
31
32 die "unexpected result\nneed '${expected_result}'\ngot '$res'\n"
33 if $res ne $expected_result;
34
35 $perm = $rpcenv->permissions($user, $path);
36 $res = join(',', sort keys %$perm);
37 die "unexpected result (compiled)\nneed '${expected_result}'\ngot '$res'\n"
38 if $res ne $expected_result;
39
40 print "PERM:$path:$user:$res\n";
41}
42
4bc17477
DM
43check_roles('User1@pve', '', '');
44check_roles('User2@pve', '', '');
45check_roles('User3@pve', '', '');
46check_roles('User4@pve', '', '');
47
48check_roles('User1@pve', '/vms', 'RoleTEST1');
49check_roles('User2@pve', '/vms', 'RoleTEST1');
50check_roles('User3@pve', '/vms', 'NoAccess');
51check_roles('User4@pve', '/vms', '');
52
53check_roles('User1@pve', '/vms/100', 'RoleTEST1');
54check_roles('User2@pve', '/vms/100', 'RoleTEST1');
55check_roles('User3@pve', '/vms/100', 'NoAccess');
56check_roles('User4@pve', '/vms/100', '');
57
21f523a5 58check_roles('User1@pve', '/vms/300', 'RoleTEST1');
4bc17477
DM
59check_roles('User2@pve', '/vms/300', 'RoleTEST1');
60check_roles('User3@pve', '/vms/300', 'NoAccess');
21f523a5 61check_roles('User4@pve', '/vms/300', 'RoleTEST1');
4bc17477 62
a31f1d85
FG
63check_permissions('User1@pve', '/vms/500', 'VM.Console,VM.PowerMgmt');
64check_permissions('User2@pve', '/vms/500', 'VM.Console,VM.PowerMgmt');
65# without pool
4bc17477 66check_roles('User3@pve', '/vms/500', 'NoAccess');
a31f1d85
FG
67# with pool
68check_permissions('User3@pve', '/vms/500', '');
69# without pool
4bc17477 70check_roles('User4@pve', '/vms/500', '');
a31f1d85
FG
71# with pool
72check_permissions('User4@pve', '/vms/500', '');
73
4bc17477 74
a31f1d85
FG
75check_permissions('User1@pve', '/vms/600', 'VM.Console');
76check_permissions('User2@pve', '/vms/600', 'VM.Console');
77check_permissions('User3@pve', '/vms/600', '');
78check_permissions('User4@pve', '/vms/600', 'VM.Console');
4bc17477 79
a31f1d85
FG
80check_permissions('User1@pve', '/storage/store1', 'VM.Console,VM.PowerMgmt');
81check_permissions('User2@pve', '/storage/store1', 'VM.PowerMgmt');
82check_permissions('User3@pve', '/storage/store1', 'VM.PowerMgmt');
83check_permissions('User4@pve', '/storage/store1', 'VM.Console');
4bc17477 84
a31f1d85
FG
85check_permissions('User1@pve', '/storage/store2', 'VM.PowerMgmt');
86check_permissions('User2@pve', '/storage/store2', 'VM.PowerMgmt');
87check_permissions('User3@pve', '/storage/store2', 'VM.PowerMgmt');
88check_permissions('User4@pve', '/storage/store2', '');
4bc17477
DM
89
90print "all tests passed\n";
91
92exit (0);