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