1*6734bb8cSAndreas Gohr<?php 2*6734bb8cSAndreas Gohr 3*6734bb8cSAndreas Gohrnamespace dokuwiki\test\Search; 4*6734bb8cSAndreas Gohr 5*6734bb8cSAndreas Gohruse dokuwiki\Search\Indexer; 6*6734bb8cSAndreas Gohruse dokuwiki\Search\MetadataSearch; 7*6734bb8cSAndreas Gohr 8*6734bb8cSAndreas Gohr/** 9*6734bb8cSAndreas Gohr * Test cases for the backlinks search 10*6734bb8cSAndreas Gohr * 11*6734bb8cSAndreas Gohr * @author Michael Hamann <michael@content-space.de> 12*6734bb8cSAndreas Gohr */ 13*6734bb8cSAndreas Gohrclass BacklinksTest extends \DokuWikiTest 14*6734bb8cSAndreas Gohr{ 15*6734bb8cSAndreas Gohr public function testInternallink() 16*6734bb8cSAndreas Gohr { 17*6734bb8cSAndreas Gohr saveWikiText('test:internallinks', '[[internälLink]] [[..:internal link]]', 'Test initialization'); 18*6734bb8cSAndreas Gohr (new Indexer())->addPage('test:internallinks'); 19*6734bb8cSAndreas Gohr $search = new MetadataSearch(); 20*6734bb8cSAndreas Gohr 21*6734bb8cSAndreas Gohr $this->assertEquals(array('test:internallinks'), $search->backlinks('internal_link')); 22*6734bb8cSAndreas Gohr $this->assertEquals(array('test:internallinks'), $search->backlinks('test:internaellink')); 23*6734bb8cSAndreas Gohr } 24*6734bb8cSAndreas Gohr 25*6734bb8cSAndreas Gohr public function testLinksInFootnotes() 26*6734bb8cSAndreas Gohr { 27*6734bb8cSAndreas Gohr saveWikiText('test:link_footnotes', '(([[footnote]] [[:foÖtnotel]]))', 'Test initialization'); 28*6734bb8cSAndreas Gohr (new Indexer())->addPage('test:link_footnotes'); 29*6734bb8cSAndreas Gohr $search = new MetadataSearch(); 30*6734bb8cSAndreas Gohr 31*6734bb8cSAndreas Gohr $this->assertEquals(array('test:link_footnotes'), $search->backlinks('test:footnote')); 32*6734bb8cSAndreas Gohr $this->assertEquals(array('test:link_footnotes'), $search->backlinks('fooetnotel')); 33*6734bb8cSAndreas Gohr } 34*6734bb8cSAndreas Gohr 35*6734bb8cSAndreas Gohr public function testLinksInHiddenPages() 36*6734bb8cSAndreas Gohr { 37*6734bb8cSAndreas Gohr global $conf; 38*6734bb8cSAndreas Gohr $conf['hidepages'] = 'hidden:.*'; 39*6734bb8cSAndreas Gohr saveWikiText('hidden:links', '[[wiki:hiddenlink|linktitle]]', 'Test initialization'); 40*6734bb8cSAndreas Gohr (new Indexer())->addPage('hidden:links'); 41*6734bb8cSAndreas Gohr saveWikiText('visible:links', '[[wiki:hiddenlink]]', 'Test initialization'); 42*6734bb8cSAndreas Gohr (new Indexer())->addPage('visible:links'); 43*6734bb8cSAndreas Gohr $search = new MetadataSearch(); 44*6734bb8cSAndreas Gohr 45*6734bb8cSAndreas Gohr $this->assertEquals(array('visible:links'), $search->backlinks('wiki:hiddenlink')); 46*6734bb8cSAndreas Gohr $this->assertEquals(array('visible:links'), $search->backlinks('wiki:hiddenlink', false)); 47*6734bb8cSAndreas Gohr $this->assertEquals(array('hidden:links', 'visible:links'), $search->backlinks('wiki:hiddenlink', true)); 48*6734bb8cSAndreas Gohr } 49*6734bb8cSAndreas Gohr 50*6734bb8cSAndreas Gohr public function testLinksInProtectedPages() 51*6734bb8cSAndreas Gohr { 52*6734bb8cSAndreas Gohr global $conf; 53*6734bb8cSAndreas Gohr global $AUTH_ACL; 54*6734bb8cSAndreas Gohr $conf['superuser'] = 'alice'; 55*6734bb8cSAndreas Gohr $conf['useacl'] = 1; 56*6734bb8cSAndreas Gohr 57*6734bb8cSAndreas Gohr $AUTH_ACL = array( 58*6734bb8cSAndreas Gohr '* @ALL 8', 59*6734bb8cSAndreas Gohr 'secret:* @ALL 0', 60*6734bb8cSAndreas Gohr ); 61*6734bb8cSAndreas Gohr 62*6734bb8cSAndreas Gohr $_SERVER['REMOTE_USER'] = 'eve'; 63*6734bb8cSAndreas Gohr 64*6734bb8cSAndreas Gohr saveWikiText('secret:links', '[[wiki:secretlink]]', 'Test initialization'); 65*6734bb8cSAndreas Gohr (new Indexer())->addPage('secret:links'); 66*6734bb8cSAndreas Gohr saveWikiText('public:links', '[[wiki:secretlink]]', 'Test initialization'); 67*6734bb8cSAndreas Gohr (new Indexer())->addPage('public:links'); 68*6734bb8cSAndreas Gohr $search = new MetadataSearch(); 69*6734bb8cSAndreas Gohr 70*6734bb8cSAndreas Gohr $this->assertEquals(array('public:links'), $search->backlinks('wiki:secretlink')); 71*6734bb8cSAndreas Gohr $this->assertEquals(array('public:links'), $search->backlinks('wiki:secretlink', false)); 72*6734bb8cSAndreas Gohr $this->assertEquals(array('public:links', 'secret:links'), $search->backlinks('wiki:secretlink', true)); 73*6734bb8cSAndreas Gohr } 74*6734bb8cSAndreas Gohr 75*6734bb8cSAndreas Gohr public function testLinksInDeletedPages() 76*6734bb8cSAndreas Gohr { 77*6734bb8cSAndreas Gohr saveWikiText('test:internallinks', '[[internallink]] [[..:internal link]]', 'Test initialization'); 78*6734bb8cSAndreas Gohr (new Indexer())->addPage('test:internallinks'); 79*6734bb8cSAndreas Gohr $search = new MetadataSearch(); 80*6734bb8cSAndreas Gohr 81*6734bb8cSAndreas Gohr $this->assertEquals(array('test:internallinks'), $search->backlinks('test:internallink')); 82*6734bb8cSAndreas Gohr $this->assertEquals(array('test:internallinks'), $search->backlinks('internal_link')); 83*6734bb8cSAndreas Gohr 84*6734bb8cSAndreas Gohr saveWikiText('test:internallinks', '', 'Deleted'); 85*6734bb8cSAndreas Gohr 86*6734bb8cSAndreas Gohr $this->assertEquals(array(), $search->backlinks('test:internallink')); 87*6734bb8cSAndreas Gohr $this->assertEquals(array(), $search->backlinks('internal_link')); 88*6734bb8cSAndreas Gohr } 89*6734bb8cSAndreas Gohr 90*6734bb8cSAndreas Gohr public function testParameters() 91*6734bb8cSAndreas Gohr { 92*6734bb8cSAndreas Gohr saveWikiText('test:links', '[[wiki:syntax?do=export_raw]] [[:web:scripts:add_vhost.sh?do=export_raw]]', 'Init tests'); 93*6734bb8cSAndreas Gohr (new Indexer())->addPage('test:links'); 94*6734bb8cSAndreas Gohr $search = new MetadataSearch(); 95*6734bb8cSAndreas Gohr 96*6734bb8cSAndreas Gohr $this->assertEquals(array('test:links'), $search->backlinks('wiki:syntax')); 97*6734bb8cSAndreas Gohr $this->assertEquals(array('test:links'), $search->backlinks('web:scripts:add_vhost.sh')); 98*6734bb8cSAndreas Gohr } 99*6734bb8cSAndreas Gohr} 100