1<?php 2 3namespace dokuwiki\test\Search; 4 5use dokuwiki\Search\Indexer; 6use dokuwiki\Search\MetadataSearch; 7 8/** 9 * Test cases for the media usage search 10 * 11 * @author Michael Hamann <michael@content-space.de> 12 */ 13class MediauseTest extends \DokuWikiTest 14{ 15 public function testInternalmedia() 16 { 17 saveWikiText('test:internalmedia_usage', '{{internalmedia.png}} {{..:internal media.png}}', 'Test initialization'); 18 (new Indexer())->addPage('test:internalmedia_usage'); 19 $search = new MetadataSearch(); 20 21 $this->assertEquals(array('test:internalmedia_usage'), $search->mediause('internal_media.png')); 22 $this->assertEquals(array('test:internalmedia_usage'), $search->mediause('test:internalmedia.png')); 23 } 24 25 public function testMediaInLinks() 26 { 27 saveWikiText('test:medialinks', '[[doku>wiki:dokuwiki|{{wiki:logo.png}}]] [[http://www.example.com|{{example.png?200x800}}]]', 'Test init'); 28 (new Indexer())->addPage('test:medialinks'); 29 $search = new MetadataSearch(); 30 31 $this->assertEquals(array('test:medialinks'), $search->mediause('wiki:logo.png')); 32 $this->assertEquals(array('test:medialinks'), $search->mediause('test:example.png')); 33 } 34 35 public function testMediaInLocalLinks() 36 { 37 saveWikiText('test:locallinks', '[[#test|{{wiki:logolocal.png}}]]', 'Test init'); 38 (new Indexer())->addPage('test:locallinks'); 39 $search = new MetadataSearch(); 40 41 $this->assertEquals(array('test:locallinks'), $search->mediause('wiki:logolocal.png')); 42 } 43 44 public function testMediaInFootnotes() 45 { 46 saveWikiText('test:media_footnotes', '(({{footnote.png?20x50}} [[foonote|{{:footlink.png}}]]))', 'Test initialization'); 47 (new Indexer())->addPage('test:media_footnotes'); 48 $search = new MetadataSearch(); 49 50 $this->assertEquals(array('test:media_footnotes'), $search->mediause('test:footnote.png')); 51 $this->assertEquals(array('test:media_footnotes'), $search->mediause('footlink.png')); 52 } 53 54 public function testMediaInHiddenPages() 55 { 56 global $conf; 57 $conf['hidepages'] = 'hidden:.*'; 58 saveWikiText('hidden:medias', '[[doku>wiki:dokuwiki|{{wiki:hiddenlogo.png}}]]', 'Test initialization'); 59 (new Indexer())->addPage('hidden:medias'); 60 $search = new MetadataSearch(); 61 62 $this->assertEquals(array(), $search->mediause('wiki:hiddenlogo.png')); 63 $this->assertEquals(array(), $search->mediause('wiki:hiddenlogo.png', false)); 64 $this->assertEquals(array('hidden:medias'), $search->mediause('wiki:hiddenlogo.png', true)); 65 } 66 67 public function testMediaInProtectedPages() 68 { 69 global $conf; 70 global $AUTH_ACL; 71 $conf['superuser'] = 'alice'; 72 $conf['useacl'] = 1; 73 74 $AUTH_ACL = array( 75 '* @ALL 8', 76 'secret:* @ALL 0', 77 ); 78 79 $_SERVER['REMOTE_USER'] = 'eve'; 80 81 saveWikiText('secret:medias', '[[doku>wiki:dokuwiki|{{wiki:secretlogo.png}}]]', 'Test initialization'); 82 (new Indexer())->addPage('secret:medias'); 83 $search = new MetadataSearch(); 84 85 $this->assertEquals(array(), $search->mediause('wiki:secretlogo.png')); 86 $this->assertEquals(array(), $search->mediause('wiki:secretlogo.png', false)); 87 $this->assertEquals(array('secret:medias'), $search->mediause('wiki:secretlogo.png', true)); 88 } 89 90 public function testMediaInDeletedPages() 91 { 92 saveWikiText('test:internalmedia_usage', '{{internalmedia.png}} {{..:internal media.png}}', 'Test initialization'); 93 (new Indexer())->addPage('test:internalmedia_usage'); 94 saveWikiText('test:internalmedia_usage', '', 'Deleted'); 95 $search = new MetadataSearch(); 96 97 $this->assertEquals(array(), $search->mediause('internal_media.png')); 98 $this->assertEquals(array(), $search->mediause('test:internalmedia.png')); 99 } 100} 101