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