xref: /dokuwiki/_test/tests/inc/auth_admincheck.test.php (revision 1c33cec37215d0c964cf961bdbc49ae7db3657e6)
1f8369d7dSTobias Sarnowski<?php
2f8369d7dSTobias Sarnowski
34bdfdb32SPhyuse dokuwiki\test\mock\AuthCaseInsensitivePlugin;
48d43d15eSAndreas Gohruse dokuwiki\test\mock\AuthPlugin;
5f8369d7dSTobias Sarnowski
68d43d15eSAndreas Gohrclass auth_admin_test extends DokuWikiTest
78d43d15eSAndreas Gohr{
8f8369d7dSTobias Sarnowski
9f8369d7dSTobias Sarnowski    private $oldauth;
10f8369d7dSTobias Sarnowski
11*1c33cec3SAndreas Gohr    function setUp() : void
128d43d15eSAndreas Gohr    {
13ff576d93SDominik Eckelmann        parent::setUp();
14f8369d7dSTobias Sarnowski        global $auth;
15f8369d7dSTobias Sarnowski        $this->oldauth = $auth;
16f8369d7dSTobias Sarnowski    }
17f8369d7dSTobias Sarnowski
188d43d15eSAndreas Gohr    function setSensitive()
198d43d15eSAndreas Gohr    {
20f8369d7dSTobias Sarnowski        global $auth;
21e1d9dcc8SAndreas Gohr        $auth = new AuthPlugin();
22f8369d7dSTobias Sarnowski    }
23f8369d7dSTobias Sarnowski
248d43d15eSAndreas Gohr    function setInSensitive()
258d43d15eSAndreas Gohr    {
26f8369d7dSTobias Sarnowski        global $auth;
274bdfdb32SPhy        $auth = new AuthCaseInsensitivePlugin();
28f8369d7dSTobias Sarnowski    }
29f8369d7dSTobias Sarnowski
30*1c33cec3SAndreas Gohr    function tearDown() : void
318d43d15eSAndreas Gohr    {
32f8369d7dSTobias Sarnowski        global $auth;
33f8369d7dSTobias Sarnowski        global $AUTH_ACL;
34f8369d7dSTobias Sarnowski        unset($AUTH_ACL);
35f8369d7dSTobias Sarnowski        $auth = $this->oldauth;
36f8369d7dSTobias Sarnowski    }
37f8369d7dSTobias Sarnowski
388d43d15eSAndreas Gohr    function test_ismanager_insensitive()
398d43d15eSAndreas 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
468d43d15eSAndreas Gohr        $this->assertFalse(auth_ismanager('jill', null, false, true));
47f8369d7dSTobias Sarnowski
48f8369d7dSTobias Sarnowski        // admin or manager users
498d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('john', null, false, true));
508d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('doe', null, false, true));
51f8369d7dSTobias Sarnowski
528d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('dörte', null, false, true));
538d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('dänny', null, false, true));
54f8369d7dSTobias Sarnowski
55f8369d7dSTobias Sarnowski        // admin or manager groups
568d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('admin'), false, true));
578d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('managers'), false, true));
58f8369d7dSTobias Sarnowski
598d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('mötly görls'), false, true));
608d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('mötly böys'), false, true));
61f8369d7dSTobias Sarnowski    }
62f8369d7dSTobias Sarnowski
638d43d15eSAndreas Gohr    function test_isadmin_insensitive()
648d43d15eSAndreas Gohr    {
65f8369d7dSTobias Sarnowski        $this->setInSensitive();
66f8369d7dSTobias Sarnowski        global $conf;
67f8369d7dSTobias Sarnowski        $conf['superuser'] = 'john,@admin,doe,@roots';
68f8369d7dSTobias Sarnowski
69f8369d7dSTobias Sarnowski        // anonymous user
708d43d15eSAndreas Gohr        $this->assertFalse(auth_ismanager('jill', null, true, true));
71f8369d7dSTobias Sarnowski
72f8369d7dSTobias Sarnowski        // admin user
738d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('john', null, true, true));
748d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('doe', null, true, true));
75f8369d7dSTobias Sarnowski
76f8369d7dSTobias Sarnowski        // admin groups
778d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('admin'), true, true));
788d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('roots'), true, true));
798d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('john', array('admin'), true, true));
808d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('doe', array('admin'), true, true));
81f8369d7dSTobias Sarnowski    }
82f8369d7dSTobias Sarnowski
838d43d15eSAndreas Gohr    function test_ismanager_sensitive()
848d43d15eSAndreas 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
918d43d15eSAndreas Gohr        $this->assertFalse(auth_ismanager('jill', null, false, true));
92f8369d7dSTobias Sarnowski
93f8369d7dSTobias Sarnowski        // admin or manager users
948d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('john', null, false, true));
958d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('doe', null, false, true));
96f8369d7dSTobias Sarnowski
978d43d15eSAndreas Gohr        $this->assertFalse(auth_ismanager('dörte', null, false, true));
988d43d15eSAndreas Gohr        $this->assertFalse(auth_ismanager('dänny', null, false, true));
99f8369d7dSTobias Sarnowski
100f8369d7dSTobias Sarnowski        // admin or manager groups
1018d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('admin'), false, true));
1028d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('managers'), false, true));
103f8369d7dSTobias Sarnowski
1048d43d15eSAndreas Gohr        $this->assertFalse(auth_ismanager('jill', array('mötly görls'), false, true));
1058d43d15eSAndreas Gohr        $this->assertFalse(auth_ismanager('jill', array('mötly böys'), false, true));
106f8369d7dSTobias Sarnowski    }
107f8369d7dSTobias Sarnowski
1088d43d15eSAndreas Gohr    function test_isadmin_sensitive()
1098d43d15eSAndreas Gohr    {
110f8369d7dSTobias Sarnowski        $this->setSensitive();
111f8369d7dSTobias Sarnowski        global $conf;
112f8369d7dSTobias Sarnowski        $conf['superuser'] = 'john,@admin,doe,@roots';
113f8369d7dSTobias Sarnowski
114f8369d7dSTobias Sarnowski        // anonymous user
1158d43d15eSAndreas Gohr        $this->assertFalse(auth_ismanager('jill', null, true, true));
116f8369d7dSTobias Sarnowski
117f8369d7dSTobias Sarnowski        // admin user
1188d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('john', null, true, true));
1198d43d15eSAndreas Gohr        $this->assertFalse(auth_ismanager('Doe', null, true, true));
120f8369d7dSTobias Sarnowski
121f8369d7dSTobias Sarnowski        // admin groups
1228d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('admin'), true, true));
1238d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('jill', array('roots'), true, true));
1248d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('john', array('admin'), true, true));
1258d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('doe', array('admin'), true, true));
1268d43d15eSAndreas Gohr        $this->assertTrue(auth_ismanager('Doe', array('admin'), true, true));
127f8369d7dSTobias Sarnowski    }
128f8369d7dSTobias Sarnowski
129f8369d7dSTobias Sarnowski}
130