summaryrefslogtreecommitdiff
path: root/_test/tests/inc/fulltext_backlinks.test.php
blob: b20a16ee13164a5b93c1471315fbac5518aeacc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?php

// must be run within Dokuwiki
if (!defined('DOKU_INC')) die();

/**
 * Test cases for the link index
 *
 * @author Michael Hamann <michael@content-space.de>
 */
class fulltext_backlinks_test extends DokuWikiTest {

    public function test_internallink() {
        saveWikiText('test:internallinks', '[[internälLink]] [[..:internal link]]', 'Test initialization');
        idx_addPage('test:internallinks');

        $this->assertEquals(array('test:internallinks'), ft_backlinks('internal_link'));
        $this->assertEquals(array('test:internallinks'), ft_backlinks('test:internaellink'));
    }

    public function test_links_in_footnotes() {
        saveWikiText('test:link_footnotes', '(([[footnote]] [[:foÖtnotel]]))', 'Test initialization');
        idx_addPage('test:link_footnotes');

        $this->assertEquals(array('test:link_footnotes'), ft_backlinks('test:footnote'));
        $this->assertEquals(array('test:link_footnotes'), ft_backlinks('fooetnotel'));
    }

    public function test_links_in_hidden_pages() {
        global $conf;
        $conf['hidepages'] = 'hidden:.*';
        saveWikiText('hidden:links', '[[wiki:hiddenlink|linktitle]]', 'Test initialization');
        idx_addPage('hidden:links');
        saveWikiText('visible:links', '[[wiki:hiddenlink]]', 'Test initialization');
        idx_addPage('visible:links');

        $this->assertEquals(array('visible:links'), ft_backlinks('wiki:hiddenlink'));
        $this->assertEquals(array('visible:links'), ft_backlinks('wiki:hiddenlink', false));
        $this->assertEquals(array('hidden:links', 'visible:links'), ft_backlinks('wiki:hiddenlink', true));
    }

    public function test_links_in_protected_pages() {
        global $conf;
        global $AUTH_ACL;
        $conf['superuser'] = 'alice';
        $conf['useacl']    = 1;

        $AUTH_ACL = array(
            '*           @ALL           8',
            'secret:*      @ALL           0',
        );

        $_SERVER['REMOTE_USER'] = 'eve';

        saveWikiText('secret:links', '[[wiki:secretlink]]', 'Test initialization');
        idx_addPage('secret:links');
        saveWikiText('public:links', '[[wiki:secretlink]]', 'Test initialization');
        idx_addPage('public:links');

        $this->assertEquals(array('public:links'), ft_backlinks('wiki:secretlink'));
        $this->assertEquals(array('public:links'), ft_backlinks('wiki:secretlink', false));
        $this->assertEquals(array('public:links', 'secret:links'), ft_backlinks('wiki:secretlink', true));
    }

    public function test_links_in_deleted_pages() {
        saveWikiText('test:internallinks', '[[internallink]] [[..:internal link]]', 'Test initialization');
        idx_addPage('test:internallinks');

        $this->assertEquals(array('test:internallinks'), ft_backlinks('test:internallink'));
        $this->assertEquals(array('test:internallinks'), ft_backlinks('internal_link'));

        saveWikiText('test:internallinks', '', 'Deleted');

        $this->assertEquals(array(), ft_backlinks('test:internallink'));
        $this->assertEquals(array(), ft_backlinks('internal_link'));
    }

    function test_parameters() {
        saveWikiText('test:links', '[[wiki:syntax?do=export_raw]] [[:web:scripts:add_vhost.sh?do=export_raw]]', 'Init tests');
        idx_addPage('test:links');

        $this->assertEquals(array('test:links'), ft_backlinks('wiki:syntax'));
        $this->assertEquals(array('test:links'), ft_backlinks('web:scripts:add_vhost.sh'));
    }
}