Aleksander Machniak
2012-08-27 9b05f19338e209f05386e5b13fe0a704c94062bb
Restructured tests
1 files deleted
2 files modified
3 files renamed
1 files added
255 ■■■■ changed files
tests/Framework/Mime.php 4 ●●●● patch | view | raw | blame | history
tests/Framework/Shared.php 161 ●●●●● patch | view | raw | blame | history
tests/Framework/Utils.php 36 ●●●●● patch | view | raw | blame | history
tests/Framework/VCard.php 4 ●●●● patch | view | raw | blame | history
tests/ModCss.php 39 ●●●●● patch | view | raw | blame | history
tests/bootstrap.php 2 ●●●●● patch | view | raw | blame | history
tests/phpunit.xml 9 ●●●●● patch | view | raw | blame | history
tests/Framework/Mime.php
File was renamed from tests/MailDecode.php
@@ -1,11 +1,11 @@
<?php
/**
 * Test class to test messages decoding functions
 * Test class to test rcube_mime class
 *
 * @package Tests
 */
class MailDecode extends PHPUnit_Framework_TestCase
class Framework_Mime extends PHPUnit_Framework_TestCase
{
    /**
tests/Framework/Shared.php
New file
@@ -0,0 +1,161 @@
<?php
/**
 * Test class to test rcube_shared functions
 *
 * @package Tests
 */
class Framework_Shared extends PHPUnit_Framework_TestCase
{
    /**
     * rcube_shared.inc: in_array_nocase()
     */
    function test_in_array_nocase()
    {
        $haystack = array('Test');
        $needle = 'test';
        $result = in_array_nocase($needle, $haystack);
        $this->assertTrue($result, $title);
        $result = in_array_nocase($needle, null);
        $this->assertFalse($result, $title);
    }
    /**
     * rcube_shared.inc: get_boolean()
     */
    function test_get_boolean()
    {
        $input = array(
            false, 'false', '0', 'no', 'off', 'nein', 'FALSE', '', null,
        );
        foreach ($input as $idx => $value) {
            $this->assertFalse(get_boolean($value), "Invalid result for $idx test item");
        }
        $input = array(
            true, 'true', '1', 1, 'yes', 'anything', 1000,
        );
        foreach ($input as $idx => $value) {
            $this->assertTrue(get_boolean($value), "Invalid result for $idx test item");
        }
    }
    /**
     * rcube_shared.inc: parse_bytes()
     */
    function test_parse_bytes()
    {
        $data = array(
            '1'      => 1,
            '1024'   => 1024,
            '2k'     => 2 * 1024,
            '2 k'     => 2 * 1024,
            '2kb'    => 2 * 1024,
            '2kB'    => 2 * 1024,
            '2m'     => 2 * 1048576,
            '2 m'     => 2 * 1048576,
            '2mb'    => 2 * 1048576,
            '2mB'    => 2 * 1048576,
            '2g'     => 2 * 1024 * 1048576,
            '2 g'     => 2 * 1024 * 1048576,
            '2gb'    => 2 * 1024 * 1048576,
            '2gB'    => 2 * 1024 * 1048576,
        );
        foreach ($data as $value => $expected) {
            $result = parse_bytes($value);
            $this->assertEquals($expected, $result, "Invalid parse_bytes() result for $value");
        }
    }
    /**
     * rcube_shared.inc: slashify()
     */
    function test_slashify()
    {
        $data = array(
            'test'    => 'test/',
            'test/'   => 'test/',
            ''        => '/',
            "\\"      => "\\/",
        );
        foreach ($data as $value => $expected) {
            $result = slashify($value);
            $this->assertEquals($expected, $result, "Invalid slashify() result for $value");
        }
    }
    /**
     * rcube_shared.inc: unslashify()
     */
    function test_unslashify()
    {
        $data = array(
            'test'      => 'test',
            'test/'     => 'test',
            '/'         => '',
            "\\/"       => "\\",
            'test/test' => 'test/test',
            'test//'    => 'test',
        );
        foreach ($data as $value => $expected) {
            $result = unslashify($value);
            $this->assertEquals($expected, $result, "Invalid unslashify() result for $value");
        }
    }
    /**
     * rcube_shared.inc: get_offset_sec()
     */
    function test_get_offset_sec()
    {
        $data = array(
            '1s'    => 1,
            '1m'    => 1 * 60,
            '1h'    => 1 * 60 * 60,
            '1d'    => 1 * 60 * 60 * 24,
            '1w'    => 1 * 60 * 60 * 24 * 7,
            '1y'    => (int) '1y',
            100     => 100,
            '100'   => 100,
        );
        foreach ($data as $value => $expected) {
            $result = get_offset_sec($value);
            $this->assertEquals($expected, $result, "Invalid get_offset_sec() result for $value");
        }
    }
    /**
     * rcube_shared.inc: array_keys_recursive()
     */
    function test_array_keys_recursive()
    {
        $input = array(
            'one' => array(
                'two' => array(
                    'three' => array(),
                    'four' => 'something',
                ),
            ),
            'five' => 'test',
        );
        $result     = array_keys_recursive($input);
        $input_str  = 'one,two,three,four,five';
        $result_str = implode(',', $result);
        $this->assertEquals($input_str, $result_str, "Invalid array_keys_recursive() result");
    }
}
tests/Framework/Utils.php
File was renamed from tests/Utils.php
@@ -5,7 +5,7 @@
 *
 * @package Tests
 */
class Utils extends PHPUnit_Framework_TestCase
class Framework_Utils extends PHPUnit_Framework_TestCase
{
    /**
@@ -82,4 +82,38 @@
        $this->assertFalse(rcube_utils::check_email($email, false), $title);
    }
    /**
     * rcube_utils::mod_css_styles()
     */
    function test_mod_css_styles()
    {
        $css = file_get_contents(TESTS_DIR . 'src/valid.css');
        $mod = rcube_utils::mod_css_styles($css, 'rcmbody');
        $this->assertRegExp('/#rcmbody\s+\{/', $mod, "Replace body style definition");
        $this->assertRegExp('/#rcmbody h1\s\{/', $mod, "Prefix tag styles (single)");
        $this->assertRegExp('/#rcmbody h1, #rcmbody h2, #rcmbody h3, #rcmbody textarea\s+\{/', $mod, "Prefix tag styles (multiple)");
        $this->assertRegExp('/#rcmbody \.noscript\s+\{/', $mod, "Prefix class styles");
    }
    /**
     * rcube_utils::mod_css_styles()
     */
    function test_mod_css_styles_xss()
    {
        $mod = rcube_utils::mod_css_styles("body.main2cols { background-image: url('../images/leftcol.png'); }", 'rcmbody');
        $this->assertEquals("/* evil! */", $mod, "No url() values allowed");
        $mod = rcube_utils::mod_css_styles("@import url('http://localhost/somestuff/css/master.css');", 'rcmbody');
        $this->assertEquals("/* evil! */", $mod, "No import statements");
        $mod = rcube_utils::mod_css_styles("left:expression(document.body.offsetWidth-20)", 'rcmbody');
        $this->assertEquals("/* evil! */", $mod, "No expression properties");
        $mod = rcube_utils::mod_css_styles("left:exp/*  */ression( alert(&#039;xss3&#039;) )", 'rcmbody');
        $this->assertEquals("/* evil! */", $mod, "Don't allow encoding quirks");
        $mod = rcube_utils::mod_css_styles("background:\\0075\\0072\\006c( javascript:alert(&#039;xss&#039;) )", 'rcmbody');
        $this->assertEquals("/* evil! */", $mod, "Don't allow encoding quirks (2)");
    }
}
tests/Framework/VCard.php
File was renamed from tests/VCards.php
@@ -5,12 +5,12 @@
 *
 * @package Tests
 */
class VCards extends PHPUnit_Framework_TestCase
class Framework_VCard extends PHPUnit_Framework_TestCase
{
    function _srcpath($fn)
    {
        return realpath(dirname(__FILE__) . '/src/' . $fn);
        return realpath(dirname(__FILE__) . '/../src/' . $fn);
    }
    function test_parse_one()
tests/ModCss.php
File was deleted
tests/bootstrap.php
@@ -31,3 +31,5 @@
}
require_once(INSTALL_PATH . 'program/include/iniset.php');
rcmail::get_instance()->config->set('devel_mode', false);
tests/phpunit.xml
@@ -3,13 +3,12 @@
    colors="true">
    <testsuites>
        <testsuite name="All Tests">
            <file>Framework/Mime.php</file>
            <file>Framework/Shared.php</file>
            <file>Framework/Utils.php</file>
            <file>Framework/VCard.php</file>
            <file>HtmlToText.php</file>
            <file>MailDecode.php</file>
            <file>MailFunc.php</file>
            <file>ModCss.php</file>
            <file>Shared.php</file>
            <file>Utils.php</file>
            <file>VCards.php</file>
        </testsuite>
    </testsuites>
</phpunit>