xref: /dokuwiki/_test/tests/inc/fulltext_backlinks.test.php (revision e6ce96e7985e48b36d3e78907a536becd7ee7a85)
1<?php
2
3// must be run within Dokuwiki
4if (!defined('DOKU_INC')) die();
5
6/**
7 * Test cases for the link index
8 *
9 * @author Michael Hamann <michael@content-space.de>
10 */
11class fulltext_backlinks_test extends DokuWikiTest {
12
13    public function test_internallink() {
14        saveWikiText('test:internallinks', '[[internälLink]] [[..:internal link]]', 'Test initialization');
15        idx_addPage('test:internallinks');
16
17        $this->assertEquals(array('test:internallinks'), ft_backlinks('internal_link'));
18        $this->assertEquals(array('test:internallinks'), ft_backlinks('test:internaellink'));
19    }
20
21    public function test_links_in_footnotes() {
22        saveWikiText('test:link_footnotes', '(([[footnote]] [[:foÖtnotel]]))', 'Test initialization');
23        idx_addPage('test:link_footnotes');
24
25        $this->assertEquals(array('test:link_footnotes'), ft_backlinks('test:footnote'));
26        $this->assertEquals(array('test:link_footnotes'), ft_backlinks('fooetnotel'));
27    }
28
29    public function test_links_in_hidden_pages() {
30        global $conf;
31        $conf['hidepages'] = 'hidden:.*';
32        saveWikiText('hidden:links', '[[wiki:hiddenlink|linktitle]]', 'Test initialization');
33        idx_addPage('hidden:links');
34        saveWikiText('visible:links', '[[wiki:hiddenlink]]', 'Test initialization');
35        idx_addPage('visible:links');
36
37        $this->assertEquals(array('visible:links'), ft_backlinks('wiki:hiddenlink'));
38        $this->assertEquals(array('visible:links'), ft_backlinks('wiki:hiddenlink', false));
39        $this->assertEquals(array('hidden:links', 'visible:links'), ft_backlinks('wiki:hiddenlink', true));
40    }
41
42    public function test_links_in_protected_pages() {
43        global $conf;
44        global $AUTH_ACL;
45        $conf['superuser'] = 'alice';
46        $conf['useacl']    = 1;
47
48        $AUTH_ACL = array(
49            '*           @ALL           8',
50            'secret:*      @ALL           0',
51        );
52
53        $_SERVER['REMOTE_USER'] = 'eve';
54
55        saveWikiText('secret:links', '[[wiki:secretlink]]', 'Test initialization');
56        idx_addPage('secret:links');
57        saveWikiText('public:links', '[[wiki:secretlink]]', 'Test initialization');
58        idx_addPage('public:links');
59
60        $this->assertEquals(array('public:links'), ft_backlinks('wiki:secretlink'));
61        $this->assertEquals(array('public:links'), ft_backlinks('wiki:secretlink', false));
62        $this->assertEquals(array('public:links', 'secret:links'), ft_backlinks('wiki:secretlink', true));
63    }
64
65    public function test_links_in_deleted_pages() {
66        saveWikiText('test:internallinks', '[[internallink]] [[..:internal link]]', 'Test initialization');
67        idx_addPage('test:internallinks');
68
69        $this->assertEquals(array('test:internallinks'), ft_backlinks('test:internallink'));
70        $this->assertEquals(array('test:internallinks'), ft_backlinks('internal_link'));
71
72        saveWikiText('test:internallinks', '', 'Deleted');
73
74        $this->assertEquals(array(), ft_backlinks('test:internallink'));
75        $this->assertEquals(array(), ft_backlinks('internal_link'));
76    }
77
78    function test_parameters() {
79        saveWikiText('test:links', '[[wiki:syntax?do=export_raw]] [[:web:scripts:add_vhost.sh?do=export_raw]]', 'Init tests');
80        idx_addPage('test:links');
81
82        $this->assertEquals(array('test:links'), ft_backlinks('wiki:syntax'));
83        $this->assertEquals(array('test:links'), ft_backlinks('web:scripts:add_vhost.sh'));
84    }
85}
86