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