xref: /dokuwiki/_test/tests/inc/auth_admincheck.test.php (revision 8d43d15e4855598b2cc4bada51bcd4777954aa2b)
1f8369d7dSTobias Sarnowski<?php
2f8369d7dSTobias Sarnowski
34bdfdb32SPhyuse dokuwiki\test\mock\AuthCaseInsensitivePlugin;
4*8d43d15eSAndreas Gohruse dokuwiki\test\mock\AuthPlugin;
5f8369d7dSTobias Sarnowski
6*8d43d15eSAndreas Gohrclass auth_admin_test extends DokuWikiTest
7*8d43d15eSAndreas Gohr{
8f8369d7dSTobias Sarnowski
9f8369d7dSTobias Sarnowski    private $oldauth;
10f8369d7dSTobias Sarnowski
11*8d43d15eSAndreas Gohr    function setUp()
12*8d43d15eSAndreas Gohr    {
13ff576d93SDominik Eckelmann        parent::setUp();
14f8369d7dSTobias Sarnowski        global $auth;
15f8369d7dSTobias Sarnowski        $this->oldauth = $auth;
16f8369d7dSTobias Sarnowski    }
17f8369d7dSTobias Sarnowski
18*8d43d15eSAndreas Gohr    function setSensitive()
19*8d43d15eSAndreas Gohr    {
20f8369d7dSTobias Sarnowski        global $auth;
21e1d9dcc8SAndreas Gohr        $auth = new AuthPlugin();
22f8369d7dSTobias Sarnowski    }
23f8369d7dSTobias Sarnowski
24*8d43d15eSAndreas Gohr    function setInSensitive()
25*8d43d15eSAndreas Gohr    {
26f8369d7dSTobias Sarnowski        global $auth;
274bdfdb32SPhy        $auth = new AuthCaseInsensitivePlugin();
28f8369d7dSTobias Sarnowski    }
29f8369d7dSTobias Sarnowski
30*8d43d15eSAndreas Gohr    function teardown()
31*8d43d15eSAndreas Gohr    {
32f8369d7dSTobias Sarnowski        global $auth;
33f8369d7dSTobias Sarnowski        global $AUTH_ACL;
34f8369d7dSTobias Sarnowski        unset($AUTH_ACL);
35f8369d7dSTobias Sarnowski        $auth = $this->oldauth;
36f8369d7dSTobias Sarnowski    }
37f8369d7dSTobias Sarnowski
38*8d43d15eSAndreas Gohr    function test_ismanager_insensitive()
39*8d43d15eSAndreas Gohr    {
40f8369d7dSTobias Sarnowski        $this->setInSensitive();
41f8369d7dSTobias Sarnowski        global $conf;
42f8369d7dSTobias Sarnowski        $conf['superuser'] = 'john,@admin,@Mötly Görls, Dörte';
43f8369d7dSTobias Sarnowski        $conf['manager'] = 'john,@managers,doe, @Mötly Böys, Dänny';
44f8369d7dSTobias Sarnowski
45f8369d7dSTobias Sarnowski        // anonymous user
46*8d43d15eSAndreas Gohr        $this->assertFalse(auth_ismanager('jill', null, false, true));
47f8369d7dSTobias Sarnowski
48f8369d7dSTobias Sarnowski        // admin or manager users
49*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('john', null, false, true));
50*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('doe', null, false, true));
51f8369d7dSTobias Sarnowski
52*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('dörte', null, false, true));
53*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('dänny', null, false, true));
54f8369d7dSTobias Sarnowski
55f8369d7dSTobias Sarnowski        // admin or manager groups
56*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('admin'), false, true));
57*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('managers'), false, true));
58f8369d7dSTobias Sarnowski
59*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('mötly görls'), false, true));
60*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('mötly böys'), false, true));
61f8369d7dSTobias Sarnowski    }
62f8369d7dSTobias Sarnowski
63*8d43d15eSAndreas Gohr    function test_isadmin_insensitive()
64*8d43d15eSAndreas Gohr    {
65f8369d7dSTobias Sarnowski        $this->setInSensitive();
66f8369d7dSTobias Sarnowski        global $conf;
67f8369d7dSTobias Sarnowski        $conf['superuser'] = 'john,@admin,doe,@roots';
68f8369d7dSTobias Sarnowski
69f8369d7dSTobias Sarnowski        // anonymous user
70*8d43d15eSAndreas Gohr        $this->assertFalse(auth_ismanager('jill', null, true, true));
71f8369d7dSTobias Sarnowski
72f8369d7dSTobias Sarnowski        // admin user
73*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('john', null, true, true));
74*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('doe', null, true, true));
75f8369d7dSTobias Sarnowski
76f8369d7dSTobias Sarnowski        // admin groups
77*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('admin'), true, true));
78*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('roots'), true, true));
79*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('john', array('admin'), true, true));
80*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('doe', array('admin'), true, true));
81f8369d7dSTobias Sarnowski    }
82f8369d7dSTobias Sarnowski
83*8d43d15eSAndreas Gohr    function test_ismanager_sensitive()
84*8d43d15eSAndreas Gohr    {
85f8369d7dSTobias Sarnowski        $this->setSensitive();
86f8369d7dSTobias Sarnowski        global $conf;
87f8369d7dSTobias Sarnowski        $conf['superuser'] = 'john,@admin,@Mötly Görls, Dörte';
88f8369d7dSTobias Sarnowski        $conf['manager'] = 'john,@managers,doe, @Mötly Böys, Dänny';
89f8369d7dSTobias Sarnowski
90f8369d7dSTobias Sarnowski        // anonymous user
91*8d43d15eSAndreas Gohr        $this->assertFalse(auth_ismanager('jill', null, false, true));
92f8369d7dSTobias Sarnowski
93f8369d7dSTobias Sarnowski        // admin or manager users
94*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('john', null, false, true));
95*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('doe', null, false, true));
96f8369d7dSTobias Sarnowski
97*8d43d15eSAndreas Gohr        $this->assertFalse(auth_ismanager('dörte', null, false, true));
98*8d43d15eSAndreas Gohr        $this->assertFalse(auth_ismanager('dänny', null, false, true));
99f8369d7dSTobias Sarnowski
100f8369d7dSTobias Sarnowski        // admin or manager groups
101*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('admin'), false, true));
102*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('managers'), false, true));
103f8369d7dSTobias Sarnowski
104*8d43d15eSAndreas Gohr        $this->assertFalse(auth_ismanager('jill', array('mötly görls'), false, true));
105*8d43d15eSAndreas Gohr        $this->assertFalse(auth_ismanager('jill', array('mötly böys'), false, true));
106f8369d7dSTobias Sarnowski    }
107f8369d7dSTobias Sarnowski
108*8d43d15eSAndreas Gohr    function test_isadmin_sensitive()
109*8d43d15eSAndreas Gohr    {
110f8369d7dSTobias Sarnowski        $this->setSensitive();
111f8369d7dSTobias Sarnowski        global $conf;
112f8369d7dSTobias Sarnowski        $conf['superuser'] = 'john,@admin,doe,@roots';
113f8369d7dSTobias Sarnowski
114f8369d7dSTobias Sarnowski        // anonymous user
115*8d43d15eSAndreas Gohr        $this->assertFalse(auth_ismanager('jill', null, true, true));
116f8369d7dSTobias Sarnowski
117f8369d7dSTobias Sarnowski        // admin user
118*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('john', null, true, true));
119*8d43d15eSAndreas Gohr        $this->assertFalse(auth_ismanager('Doe', null, true, true));
120f8369d7dSTobias Sarnowski
121f8369d7dSTobias Sarnowski        // admin groups
122*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('admin'), true, true));
123*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('roots'), true, true));
124*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('john', array('admin'), true, true));
125*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('doe', array('admin'), true, true));
126*8d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('Doe', array('admin'), true, true));
127f8369d7dSTobias Sarnowski    }
128f8369d7dSTobias Sarnowski
129f8369d7dSTobias Sarnowski}
130