.
/**
* @package Tests
* @subpackage String
* @copyright Copyright (C) 2002 - 2012 MantisBT Team - mantisbt-dev@lists.sourceforge.net
* @link http://www.mantisbt.org
*/
class Mantis_StringTest extends PHPUnit_Framework_TestCase {
/**
* Tests string_sanitize_url()
*
* @dataProvider provider
*/
public function testStringSanitize( $in, $out )
{
$a = string_do_sanitize_url($in, false);
$this->assertEquals( $out, $a );
}
public function provider()
{
$testStrings = array(
array( '', 'index.php' ),
array( 'abc.php', 'abc.php' ),
array( 'abc.php?','abc.php'),
array( 'abc.php#a','abc.php#a'),
array( 'abc.php?abc=def','abc.php?abc=def'),
array( 'abc.php?abc=def#a','abc.php?abc=def#a'),
array( 'abc.php?abc=def&z=xyz','abc.php?abc=def&z=xyz'),
array( 'abc.php?abc=def&z=xyz','abc.php?abc=def&z=xyz'),
array( 'abc.php?abc=def&z=xyz#a','abc.php?abc=def&z=xyz#a'),
array( 'abc.php?abc=def&z=xyz#a','abc.php?abc=def&z=xyz#a'),
/* FIXME array( 'abc.php?abc=def&z=z#a','abc.php?abc=def&z=alert%28%22foo%29%22%3cz#a'), */
/* FIXME array( 'abc.php?abc=def&z=z#a','abc.php?abc=def&z=z#alert%28%22foo%22%3ca'), */
array( 'plugin.php?page=Source/index','plugin.php?page=Source%2Findex'),
array( 'plugin.php?page=Source/list&id=1','plugin.php?page=Source%2Flist&id=1'),
array( 'plugin.php?page=Source/list&id=1#abc','plugin.php?page=Source%2Flist&id=1#abc'),
);
/*
FIXME
array( $my_path.'abc.php',
array( $my_path.'abc.php?',
array( $my_path.'abc.php#a',
array( $my_path.'abc.php?abc=def',
array( $my_path.'abc.php?abc=def#a',
array( $my_path.'abc.php?abc=def&z=xyz',
array( $my_path.'abc.php?abc=def&z=xyz',
array( $my_path.'abc.php?abc=def&z=xyz#a',
array( $my_path.'abc.php?abc=def&z=xyz#a',
array( $my_path.'abc.php?abc=def&z=z#a',
array( $my_path.'abc.php?abc=def&z=z#a',
array( $my_path.'plugin.php?page=Source/index',
array( $my_path.'plugin.php?page=Source/list&id=1',
array( $my_path.'plugin.php?page=Source/list&id=1#abc',
array( 'http://www.test.my.url/'),
*/
return $testStrings;
}
}
// FIXME: hardcoced here to avoid external dependencies, should use code in string_api.php
function string_do_sanitize_url( $p_url, $p_return_absolute = false ) {
$t_url = strip_tags( urldecode( $p_url ) );
$t_path = '/';
$t_short_path = '/';
$t_pattern = '(?:/*(?P