1<?php
2
3// must be run within Dokuwiki
4if (!defined('DOKU_INC')) die();
5
6/**
7 * Test cases for the media usage index
8 *
9 * @author Michael Hamann <michael@content-space.de>
10 */
11class fultext_mediause_test extends DokuWikiTest {
12
13    public function test_internalmedia() {
14        saveWikiText('test:internalmedia_usage', '{{internalmedia.png}} {{..:internal media.png}}', 'Test initialization');
15        idx_addPage('test:internalmedia_usage');
16
17        $this->assertEquals(array('test:internalmedia_usage'), ft_mediause('internal_media.png'));
18        $this->assertEquals(array('test:internalmedia_usage'), ft_mediause('test:internalmedia.png'));
19    }
20
21    public function test_media_in_links() {
22        saveWikiText('test:medialinks', '[[doku>wiki:dokuwiki|{{wiki:logo.png}}]] [[http://www.example.com|{{example.png?200x800}}]]', 'Test init');
23        idx_addPage('test:medialinks');
24
25        $this->assertEquals(array('test:medialinks'), ft_mediause('wiki:logo.png'));
26        $this->assertEquals(array('test:medialinks'), ft_mediause('test:example.png'));
27    }
28
29    public function test_media_in_local_links() {
30        saveWikiText('test:locallinks', '[[#test|{{wiki:logolocal.png}}]]', 'Test init');
31        idx_addPage('test:locallinks');
32
33        $this->assertEquals(array('test:locallinks'), ft_mediause('wiki:logolocal.png'));
34    }
35
36    public function test_media_in_footnotes() {
37        saveWikiText('test:media_footnotes', '(({{footnote.png?20x50}} [[foonote|{{:footlink.png}}]]))', 'Test initialization');
38        idx_addPage('test:media_footnotes');
39
40        $this->assertEquals(array('test:media_footnotes'), ft_mediause('test:footnote.png'));
41        $this->assertEquals(array('test:media_footnotes'), ft_mediause('footlink.png'));
42    }
43
44    public function test_media_in_hidden_pages() {
45        global $conf;
46        $conf['hidepages'] = 'hidden:.*';
47        saveWikiText('hidden:medias', '[[doku>wiki:dokuwiki|{{wiki:hiddenlogo.png}}]]', 'Test initialization');
48        idx_addPage('hidden:medias');
49
50        $this->assertEquals(array(), ft_mediause('wiki:hiddenlogo.png'));
51        $this->assertEquals(array(), ft_mediause('wiki:hiddenlogo.png', false));
52        $this->assertEquals(array('hidden:medias'), ft_mediause('wiki:hiddenlogo.png', true));
53    }
54
55    public function test_media_in_protected_pages() {
56        global $conf;
57        global $AUTH_ACL;
58        $conf['superuser'] = 'alice';
59        $conf['useacl']    = 1;
60
61        $AUTH_ACL = array(
62            '*           @ALL           8',
63            'secret:*      @ALL           0',
64        );
65
66        $_SERVER['REMOTE_USER'] = 'eve';
67
68        saveWikiText('secret:medias', '[[doku>wiki:dokuwiki|{{wiki:secretlogo.png}}]]', 'Test initialization');
69        idx_addPage('secret:medias');
70
71        $this->assertEquals(array(), ft_mediause('wiki:secretlogo.png'));
72        $this->assertEquals(array(), ft_mediause('wiki:secretlogo.png', false));
73        $this->assertEquals(array('secret:medias'), ft_mediause('wiki:secretlogo.png', true));
74    }
75
76    public function test_media_in_deleted_pages() {
77        saveWikiText('test:internalmedia_usage', '{{internalmedia.png}} {{..:internal media.png}}', 'Test initialization');
78        idx_addPage('test:internalmedia_usage');
79        saveWikiText('test:internalmedia_usage', '', 'Deleted');
80
81        $this->assertEquals(array(), ft_mediause('internal_media.png'));
82        $this->assertEquals(array(), ft_mediause('test:internalmedia.png'));
83    }
84}
85