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