xref: /dokuwiki/_test/tests/inc/pageutils_findnearest.test.php (revision ccc4c71ca88c25bcefb7f42eb01f0c040487e3a9)
1<?php
2
3use dokuwiki\test\mock\DokuWiki_Auth_Plugin;
4
5class pageutils_findnearest_test extends DokuWikiTest {
6
7    protected $oldAuthAcl;
8
9    function setUp() {
10        parent::setUp();
11        global $AUTH_ACL;
12        global $auth;
13        global $conf;
14        $conf['superuser'] = 'john';
15        $conf['useacl']    = 1;
16
17        $this->oldAuthAcl = $AUTH_ACL;
18        $auth = new DokuWiki_Auth_Plugin();
19
20        $AUTH_ACL = array(
21            '*           @ALL           1',
22            'internal:*    @ALL           0',
23            'internal:*    max            1',
24            '*           @user          8',
25        );
26    }
27
28    function tearDown() {
29        global $AUTH_ACL;
30        $AUTH_ACL = $this->oldAuthAcl;
31    }
32
33    function testNoSidebar() {
34        global $ID;
35
36        $ID = 'foo:bar:baz:test';
37        $sidebar = page_findnearest('sidebar');
38        $this->assertEquals(false, $sidebar);
39    }
40
41    function testExistingSidebars() {
42        global $ID;
43
44        saveWikiText('sidebar', 'topsidebar-test', '');
45
46        $ID = 'foo:bar:baz:test';
47        $sidebar = page_findnearest('sidebar');
48        $this->assertEquals('sidebar', $sidebar);
49
50        $ID = 'foo';
51        $sidebar = page_findnearest('sidebar');
52        $this->assertEquals('sidebar', $sidebar);
53
54        saveWikiText('foo:bar:sidebar', 'bottomsidebar-test', '');
55
56        $ID = 'foo:bar:baz:test';
57        $sidebar = page_findnearest('sidebar');
58        $this->assertEquals('foo:bar:sidebar', $sidebar);
59
60        $ID = 'foo:bar:test';
61        $sidebar = page_findnearest('sidebar');
62        $this->assertEquals('foo:bar:sidebar', $sidebar);
63
64        $ID = 'foo';
65        $sidebar = page_findnearest('sidebar');
66        $this->assertEquals('sidebar', $sidebar);
67    }
68
69    function testACLWithSidebar() {
70        global $ID;
71        global $INPUT;
72
73        $INPUT->server->set('REMOTE_USER', 'foo');
74
75        saveWikiText('sidebar', 'top sidebar', '');
76        saveWikiText('internal:sidebar', 'internal sidebar', '');
77
78        $ID = 'internal:foo:bar';
79
80        $sidebar = page_findnearest('sidebar');
81        $this->assertEquals('sidebar', $sidebar);
82
83        $sidebar = page_findnearest('sidebar', false);
84        $this->assertEquals('internal:sidebar', $sidebar);
85
86        $INPUT->server->set('REMOTE_USER', 'max');
87
88        $sidebar = page_findnearest('sidebar');
89        $this->assertEquals('internal:sidebar', $sidebar);
90    }
91}
92