aboutsummaryrefslogtreecommitdiffstats
path: root/lib/htmlpurifier/tests/HTMLPurifier/ChildDef/RequiredTest.php
blob: 8bb4f45ee24035017ccbc694760fdfe6bed79831 (plain) (blame)
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
<?php

class HTMLPurifier_ChildDef_RequiredTest extends HTMLPurifier_ChildDefHarness
{

    function testPrepareString() {
        $def = new HTMLPurifier_ChildDef_Required('foobar | bang |gizmo');
        $this->assertIdentical($def->elements,
          array(
            'foobar' => true
           ,'bang'   => true
           ,'gizmo'  => true
          ));
    }

    function testPrepareArray() {
        $def = new HTMLPurifier_ChildDef_Required(array('href', 'src'));
        $this->assertIdentical($def->elements,
          array(
            'href' => true
           ,'src'  => true
          ));
    }

    function setUp() {
        parent::setUp();
        $this->obj = new HTMLPurifier_ChildDef_Required('dt | dd');
    }

    function testEmptyInput() {
        $this->assertResult('', false);
    }

    function testRemoveIllegalTagsAndElements() {
        $this->assertResult(
          '<dt>Term</dt>Text in an illegal location'.
             '<dd>Definition</dd><b>Illegal tag</b>',
          '<dt>Term</dt><dd>Definition</dd>');
        $this->assertResult('How do you do!', false);
    }

    function testIgnoreWhitespace() {
        // whitespace shouldn't trigger it
        $this->assertResult("\n<dd>Definition</dd>       ");
    }

    function testPreserveWhitespaceAfterRemoval() {
        $this->assertResult(
          '<dd>Definition</dd>       <b></b>       ',
          '<dd>Definition</dd>              '
        );
    }

    function testDeleteNodeIfOnlyWhitespace() {
        $this->assertResult("\t      ", false);
    }

    function testPCDATAAllowed() {
        $this->obj = new HTMLPurifier_ChildDef_Required('#PCDATA | b');
        $this->assertResult('Out <b>Bold text</b><img />', 'Out <b>Bold text</b>');
    }

    function testPCDATAAllowedWithEscaping() {
        $this->obj = new HTMLPurifier_ChildDef_Required('#PCDATA | b');
        $this->config->set('Core.EscapeInvalidChildren', true);
        $this->assertResult(
            'Out <b>Bold text</b><img />',
            'Out <b>Bold text</b>&lt;img /&gt;'
        );
    }
}

// vim: et sw=4 sts=4