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