7 * @copyright Copyright (c)2002 - [#]year[#], Blue Static
12 class InputTest
extends UnitTestCase
16 public function setUp()
25 "ab\'c\'2" => "qr\'s\'"
28 'somecookie' => '"a var"',
29 'another"value"' => "isn't it cool"
38 // simulate magic quotes GPC
39 /*foreach (array($_GET, $_COOKIE) AS $array)
41 foreach ($array AS $var => $value)
43 $array["$var"] = addslashes($value);
47 $this->fixture
= BSRegister
::LoadModule('Input');
50 public function testSanitizeInputData()
52 $this->assertEqual(10, sizeof($this->fixture
->in
));
53 $this->assertEqual(2, sizeof($this->fixture
->in
['nest']));
54 $this->assertEqual('"a var"', $this->fixture
->in
['somecookie']);
55 $this->assertEqual('test\'ing', $this->fixture
->in
['nest']['"hi"']);
58 public function testEntityEncode()
60 $this->assertEqual('<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">'));
63 public function testUnsanitize()
65 $this->assertEqual('<script type="text/javascript"> alert("XSS is fun!"); </script>', $this->fixture
->unsanitize('<script type="text/javascript"> alert("XSS is fun!"); </script>'));
66 $this->assertEqual('<script type="text/javascript"> alert("XSS is fun!"); </script>', $this->fixture
->unsanitize('<script type="text/javascript"> alert("XSS is fun!"); </script>'));
67 $this->assertEqual('<script type="text/javascript"> alert("XSS is fun!"); </script>', $this->fixture
->unsanitize($this->fixture
->sanitize('<script type="text/javascript"> alert("XSS is fun!"); </script>')));
70 public function testClean()
72 $this->assertEqual(0, $this->fixture
->clean('abc', TYPE_INT
));
73 $this->assertEqual(-1, $this->fixture
->clean('-1', TYPE_INT
));
74 $this->assertEqual(4, $this->fixture
->clean('4def', TYPE_INT
));
76 $this->assertEqual(0, $this->fixture
->clean('abc', TYPE_UINT
));
77 $this->assertEqual(0, $this->fixture
->clean(-100, TYPE_UINT
));
78 $this->assertEqual(40, $this->fixture
->clean('40.965', TYPE_UINT
));
80 $this->assertEqual(0, $this->fixture
->clean('0.0', TYPE_FLOAT
));
81 $this->assertNotEqual(0, $this->fixture
->clean('0.032', TYPE_FLOAT
));
83 $this->assertEqual(true
, $this->fixture
->clean('aafsdfa', TYPE_BOOL
));
84 $this->assertEqual(false
, $this->fixture
->clean('', TYPE_BOOL
));
85 $this->assertEqual(false
, $this->fixture
->clean('0', TYPE_BOOL
));
86 $this->assertEqual(true
, $this->fixture
->clean('0.0', TYPE_BOOL
));
88 $this->assertEqual('<abc "def" gih>', $this->fixture
->clean('<abc "def" gih>', TYPE_STR
));
90 $this->assertEqual('<abc "def" gih>', $this->fixture
->clean('<abc "def" gih>', TYPE_STRUN
));
91 $this->assertEqual('<abc "def" gih>', $this->fixture
->clean($this->fixture
->sanitize('<abc "def" gih>'), TYPE_STRUN
));
93 $this->assertEqual('<abc "def" gih>', $this->fixture
->clean('<abc "def" gih>', TYPE_NONE
));
95 $this->assertEqual('åß∂ƒ©˙∆˚¬…æΩ≈ç√∫≤≥÷œ∑®†¥øπ“‘’”', $this->fixture
->clean('åß∂ƒ©˙∆˚¬…æΩ≈ç√∫≤≥÷œ∑®†¥øπ“‘’”', TYPE_BIN
));
97 $this->fixture
->clean('asdfa', TYPE_THIS_DOES_NOT_EXIST
);
101 public function testCleanArray()
110 $newarray = $this->fixture
->clean($array, TYPE_UINT
);
112 $this->assertEqual(4, sizeof($newarray));
113 $this->assertEqual(1, $newarray['a']);
114 $this->assertEqual(2, $newarray['b']);
115 $this->assertEqual(0, $newarray['c']);
116 $this->assertEqual(0, $newarray['d']);
119 public function testInputClean()
121 $this->assertEqual(-1.0, $this->fixture
->inputClean('abc', TYPE_FLOAT
));
122 $this->assertEqual(-1.0, $this->fixture
->in
['abc']);
124 $this->assertEqual('', $this->fixture
->inputClean(':does:not:exist', TYPE_STR
));
127 public function testInputCleanArray()
130 $this->fixture
->inputCleanArray(array(
135 $this->assertEqual(-1.0, $this->fixture
->in
['abc']);
136 $this->assertEqual(2, $this->fixture
->in
['ab"c"']);
139 public function testEscape()
141 $this->assertEqual("this isn\'t a test", $this->fixture
->escape("this isn't a test", true
));
144 public function testInputEscape()
146 $this->assertEqual("isn\'t it cool", $this->fixture
->inputEscape('another"value"'));
147 $this->assertEqual('', $this->fixture
->inputEscape(':will:never:exist'));
150 public function testPostCheck()
152 define('ISSO_CHECK_POST_REFERER', true
);