xref: /dokuwiki/_test/tests/inc/pageutils_findnearest.test.php (revision 1c33cec37215d0c964cf961bdbc49ae7db3657e6)
1e66d3e6dSAndreas Gohr<?php
2e66d3e6dSAndreas Gohr
3e1d9dcc8SAndreas Gohruse dokuwiki\test\mock\AuthPlugin;
4a087da71SAndreas Gohr
5e66d3e6dSAndreas Gohrclass pageutils_findnearest_test extends DokuWikiTest {
6cc529468SMichael Hamann
79c9753d6SAndreas Gohr    protected $oldAuthAcl;
8cc529468SMichael Hamann
9*1c33cec3SAndreas Gohr    function setUp() : void {
10cc529468SMichael Hamann        parent::setUp();
11cc529468SMichael Hamann        global $AUTH_ACL;
12cc529468SMichael Hamann        global $auth;
13cc529468SMichael Hamann        global $conf;
14cc529468SMichael Hamann        $conf['superuser'] = 'john';
15cc529468SMichael Hamann        $conf['useacl']    = 1;
16cc529468SMichael Hamann
17cc529468SMichael Hamann        $this->oldAuthAcl = $AUTH_ACL;
18e1d9dcc8SAndreas Gohr        $auth = new AuthPlugin();
19cc529468SMichael Hamann
20cc529468SMichael Hamann        $AUTH_ACL = array(
21cc529468SMichael Hamann            '*           @ALL           1',
22cc529468SMichael Hamann            'internal:*    @ALL           0',
23cc529468SMichael Hamann            'internal:*    max            1',
24cc529468SMichael Hamann            '*           @user          8',
25cc529468SMichael Hamann        );
26cc529468SMichael Hamann    }
27cc529468SMichael Hamann
28*1c33cec3SAndreas Gohr    function tearDown() : void {
29cc529468SMichael Hamann        global $AUTH_ACL;
30cc529468SMichael Hamann        $AUTH_ACL = $this->oldAuthAcl;
31cc529468SMichael Hamann    }
32cc529468SMichael Hamann
33e66d3e6dSAndreas Gohr    function testNoSidebar() {
34e66d3e6dSAndreas Gohr        global $ID;
35e66d3e6dSAndreas Gohr
36e66d3e6dSAndreas Gohr        $ID = 'foo:bar:baz:test';
37e66d3e6dSAndreas Gohr        $sidebar = page_findnearest('sidebar');
38e66d3e6dSAndreas Gohr        $this->assertEquals(false, $sidebar);
39e66d3e6dSAndreas Gohr    }
40e66d3e6dSAndreas Gohr
4168baa033SPhy    function testZeroID() {
4268baa033SPhy        global $ID;
4368baa033SPhy
4468baa033SPhy        saveWikiText('sidebar', 'topsidebar-test', '');
4568baa033SPhy        saveWikiText('0', 'zero-test', '');
4668baa033SPhy        saveWikiText('0:0:0', 'zero-test', '');
4768baa033SPhy
4868baa033SPhy        $ID = '0:0:0';
4968baa033SPhy        $sidebar = page_findnearest('sidebar');
5068baa033SPhy        $this->assertEquals('sidebar', $sidebar);
5168baa033SPhy
5268baa033SPhy        $sidebar = page_findnearest('0');
5368baa033SPhy        $this->assertEquals('0:0:0', $sidebar);
5468baa033SPhy
5568baa033SPhy        $ID = '0';
5668baa033SPhy        $sidebar = page_findnearest('0');
5768baa033SPhy        $this->assertEquals('0', $sidebar);
5868baa033SPhy    }
5968baa033SPhy
60e66d3e6dSAndreas Gohr    function testExistingSidebars() {
61e66d3e6dSAndreas Gohr        global $ID;
62e66d3e6dSAndreas Gohr
63e66d3e6dSAndreas Gohr        saveWikiText('sidebar', 'topsidebar-test', '');
64e66d3e6dSAndreas Gohr
65e66d3e6dSAndreas Gohr        $ID = 'foo:bar:baz:test';
66e66d3e6dSAndreas Gohr        $sidebar = page_findnearest('sidebar');
67e66d3e6dSAndreas Gohr        $this->assertEquals('sidebar', $sidebar);
68e66d3e6dSAndreas Gohr
69e66d3e6dSAndreas Gohr        $ID = 'foo';
70e66d3e6dSAndreas Gohr        $sidebar = page_findnearest('sidebar');
71e66d3e6dSAndreas Gohr        $this->assertEquals('sidebar', $sidebar);
72e66d3e6dSAndreas Gohr
73e66d3e6dSAndreas Gohr        saveWikiText('foo:bar:sidebar', 'bottomsidebar-test', '');
74e66d3e6dSAndreas Gohr
75e66d3e6dSAndreas Gohr        $ID = 'foo:bar:baz:test';
76e66d3e6dSAndreas Gohr        $sidebar = page_findnearest('sidebar');
77e66d3e6dSAndreas Gohr        $this->assertEquals('foo:bar:sidebar', $sidebar);
78e66d3e6dSAndreas Gohr
79e66d3e6dSAndreas Gohr        $ID = 'foo:bar:test';
80e66d3e6dSAndreas Gohr        $sidebar = page_findnearest('sidebar');
81e66d3e6dSAndreas Gohr        $this->assertEquals('foo:bar:sidebar', $sidebar);
82e66d3e6dSAndreas Gohr
83e66d3e6dSAndreas Gohr        $ID = 'foo';
84e66d3e6dSAndreas Gohr        $sidebar = page_findnearest('sidebar');
85e66d3e6dSAndreas Gohr        $this->assertEquals('sidebar', $sidebar);
86e66d3e6dSAndreas Gohr    }
87e66d3e6dSAndreas Gohr
88cc529468SMichael Hamann    function testACLWithSidebar() {
89cc529468SMichael Hamann        global $ID;
90cc529468SMichael Hamann        global $INPUT;
91cc529468SMichael Hamann
92cc529468SMichael Hamann        $INPUT->server->set('REMOTE_USER', 'foo');
93cc529468SMichael Hamann
94cc529468SMichael Hamann        saveWikiText('sidebar', 'top sidebar', '');
95cc529468SMichael Hamann        saveWikiText('internal:sidebar', 'internal sidebar', '');
96cc529468SMichael Hamann
97cc529468SMichael Hamann        $ID = 'internal:foo:bar';
98cc529468SMichael Hamann
99cc529468SMichael Hamann        $sidebar = page_findnearest('sidebar');
100cc529468SMichael Hamann        $this->assertEquals('sidebar', $sidebar);
101cc529468SMichael Hamann
1027c3e4a67SAndreas Gohr        $sidebar = page_findnearest('sidebar', false);
103cc529468SMichael Hamann        $this->assertEquals('internal:sidebar', $sidebar);
104cc529468SMichael Hamann
105cc529468SMichael Hamann        $INPUT->server->set('REMOTE_USER', 'max');
106cc529468SMichael Hamann
107cc529468SMichael Hamann        $sidebar = page_findnearest('sidebar');
108cc529468SMichael Hamann        $this->assertEquals('internal:sidebar', $sidebar);
109cc529468SMichael Hamann    }
110e66d3e6dSAndreas Gohr}
111