summaryrefslogtreecommitdiff
path: root/_test/tests/inc/fulltext_mediause.test.php
blob: 503b8bc84d725d9889a78b8eb482ca9ac4051256 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php

// must be run within Dokuwiki
if (!defined('DOKU_INC')) die();

/**
 * Test cases for the media usage index
 *
 * @author Michael Hamann <michael@content-space.de>
 */
class fultext_mediause_test extends DokuWikiTest {

    public function test_internalmedia() {
        saveWikiText('test:internalmedia_usage', '{{internalmedia.png}} {{..:internal media.png}}', 'Test initialization');
        idx_addPage('test:internalmedia_usage');

        $this->assertEquals(array('test:internalmedia_usage'), ft_mediause('internal_media.png'));
        $this->assertEquals(array('test:internalmedia_usage'), ft_mediause('test:internalmedia.png'));
    }

    public function test_media_in_links() {
        saveWikiText('test:medialinks', '[[doku>wiki:dokuwiki|{{wiki:logo.png}}]] [[http://www.example.com|{{example.png?200x800}}]]', 'Test init');
        idx_addPage('test:medialinks');

        $this->assertEquals(array('test:medialinks'), ft_mediause('wiki:logo.png'));
        $this->assertEquals(array('test:medialinks'), ft_mediause('test:example.png'));
    }

    public function test_media_in_local_links() {
        saveWikiText('test:locallinks', '[[#test|{{wiki:logolocal.png}}]]', 'Test init');
        idx_addPage('test:locallinks');

        $this->assertEquals(array('test:locallinks'), ft_mediause('wiki:logolocal.png'));
    }

    public function test_media_in_footnotes() {
        saveWikiText('test:media_footnotes', '(({{footnote.png?20x50}} [[foonote|{{:footlink.png}}]]))', 'Test initialization');
        idx_addPage('test:media_footnotes');

        $this->assertEquals(array('test:media_footnotes'), ft_mediause('test:footnote.png'));
        $this->assertEquals(array('test:media_footnotes'), ft_mediause('footlink.png'));
    }

    public function test_media_in_hidden_pages() {
        global $conf;
        $conf['hidepages'] = 'hidden:.*';
        saveWikiText('hidden:medias', '[[doku>wiki:dokuwiki|{{wiki:hiddenlogo.png}}]]', 'Test initialization');
        idx_addPage('hidden:medias');

        $this->assertEquals(array(), ft_mediause('wiki:hiddenlogo.png'));
        $this->assertEquals(array(), ft_mediause('wiki:hiddenlogo.png', false));
        $this->assertEquals(array('hidden:medias'), ft_mediause('wiki:hiddenlogo.png', true));
    }

    public function test_media_in_protected_pages() {
        global $conf;
        global $AUTH_ACL;
        $conf['superuser'] = 'alice';
        $conf['useacl']    = 1;

        $AUTH_ACL = array(
            '*           @ALL           8',
            'secret:*      @ALL           0',
        );

        $_SERVER['REMOTE_USER'] = 'eve';

        saveWikiText('secret:medias', '[[doku>wiki:dokuwiki|{{wiki:secretlogo.png}}]]', 'Test initialization');
        idx_addPage('secret:medias');

        $this->assertEquals(array(), ft_mediause('wiki:secretlogo.png'));
        $this->assertEquals(array(), ft_mediause('wiki:secretlogo.png', false));
        $this->assertEquals(array('secret:medias'), ft_mediause('wiki:secretlogo.png', true));
    }

    public function test_media_in_deleted_pages() {
        saveWikiText('test:internalmedia_usage', '{{internalmedia.png}} {{..:internal media.png}}', 'Test initialization');
        idx_addPage('test:internalmedia_usage');
        saveWikiText('test:internalmedia_usage', '', 'Deleted');

        $this->assertEquals(array(), ft_mediause('internal_media.png'));
        $this->assertEquals(array(), ft_mediause('test:internalmedia.png'));
    }
}