Lots of testing going on... almost completed the input test. Working towards full...
authorRobert Sesek <rsesek@bluestatic.org>
Mon, 11 Dec 2006 02:19:04 +0000 (02:19 +0000)
committerRobert Sesek <rsesek@bluestatic.org>
Mon, 11 Dec 2006 02:19:04 +0000 (02:19 +0000)
UnitTest/AllTests.php
UnitTest/DateTest.php
UnitTest/InputTest.php [new file with mode: 0644]
UnitTest/RegisterTest.php

index 9ee24ece586fed6c4a1056157d8c5a1f3d6d5c7d..bda69d55da574bfe19360e5a694c6db140b7914a 100644 (file)
@@ -11,6 +11,7 @@ $test = new GroupTest('All Tests');
 $test->addTestFile('RegisterTest.php');
 $test->addTestFile('FunctionsTest.php');
 $test->addTestFile('DateTest.php');
+$test->addTestFile('InputTest.php');
 
 // run
 $test->run(new CustomHtmlReporter);
index 04d199798fb500d8442a61b46f0b2023556ac451..c33440ef000a2bb8ac45c02acb05aca13676d1b5 100644 (file)
@@ -32,6 +32,17 @@ class DateTest extends UnitTestCase
                $this->fixture->setUserTimeZone(-8);
                $this->assertEqual(date(self::DATE_FORMAT, TIMENOW), $this->fixture->format(self::DATE_FORMAT, TIMENOW));
        }
+       
+       public function testGmtNoAdjust()
+       {
+               $this->fixture->setUserTimeZone(4);
+               $this->assertEqual(gmdate(self::DATE_FORMAT, TIMENOW), $this->fixture->format(self::DATE_FORMAT, TIMENOW, false));
+       }
+       
+       public function testTimezoneList()
+       {
+               $this->assertEqual(sizeof(BSDate::FetchTimeZoneList()), 30);
+       }
 }
 
 ?>
\ No newline at end of file
diff --git a/UnitTest/InputTest.php b/UnitTest/InputTest.php
new file mode 100644 (file)
index 0000000..1951171
--- /dev/null
@@ -0,0 +1,157 @@
+<?php
+
+/**
+* InputTest
+*
+* @author              Blue Static
+* @copyright   Copyright (c)2002 - [#]year[#], Blue Static
+* @version             $Revision$
+* @package             ISSO Tests
+*
+*/
+class InputTest extends UnitTestCase
+{
+       private $fixture;
+       
+       public function setUp()
+       {
+               $_GET = array(
+                       '1' => 'moo',
+                       '0' => 'foobar',
+                       'abc' => '-1',
+                       'ab"c"' => '2.0',
+                       'ab"c"2' => 'k"lm"',
+                       'ab\'c\'' => 'nop',
+                       "ab\'c\'2" => "qr\'s\'"
+               );
+               $_COOKIE = array(
+                       'somecookie' => '"a var"',
+                       'another"value"' => "isn't it cool"
+               );
+               $_POST = array(
+                       'nest' => array(
+                               'foobar' => '"test"',
+                               '"hi"' => 'test\'ing'
+                       )
+               );
+                               
+               // simulate magic quotes GPC
+               /*foreach (array($_GET, $_COOKIE) AS $array)
+               {
+                       foreach ($array AS $var => $value)
+                       {
+                               $array["$var"] = addslashes($value);
+                       }
+               }*/
+               
+               $this->fixture = BSRegister::LoadModule('Input');
+       }
+       
+       public function testSanitizeInputData()
+       {
+               $this->assertEqual(10, sizeof($this->fixture->in));
+               $this->assertEqual(2, sizeof($this->fixture->in['nest']));
+               $this->assertEqual('&quot;a var&quot;', $this->fixture->in['somecookie']);
+               $this->assertEqual('test\'ing', $this->fixture->in['nest']['"hi"']);
+       }
+       
+       public function testEntityEncode()
+       {
+               $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">'));
+       }
+       
+       public function testUnsanitize()
+       {
+               $this->assertEqual('<script type="text/javascript"> alert("XSS is fun!"); </script>', $this->fixture->unsanitize('<script type="text/javascript"> alert("XSS is fun!"); </script>'));
+               $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;'));
+               $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>')));
+       }
+       
+       public function testClean()
+       {
+               $this->assertEqual(0, $this->fixture->clean('abc', TYPE_INT));
+               $this->assertEqual(-1, $this->fixture->clean('-1', TYPE_INT));
+               $this->assertEqual(4, $this->fixture->clean('4def', TYPE_INT));
+               
+               $this->assertEqual(0, $this->fixture->clean('abc', TYPE_UINT));
+               $this->assertEqual(0, $this->fixture->clean(-100, TYPE_UINT));
+               $this->assertEqual(40, $this->fixture->clean('40.965', TYPE_UINT));
+               
+               $this->assertEqual(0, $this->fixture->clean('0.0', TYPE_FLOAT));
+               $this->assertNotEqual(0, $this->fixture->clean('0.032', TYPE_FLOAT));
+               
+               $this->assertEqual(true, $this->fixture->clean('aafsdfa', TYPE_BOOL));
+               $this->assertEqual(false, $this->fixture->clean('', TYPE_BOOL));
+               $this->assertEqual(false, $this->fixture->clean('0', TYPE_BOOL));
+               $this->assertEqual(true, $this->fixture->clean('0.0', TYPE_BOOL));
+               
+               $this->assertEqual('<abc "def" gih>', $this->fixture->clean('<abc "def" gih>', TYPE_STR));
+               
+               $this->assertEqual('<abc "def" gih>', $this->fixture->clean('<abc "def" gih>', TYPE_STRUN));
+               $this->assertEqual('<abc "def" gih>', $this->fixture->clean($this->fixture->sanitize('<abc "def" gih>'), TYPE_STRUN));
+               
+               $this->assertEqual('<abc "def" gih>', $this->fixture->clean('<abc "def" gih>', TYPE_NONE));
+               
+               $this->assertEqual('åß∂ƒ©˙∆˚¬…æΩ≈ç√∫≤≥÷œ∑®†¥øπ“‘’”', $this->fixture->clean('åß∂ƒ©˙∆˚¬…æΩ≈ç√∫≤≥÷œ∑®†¥øπ“‘’”', TYPE_BIN));
+               
+               $this->fixture->clean('asdfa', TYPE_THIS_DOES_NOT_EXIST);
+               $this->assertError();
+       }
+       
+       public function testCleanArray()
+       {
+               $array = array(
+                       'a' => '1',
+                       'b' => '2.7',
+                       'c' => 'adfasdf',
+                       'd' => '-12'
+               );
+               
+               $newarray = $this->fixture->clean($array, TYPE_UINT);
+               
+               $this->assertEqual(4, sizeof($newarray));
+               $this->assertEqual(1, $newarray['a']);
+               $this->assertEqual(2, $newarray['b']);
+               $this->assertEqual(0, $newarray['c']);
+               $this->assertEqual(0, $newarray['d']);
+       }
+       
+       public function testInputClean()
+       {
+               $this->assertEqual(-1.0, $this->fixture->inputClean('abc', TYPE_FLOAT));
+               $this->assertEqual(-1.0, $this->fixture->in['abc']);
+               
+               $this->assertEqual('', $this->fixture->inputClean(':does:not:exist', TYPE_STR));
+       }
+       
+       public function testInputCleanArray()
+       {
+               $this->setUp();
+               $this->fixture->inputCleanArray(array(
+                       'abc' => TYPE_FLOAT,
+                       'ab"c"' => TYPE_INT
+               ));
+               
+               $this->assertEqual(-1.0, $this->fixture->in['abc']);
+               $this->assertEqual(2, $this->fixture->in['ab"c"']);
+       }
+       
+       public function testEscape()
+       {
+               $this->assertEqual("this isn\'t a test", $this->fixture->escape("this isn't a test", true));
+       }
+       
+       public function testInputEscape()
+       {
+               $this->assertEqual("isn\'t it cool", $this->fixture->inputEscape('another"value"'));
+               $this->assertEqual('', $this->fixture->inputEscape(':will:never:exist'));
+       }
+       
+       public function testPostCheck()
+       {
+               define('ISSO_CHECK_POST_REFERER', true);
+               $this->setUp();
+       }
+}
+
+?>
\ No newline at end of file
index 3cbf00f1b152039d74cf8367059daa527a258b7a..5b4fc5ba48b906ad9b72030f7ad5e7e89d5542d9 100644 (file)
@@ -105,6 +105,27 @@ class RegisterTest extends UnitTestCase
                BSRegister::Unregister('keyThatWontExist');
                $this->assertError();
        }
+       
+       public function testGetType()
+       {
+               $input = BSRegister::LoadModule('Input');
+               BSRegister::Register('input', $input);
+               $this->assertReference($input, BSRegister::GetType('Input'));
+               
+               $this->assertEqual(null, BSRegister::GetType('Date'));
+       }
+       
+       public function testRequiredModules()
+       {
+               BSRegister::RequiredModules(array('Input'));
+               $this->assertNoErrors();
+               
+               BSRegister::RequiredModules(array('Input', 'Db'));
+               $this->assertError();
+               
+               BSRegister::RequiredModules(array('Date'));
+               $this->assertError();
+       }
 }
 
 ?>
\ No newline at end of file