1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
<?php
require_once DOKU_INC.'inc/init.php';
require_once DOKU_INC.'inc/auth.php';
class auth_acl_test extends UnitTestCase {
function teardown() {
global $conf;
global $AUTH_ACL;
unset($conf);
unset($AUTH_ACL);
}
function test_restricted(){
global $conf;
global $AUTH_ACL;
$conf['superuser'] = 'john';
$conf['useacl'] = 1;
$AUTH_ACL = array(
'* @ALL 0',
'* @user 8',
);
// anonymous user
$this->assertEqual(auth_aclcheck('page', '',array()), AUTH_NONE);
$this->assertEqual(auth_aclcheck('namespace:page','',array()), AUTH_NONE);
$this->assertEqual(auth_aclcheck('namespace:*', '',array()), AUTH_NONE);
// user with no matching group
$this->assertEqual(auth_aclcheck('page', 'jill',array('foo')), AUTH_NONE);
$this->assertEqual(auth_aclcheck('namespace:page','jill',array('foo')), AUTH_NONE);
$this->assertEqual(auth_aclcheck('namespace:*', 'jill',array('foo')), AUTH_NONE);
// user with matching group
$this->assertEqual(auth_aclcheck('page', 'jill',array('foo','user')), AUTH_UPLOAD);
$this->assertEqual(auth_aclcheck('namespace:page','jill',array('foo','user')), AUTH_UPLOAD);
$this->assertEqual(auth_aclcheck('namespace:*', 'jill',array('foo','user')), AUTH_UPLOAD);
// super user
$this->assertEqual(auth_aclcheck('page', 'john',array('foo')), AUTH_ADMIN);
$this->assertEqual(auth_aclcheck('namespace:page','john',array('foo')), AUTH_ADMIN);
$this->assertEqual(auth_aclcheck('namespace:*', 'john',array('foo')), AUTH_ADMIN);
}
function test_restricted_ropage(){
global $conf;
global $AUTH_ACL;
$conf['superuser'] = 'john';
$conf['useacl'] = 1;
$AUTH_ACL = array(
'* @ALL 0',
'* @user 8',
'namespace:page @user 1',
);
// anonymous user
$this->assertEqual(auth_aclcheck('page', '',array()), AUTH_NONE);
$this->assertEqual(auth_aclcheck('namespace:page','',array()), AUTH_NONE);
$this->assertEqual(auth_aclcheck('namespace:*', '',array()), AUTH_NONE);
// user with no matching group
$this->assertEqual(auth_aclcheck('page', 'jill',array('foo')), AUTH_NONE);
$this->assertEqual(auth_aclcheck('namespace:page','jill',array('foo')), AUTH_NONE);
$this->assertEqual(auth_aclcheck('namespace:*', 'jill',array('foo')), AUTH_NONE);
// user with matching group
$this->assertEqual(auth_aclcheck('page', 'jill',array('foo','user')), AUTH_UPLOAD);
$this->assertEqual(auth_aclcheck('namespace:page','jill',array('foo','user')), AUTH_READ);
$this->assertEqual(auth_aclcheck('namespace:*', 'jill',array('foo','user')), AUTH_UPLOAD);
// super user
$this->assertEqual(auth_aclcheck('page', 'john',array('foo')), AUTH_ADMIN);
$this->assertEqual(auth_aclcheck('namespace:page','john',array('foo')), AUTH_ADMIN);
$this->assertEqual(auth_aclcheck('namespace:*', 'john',array('foo')), AUTH_ADMIN);
}
function test_aclexample(){
global $conf;
global $AUTH_ACL;
$conf['superuser'] = 'john';
$conf['useacl'] = 1;
$AUTH_ACL = array(
'* @ALL 4',
'* bigboss 16',
'start @ALL 1',
'marketing:* @marketing 8',
'devel:* @ALL 0',
'devel:* @devel 8',
'devel:* bigboss 16',
'devel:funstuff bigboss 0',
'devel:* @marketing 1',
'devel:marketing @marketing 2',
);
$this->assertEqual(auth_aclcheck('page', '' ,array()) , AUTH_CREATE);
$this->assertEqual(auth_aclcheck('page', 'bigboss' ,array('foo')) , AUTH_DELETE);
$this->assertEqual(auth_aclcheck('page', 'jill' ,array('marketing')) , AUTH_CREATE);
$this->assertEqual(auth_aclcheck('page', 'jane' ,array('devel')) , AUTH_CREATE);
$this->assertEqual(auth_aclcheck('start', '' ,array()) , AUTH_READ);
$this->assertEqual(auth_aclcheck('start', 'bigboss' ,array('foo')) , AUTH_READ);
$this->assertEqual(auth_aclcheck('start', 'jill' ,array('marketing')) , AUTH_READ);
$this->assertEqual(auth_aclcheck('start', 'jane' ,array('devel')) , AUTH_READ);
$this->assertEqual(auth_aclcheck('marketing:page', '' ,array()) , AUTH_CREATE);
$this->assertEqual(auth_aclcheck('marketing:page', 'bigboss' ,array('foo')) , AUTH_DELETE);
$this->assertEqual(auth_aclcheck('marketing:page', 'jill' ,array('marketing')) , AUTH_UPLOAD);
$this->assertEqual(auth_aclcheck('marketing:page', 'jane' ,array('devel')) , AUTH_CREATE);
$this->assertEqual(auth_aclcheck('devel:page', '' ,array()) , AUTH_NONE);
$this->assertEqual(auth_aclcheck('devel:page', 'bigboss' ,array('foo')) , AUTH_DELETE);
$this->assertEqual(auth_aclcheck('devel:page', 'jill' ,array('marketing')) , AUTH_READ);
$this->assertEqual(auth_aclcheck('devel:page', 'jane' ,array('devel')) , AUTH_UPLOAD);
$this->assertEqual(auth_aclcheck('devel:funstuff', '' ,array()) , AUTH_NONE);
$this->assertEqual(auth_aclcheck('devel:funstuff', 'bigboss' ,array('foo')) , AUTH_NONE);
$this->assertEqual(auth_aclcheck('devel:funstuff', 'jill' ,array('marketing')) , AUTH_READ);
$this->assertEqual(auth_aclcheck('devel:funstuff', 'jane' ,array('devel')) , AUTH_UPLOAD);
$this->assertEqual(auth_aclcheck('devel:marketing', '' ,array()) , AUTH_NONE);
$this->assertEqual(auth_aclcheck('devel:marketing', 'bigboss' ,array('foo')) , AUTH_DELETE);
$this->assertEqual(auth_aclcheck('devel:marketing', 'jill' ,array('marketing')) , AUTH_EDIT);
$this->assertEqual(auth_aclcheck('devel:marketing', 'jane' ,array('devel')) , AUTH_UPLOAD);
}
}
//Setup VIM: ex: et ts=4 enc=utf-8 :
|