xref: /dokuwiki/_test/tests/Search/BacklinksTest.php (revision c651c34be7c4cf4969c59d38345113e03e76a1ad)
16734bb8cSAndreas Gohr<?php
26734bb8cSAndreas Gohr
36734bb8cSAndreas Gohrnamespace dokuwiki\test\Search;
46734bb8cSAndreas Gohr
56734bb8cSAndreas Gohruse dokuwiki\Search\Indexer;
66734bb8cSAndreas Gohruse dokuwiki\Search\MetadataSearch;
76734bb8cSAndreas Gohr
86734bb8cSAndreas Gohr/**
96734bb8cSAndreas Gohr * Test cases for the backlinks search
106734bb8cSAndreas Gohr *
116734bb8cSAndreas Gohr * @author Michael Hamann <michael@content-space.de>
126734bb8cSAndreas Gohr */
136734bb8cSAndreas Gohrclass BacklinksTest extends \DokuWikiTest
146734bb8cSAndreas Gohr{
156734bb8cSAndreas Gohr    public function testInternallink()
166734bb8cSAndreas Gohr    {
176734bb8cSAndreas Gohr        saveWikiText('test:internallinks', '[[internälLink]] [[..:internal link]]', 'Test initialization');
186734bb8cSAndreas Gohr        (new Indexer())->addPage('test:internallinks');
196734bb8cSAndreas Gohr        $search = new MetadataSearch();
206734bb8cSAndreas Gohr
216734bb8cSAndreas Gohr        $this->assertEquals(array('test:internallinks'), $search->backlinks('internal_link'));
226734bb8cSAndreas Gohr        $this->assertEquals(array('test:internallinks'), $search->backlinks('test:internaellink'));
236734bb8cSAndreas Gohr    }
246734bb8cSAndreas Gohr
256734bb8cSAndreas Gohr    public function testLinksInFootnotes()
266734bb8cSAndreas Gohr    {
276734bb8cSAndreas Gohr        saveWikiText('test:link_footnotes', '(([[footnote]] [[:foÖtnotel]]))', 'Test initialization');
286734bb8cSAndreas Gohr        (new Indexer())->addPage('test:link_footnotes');
296734bb8cSAndreas Gohr        $search = new MetadataSearch();
306734bb8cSAndreas Gohr
316734bb8cSAndreas Gohr        $this->assertEquals(array('test:link_footnotes'), $search->backlinks('test:footnote'));
326734bb8cSAndreas Gohr        $this->assertEquals(array('test:link_footnotes'), $search->backlinks('fooetnotel'));
336734bb8cSAndreas Gohr    }
346734bb8cSAndreas Gohr
356734bb8cSAndreas Gohr    public function testLinksInHiddenPages()
366734bb8cSAndreas Gohr    {
376734bb8cSAndreas Gohr        global $conf;
386734bb8cSAndreas Gohr        $conf['hidepages'] = 'hidden:.*';
396734bb8cSAndreas Gohr        saveWikiText('hidden:links', '[[wiki:hiddenlink|linktitle]]', 'Test initialization');
406734bb8cSAndreas Gohr        (new Indexer())->addPage('hidden:links');
416734bb8cSAndreas Gohr        saveWikiText('visible:links', '[[wiki:hiddenlink]]', 'Test initialization');
426734bb8cSAndreas Gohr        (new Indexer())->addPage('visible:links');
436734bb8cSAndreas Gohr        $search = new MetadataSearch();
446734bb8cSAndreas Gohr
456734bb8cSAndreas Gohr        $this->assertEquals(array('visible:links'), $search->backlinks('wiki:hiddenlink'));
466734bb8cSAndreas Gohr        $this->assertEquals(array('visible:links'), $search->backlinks('wiki:hiddenlink', false));
476734bb8cSAndreas Gohr        $this->assertEquals(array('hidden:links', 'visible:links'), $search->backlinks('wiki:hiddenlink', true));
486734bb8cSAndreas Gohr    }
496734bb8cSAndreas Gohr
506734bb8cSAndreas Gohr    public function testLinksInProtectedPages()
516734bb8cSAndreas Gohr    {
526734bb8cSAndreas Gohr        global $conf;
536734bb8cSAndreas Gohr        global $AUTH_ACL;
546734bb8cSAndreas Gohr        $conf['superuser'] = 'alice';
556734bb8cSAndreas Gohr        $conf['useacl']    = 1;
566734bb8cSAndreas Gohr
576734bb8cSAndreas Gohr        $AUTH_ACL = array(
586734bb8cSAndreas Gohr            '*           @ALL           8',
596734bb8cSAndreas Gohr            'secret:*      @ALL           0',
606734bb8cSAndreas Gohr        );
616734bb8cSAndreas Gohr
626734bb8cSAndreas Gohr        $_SERVER['REMOTE_USER'] = 'eve';
636734bb8cSAndreas Gohr
646734bb8cSAndreas Gohr        saveWikiText('secret:links', '[[wiki:secretlink]]', 'Test initialization');
656734bb8cSAndreas Gohr        (new Indexer())->addPage('secret:links');
666734bb8cSAndreas Gohr        saveWikiText('public:links', '[[wiki:secretlink]]', 'Test initialization');
676734bb8cSAndreas Gohr        (new Indexer())->addPage('public:links');
686734bb8cSAndreas Gohr        $search = new MetadataSearch();
696734bb8cSAndreas Gohr
706734bb8cSAndreas Gohr        $this->assertEquals(array('public:links'), $search->backlinks('wiki:secretlink'));
716734bb8cSAndreas Gohr        $this->assertEquals(array('public:links'), $search->backlinks('wiki:secretlink', false));
726734bb8cSAndreas Gohr        $this->assertEquals(array('public:links', 'secret:links'), $search->backlinks('wiki:secretlink', true));
736734bb8cSAndreas Gohr    }
746734bb8cSAndreas Gohr
756734bb8cSAndreas Gohr    public function testLinksInDeletedPages()
766734bb8cSAndreas Gohr    {
77*c651c34bSAndreas Gohr        saveWikiText('test:deletedlinks', '[[deletedtarget]] [[..:deleted target]]', 'Test initialization');
78*c651c34bSAndreas Gohr        (new Indexer())->addPage('test:deletedlinks');
796734bb8cSAndreas Gohr        $search = new MetadataSearch();
806734bb8cSAndreas Gohr
81*c651c34bSAndreas Gohr        $this->assertEquals(array('test:deletedlinks'), $search->backlinks('test:deletedtarget'));
82*c651c34bSAndreas Gohr        $this->assertEquals(array('test:deletedlinks'), $search->backlinks('deleted_target'));
836734bb8cSAndreas Gohr
84*c651c34bSAndreas Gohr        saveWikiText('test:deletedlinks', '', 'Deleted');
856734bb8cSAndreas Gohr
86*c651c34bSAndreas Gohr        $this->assertEquals(array(), $search->backlinks('test:deletedtarget'));
87*c651c34bSAndreas Gohr        $this->assertEquals(array(), $search->backlinks('deleted_target'));
886734bb8cSAndreas Gohr    }
896734bb8cSAndreas Gohr
906734bb8cSAndreas Gohr    public function testParameters()
916734bb8cSAndreas Gohr    {
926734bb8cSAndreas Gohr        saveWikiText('test:links', '[[wiki:syntax?do=export_raw]] [[:web:scripts:add_vhost.sh?do=export_raw]]', 'Init tests');
936734bb8cSAndreas Gohr        (new Indexer())->addPage('test:links');
946734bb8cSAndreas Gohr        $search = new MetadataSearch();
956734bb8cSAndreas Gohr
966734bb8cSAndreas Gohr        $this->assertEquals(array('test:links'), $search->backlinks('wiki:syntax'));
976734bb8cSAndreas Gohr        $this->assertEquals(array('test:links'), $search->backlinks('web:scripts:add_vhost.sh'));
986734bb8cSAndreas Gohr    }
996734bb8cSAndreas Gohr}
100