Renaming graph_pie.php to GraphPie.php
[isso.git] / docs / UnitTest / InputTest.php
1 <?php
2
3 /**
4 * InputTest
5 *
6 * @author Blue Static
7 * @copyright Copyright (c)2002 - [#]year[#], Blue Static
8 * @version $Revision$
9 * @package ISSO Tests
10 *
11 */
12 class InputTest extends UnitTestCase
13 {
14 private $fixture;
15
16 public function setUp()
17 {
18 $_GET = array(
19 '1' => 'moo',
20 '0' => 'foobar',
21 'abc' => '-1',
22 'ab"c"' => '2.0',
23 'ab"c"2' => 'k"lm"',
24 'ab\'c\'' => 'nop',
25 "ab\'c\'2" => "qr\'s\'"
26 );
27 $_COOKIE = array(
28 'somecookie' => '"a var"',
29 'another"value"' => "isn't it cool"
30 );
31 $_POST = array(
32 'nest' => array(
33 'foobar' => '"test"',
34 '"hi"' => 'test\'ing'
35 )
36 );
37
38 // simulate magic quotes GPC
39 /*foreach (array($_GET, $_COOKIE) AS $array)
40 {
41 foreach ($array AS $var => $value)
42 {
43 $array["$var"] = addslashes($value);
44 }
45 }*/
46
47 $this->fixture = BSRegister::LoadModule('Input');
48 }
49
50 public function testSanitizeInputData()
51 {
52 $this->assertEqual(10, sizeof($this->fixture->in));
53 $this->assertEqual(2, sizeof($this->fixture->in['nest']));
54 $this->assertEqual('&quot;a var&quot;', $this->fixture->in['somecookie']);
55 $this->assertEqual('test\'ing', $this->fixture->in['nest']['"hi"']);
56 }
57
58 public function testEntityEncode()
59 {
60 $this->assertEqual('&lt;a href=&quot;http://www.something.com/test.php?do=run&amp;moo=foo&quot;&gt;', $this->fixture->entityEncode('<a href="http://www.something.com/test.php?do=run&moo=foo">'));
61 }
62
63 public function testUnsanitize()
64 {
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('&lt;script type=&quot;text/javascript&quot;&gt; alert(&quot;XSS is fun!&quot;); &lt;/script&gt;'));
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>')));
68 }
69
70 public function testClean()
71 {
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));
75
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));
79
80 $this->assertEqual(0, $this->fixture->clean('0.0', TYPE_FLOAT));
81 $this->assertNotEqual(0, $this->fixture->clean('0.032', TYPE_FLOAT));
82
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));
87
88 $this->assertEqual('<abc "def" gih>', $this->fixture->clean('<abc "def" gih>', TYPE_STR));
89
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));
92
93 $this->assertEqual('<abc "def" gih>', $this->fixture->clean('<abc "def" gih>', TYPE_NONE));
94
95 $this->assertEqual('åß∂ƒ©˙∆˚¬…æΩ≈ç√∫≤≥÷œ∑®†¥øπ“‘’”', $this->fixture->clean('åß∂ƒ©˙∆˚¬…æΩ≈ç√∫≤≥÷œ∑®†¥øπ“‘’”', TYPE_BIN));
96
97 $this->fixture->clean('asdfa', TYPE_THIS_DOES_NOT_EXIST);
98 $this->assertError();
99 }
100
101 public function testCleanArray()
102 {
103 $array = array(
104 'a' => '1',
105 'b' => '2.7',
106 'c' => 'adfasdf',
107 'd' => '-12'
108 );
109
110 $newarray = $this->fixture->clean($array, TYPE_UINT);
111
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']);
117 }
118
119 public function testInputClean()
120 {
121 $this->assertEqual(-1.0, $this->fixture->inputClean('abc', TYPE_FLOAT));
122 $this->assertEqual(-1.0, $this->fixture->in['abc']);
123
124 $this->assertEqual('', $this->fixture->inputClean(':does:not:exist', TYPE_STR));
125 }
126
127 public function testInputCleanArray()
128 {
129 $this->setUp();
130 $this->fixture->inputCleanArray(array(
131 'abc' => TYPE_FLOAT,
132 'ab"c"' => TYPE_INT
133 ));
134
135 $this->assertEqual(-1.0, $this->fixture->in['abc']);
136 $this->assertEqual(2, $this->fixture->in['ab"c"']);
137 }
138
139 public function testEscape()
140 {
141 $this->assertEqual("this isn\'t a test", $this->fixture->escape("this isn't a test", true));
142 }
143
144 public function testInputEscape()
145 {
146 $this->assertEqual("isn\'t it cool", $this->fixture->inputEscape('another"value"'));
147 $this->assertEqual('', $this->fixture->inputEscape(':will:never:exist'));
148 }
149
150 public function testPostCheck()
151 {
152 define('ISSO_CHECK_POST_REFERER', true);
153 $this->setUp();
154 }
155 }
156
157 ?>