diff options
Diffstat (limited to 'lib/htmlpurifier/tests/HTMLPurifier/HTMLModule/FormsTest.php')
| -rw-r--r-- | lib/htmlpurifier/tests/HTMLPurifier/HTMLModule/FormsTest.php | 155 | 
1 files changed, 155 insertions, 0 deletions
diff --git a/lib/htmlpurifier/tests/HTMLPurifier/HTMLModule/FormsTest.php b/lib/htmlpurifier/tests/HTMLPurifier/HTMLModule/FormsTest.php new file mode 100644 index 000000000..5bc4c99c3 --- /dev/null +++ b/lib/htmlpurifier/tests/HTMLPurifier/HTMLModule/FormsTest.php @@ -0,0 +1,155 @@ +<?php + +class HTMLPurifier_HTMLModule_FormsTest extends HTMLPurifier_HTMLModuleHarness +{ + +    function setUp() { +        parent::setUp(); +        $this->config->set('HTML.Trusted', true); +        $this->config->set('Attr.EnableID', true); +    } + +    function testBasicUse() { +        $this->config->set('HTML.Doctype', 'HTML 4.01 Strict'); +        $this->assertResult( // need support for label for later +            ' +<form action="http://somesite.com/prog/adduser" method="post"> +    <p> +    <label>First name: </label> +              <input type="text" id="firstname" /><br /> +    <label>Last name: </label> +              <input type="text" id="lastname" /><br /> +    <label>email: </label> +              <input type="text" id="email" /><br /> +    <input type="radio" name="sex" value="Male" /> Male<br /> +    <input type="radio" name="sex" value="Female" /> Female<br /> +    <input type="submit" value="Send" /> <input type="reset" /> +    </p> +</form>' +        ); +    } + +    function testSelectOption() { +        $this->config->set('HTML.Doctype', 'HTML 4.01 Strict'); +        $this->assertResult(' +<form action="http://somesite.com/prog/component-select" method="post"> +   <p> +   <select multiple="multiple" size="4" name="component-select"> +      <option selected="selected" value="Component_1_a">Component_1</option> +      <option selected="selected" value="Component_1_b">Component_2</option> +      <option>Component_3</option> +      <option>Component_4</option> +      <option>Component_5</option> +      <option>Component_6</option> +      <option>Component_7</option> +   </select> +   <input type="submit" value="Send" /><input type="reset" /> +   </p> +</form> +        '); +    } + +    function testSelectOptgroup() { +        $this->config->set('HTML.Doctype', 'HTML 4.01 Strict'); +        $this->assertResult(' +<form action="http://somesite.com/prog/someprog" method="post"> +<p> + <select name="ComOS"> +     <option selected="selected" label="none" value="none">None</option> +     <optgroup label="PortMaster 3"> +       <option label="3.7.1" value="pm3_3.7.1">PortMaster 3 with ComOS 3.7.1</option> +       <option label="3.7" value="pm3_3.7">PortMaster 3 with ComOS 3.7</option> +       <option label="3.5" value="pm3_3.5">PortMaster 3 with ComOS 3.5</option> +     </optgroup> +     <optgroup label="PortMaster 2"> +       <option label="3.7" value="pm2_3.7">PortMaster 2 with ComOS 3.7</option> +       <option label="3.5" value="pm2_3.5">PortMaster 2 with ComOS 3.5</option> +     </optgroup> +     <optgroup label="IRX"> +       <option label="3.7R" value="IRX_3.7R">IRX with ComOS 3.7R</option> +       <option label="3.5R" value="IRX_3.5R">IRX with ComOS 3.5R</option> +     </optgroup> + </select> +</p> +</form> +        '); +    } + +    function testTextarea() { +        $this->config->set('HTML.Doctype', 'HTML 4.01 Strict'); +        $this->assertResult(' +<form action="http://somesite.com/prog/text-read" method="post"> +   <p> +   <textarea name="thetext" rows="20" cols="80"> +   First line of initial text. +   Second line of initial text. +   </textarea> +   <input type="submit" value="Send" /><input type="reset" /> +   </p> +</form> +        '); +    } + +    // label tests omitted + +    function testFieldset() { +        $this->config->set('HTML.Doctype', 'HTML 4.01 Strict'); +        $this->assertResult(' +<form action="..." method="post"> + <fieldset> +  <legend>Personal Information</legend> +  Last Name: <input name="personal_lastname" type="text" tabindex="1" /> +  First Name: <input name="personal_firstname" type="text" tabindex="2" /> +  Address: <input name="personal_address" type="text" tabindex="3" /> +  ...more personal information... + </fieldset> + <fieldset> +  <legend>Medical History</legend> +  <input name="history_illness" type="checkbox" value="Smallpox" tabindex="20" />Smallpox +  <input name="history_illness" type="checkbox" value="Mumps" tabindex="21" /> Mumps +  <input name="history_illness" type="checkbox" value="Dizziness" tabindex="22" /> Dizziness +  <input name="history_illness" type="checkbox" value="Sneezing" tabindex="23" /> Sneezing +  ...more medical history... + </fieldset> + <fieldset> +  <legend>Current Medication</legend> +  Are you currently taking any medication? +  <input name="medication_now" type="radio" value="Yes" tabindex="35" />Yes +  <input name="medication_now" type="radio" value="No" tabindex="35" />No + +  If you are currently taking medication, please indicate +  it in the space below: +  <textarea name="current_medication" rows="20" cols="50" tabindex="40"></textarea> + </fieldset> +</form> +        '); +    } + +    function testInputTransform() { +        $this->config->set('HTML.Doctype', 'XHTML 1.0 Strict'); +        $this->assertResult('<input type="checkbox" />', '<input type="checkbox" value="" />'); +    } + +    function testTextareaTransform() { +        $this->config->set('HTML.Doctype', 'HTML 4.01 Strict'); +        $this->assertResult('<textarea></textarea>', '<textarea cols="22" rows="3"></textarea>'); +    } + +    function testTextInFieldset() { +        $this->config->set('HTML.Doctype', 'HTML 4.01 Strict'); +        $this->assertResult('<fieldset>   <legend></legend>foo</fieldset>'); +    } + +    function testStrict() { +        $this->config->set('HTML.Doctype', 'HTML 4.01 Strict'); +        $this->assertResult('<form action=""></form>', ''); +    } + +    function testLegacy() { +        $this->assertResult('<form action=""></form>'); +        $this->assertResult('<form action=""><input align="left" /></form>'); +    } + +} + +// vim: et sw=4 sts=4  | 
