xref: /dokuwiki/_test/tests/Search/MediauseTest.php (revision 1148921de6af6909f19cb5b30b698d0f27d7751e)
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