3 require_once 'PHPUnit/Framework.php';
9 * @copyright Copyright (c)2002 - 2007, Blue Static
13 class InputTest
extends PHPUnit_Framework_TestCase
17 public function setUp()
26 "ab\'c\'2" => "qr\'s\'"
29 'somecookie' => '"a var"',
30 'another"value"' => "isn't it cool"
39 // simulate magic quotes GPC
40 /*foreach (array($_GET, $_COOKIE) AS $array)
42 foreach ($array AS $var => $value)
44 $array["$var"] = addslashes($value);
48 require_once 'ISSO/App.php';
49 $this->fixture
= BSApp
::LoadModule('Input');
52 public function testSanitizeInputData()
54 $this->assertEquals(10, sizeof($this->fixture
->in
));
55 $this->assertEquals(2, sizeof($this->fixture
->in
['nest']));
56 $this->assertEquals('"a var"', $this->fixture
->in
['somecookie']);
57 $this->assertEquals('test\'ing', $this->fixture
->in
['nest']['"hi"']);
60 public function testEntityEncode()
62 $this->assertEquals('<a href="http://www.something.com/test.php?do=run&moo=foo">', $this->fixture
->entityEncode('<a href="http://www.something.com/test.php?do=run&moo=foo">'));
65 public function testUnsanitize()
67 $this->assertEquals('<script type="text/javascript"> alert("XSS is fun!"); </script>', $this->fixture
->unsanitize('<script type="text/javascript"> alert("XSS is fun!"); </script>'));
68 $this->assertEquals('<script type="text/javascript"> alert("XSS is fun!"); </script>', $this->fixture
->unsanitize('<script type="text/javascript"> alert("XSS is fun!"); </script>'));
69 $this->assertEquals('<script type="text/javascript"> alert("XSS is fun!"); </script>', $this->fixture
->unsanitize($this->fixture
->sanitize('<script type="text/javascript"> alert("XSS is fun!"); </script>')));
72 public function testClean()
74 $this->assertEquals(0, $this->fixture
->clean('abc', TYPE_INT
));
75 $this->assertEquals(-1, $this->fixture
->clean('-1', TYPE_INT
));
76 $this->assertEquals(4, $this->fixture
->clean('4def', TYPE_INT
));
78 $this->assertEquals(0, $this->fixture
->clean('abc', TYPE_UINT
));
79 $this->assertEquals(0, $this->fixture
->clean(-100, TYPE_UINT
));
80 $this->assertEquals(40, $this->fixture
->clean('40.965', TYPE_UINT
));
82 $this->assertEquals(0, $this->fixture
->clean('0.0', TYPE_FLOAT
));
83 $this->assertNotEquals(0, $this->fixture
->clean('0.032', TYPE_FLOAT
));
85 $this->assertEquals(true, $this->fixture
->clean('aafsdfa', TYPE_BOOL
));
86 $this->assertEquals(false, $this->fixture
->clean('', TYPE_BOOL
));
87 $this->assertEquals(false, $this->fixture
->clean('0', TYPE_BOOL
));
88 $this->assertEquals(true, $this->fixture
->clean('0.0', TYPE_BOOL
));
90 $this->assertEquals('<abc "def" gih>', $this->fixture
->clean('<abc "def" gih>', TYPE_STR
));
92 $this->assertEquals('<abc "def" gih>', $this->fixture
->clean('<abc "def" gih>', TYPE_STRUN
));
93 $this->assertEquals('<abc "def" gih>', $this->fixture
->clean($this->fixture
->sanitize('<abc "def" gih>'), TYPE_STRUN
));
95 $this->assertEquals('<abc "def" gih>', $this->fixture
->clean('<abc "def" gih>', TYPE_NONE
));
97 $this->assertEquals('åß∂ƒ(c)˙∆˚¬…æΩ≈ç√∫≤≥÷œ∑®†¥øπ“‘’”', $this->fixture
->clean('åß∂ƒ(c)˙∆˚¬…æΩ≈ç√∫≤≥÷œ∑®†¥øπ“‘’”', TYPE_BIN
));
101 $this->fixture
->clean('asdfa', TYPE_THIS_DOES_NOT_EXIST
);
102 $this->fail('exception expected');
108 public function testCleanArray()
117 $newarray = $this->fixture
->clean($array, TYPE_UINT
);
119 $this->assertEquals(4, sizeof($newarray));
120 $this->assertEquals(1, $newarray['a']);
121 $this->assertEquals(2, $newarray['b']);
122 $this->assertEquals(0, $newarray['c']);
123 $this->assertEquals(0, $newarray['d']);
126 public function testInputClean()
128 $this->assertEquals(-1.0, $this->fixture
->inputClean('abc', TYPE_FLOAT
));
129 $this->assertEquals(-1.0, $this->fixture
->in
['abc']);
131 $this->assertEquals('', $this->fixture
->inputClean(':does:not:exist', TYPE_STR
));
134 public function testInputCleanArray()
136 $this->fixture
->inputCleanArray(array(
141 $this->assertEquals(-1.0, $this->fixture
->in
['abc']);
142 $this->assertEquals(2, $this->fixture
->in
['ab"c"']);
145 public function testEscape()
147 $this->assertEquals("this isn\'t a test", $this->fixture
->escape("this isn't a test", true));
150 public function testInputEscape()
152 $this->assertEquals("isn\'t it cool", $this->fixture
->inputEscape('another"value"'));
153 $this->assertEquals('', $this->fixture
->inputEscape(':will:never:exist'));
156 public function testPostCheck()