diff options
Diffstat (limited to 'models/openid-php-openid-782224d/Tests/Auth/OpenID/KVForm.php')
-rw-r--r-- | models/openid-php-openid-782224d/Tests/Auth/OpenID/KVForm.php | 260 |
1 files changed, 260 insertions, 0 deletions
diff --git a/models/openid-php-openid-782224d/Tests/Auth/OpenID/KVForm.php b/models/openid-php-openid-782224d/Tests/Auth/OpenID/KVForm.php new file mode 100644 index 000000000..904f2c8ee --- /dev/null +++ b/models/openid-php-openid-782224d/Tests/Auth/OpenID/KVForm.php @@ -0,0 +1,260 @@ +<?php + +/** + * Tests for the KVForm module. + * + * PHP versions 4 and 5 + * + * LICENSE: See the COPYING file included in this distribution. + * + * @package OpenID + * @author JanRain, Inc. <openid@janrain.com> + * @copyright 2005-2008 Janrain, Inc. + * @license http://www.apache.org/licenses/LICENSE-2.0 Apache + */ + +require_once 'Auth/OpenID/KVForm.php'; + +global $_Tests_Auth_OpenID_kverrors; +$_Tests_Auth_OpenID_kverrors = null; + +/** + * Keep a list of the logged errors + */ +function Tests_Auth_OpenID_kvHandleError($errno, $errmsg) +{ + global $_Tests_Auth_OpenID_kverrors; + $_Tests_Auth_OpenID_kverrors[] = $errmsg; +} + + +class Tests_Auth_OpenID_KVForm_TestCase extends PHPUnit_Framework_TestCase { + var $errs; + + function runTest() + { + // Re-set the number of logged errors + global $_Tests_Auth_OpenID_kverrors; + $_Tests_Auth_OpenID_kverrors = array(); + + set_error_handler("Tests_Auth_OpenID_kvHandleError"); + + $this->_runTest(); + + // Check to make sure we have the expected number of logged errors + //$this->assertEquals($this->errs, count($_Tests_Auth_OpenID_kverrors)); + + restore_error_handler(); + } + + function _runTest() + { + trigger_error('Must be overridden', E_USER_ERROR); + } +} + +class Tests_Auth_OpenID_KVForm_TestCase_Parse +extends Tests_Auth_OpenID_KVForm_TestCase { + function Tests_Auth_OpenID_KVForm_TestCase_Parse( + $arr, $str, $lossy, $errs) + { + + $this->arr = $arr; + $this->str = $str; + $this->lossy = $lossy; + $this->errs = $errs; + } + + function _runTest() + { + // Do one parse, after which arrayToKV and kvToArray should be + // inverses. + $parsed1 = Auth_OpenID_KVForm::toArray($this->str); + $serial1 = Auth_OpenID_KVForm::fromArray($this->arr); + + if ($this->lossy == "neither" || $this->lossy == "str") { + $this->assertEquals($this->arr, $parsed1, "str was lossy"); + } + + if ($this->lossy == "neither" || $this->lossy == "arr") { + $this->assertEquals($this->str, $serial1, "array was lossy"); + } + + $parsed2 = Auth_OpenID_KVForm::toArray($serial1); + $serial2 = Auth_OpenID_KVForm::fromArray($parsed1); + + // Round-trip both + $parsed3 = Auth_OpenID_KVForm::toArray($serial2); + $serial3 = Auth_OpenID_KVForm::fromArray($parsed2); + + $this->assertEquals($serial2, $serial3, "serialized forms differ"); + + // Check to make sure that they're inverses. + $this->assertEquals($parsed2, $parsed3, "parsed forms differ"); + + } +} + +class Tests_Auth_OpenID_KVForm_TestCase_Null +extends Tests_Auth_OpenID_KVForm_TestCase { + function Tests_Auth_OpenID_KVForm_TestCase_Null($arr, $errs) + { + $this->arr = $arr; + $this->errs = $errs; + } + + function _runTest() + { + $serialized = Auth_OpenID_KVForm::fromArray($this->arr); + $this->assertTrue($serialized === null, + 'serialization unexpectedly succeeded'); + } +} + +class Tests_Auth_OpenID_KVForm extends PHPUnit_Framework_TestSuite { + function Tests_Auth_OpenID_KVForm($name) + { + $this->setName($name); + $testdata_list = array( + array("name" => "simple", + "str" => "college:harvey mudd\n", + "arr" => array("college" => "harvey mudd"), + ), + array("name" => "empty", + "str" => "", + "arr" => array(), + ), + array("name" => "empty (just newline)", + "str" => "\n", + "arr" => array(), + "lossy" => "str", + "errors" => 1, + ), + array("name" => "empty (double newline)", + "str" => "\n\n", + "arr" => array(), + "lossy" => "str", + "errors" => 2, + ), + array("name" => "empty (no colon)", + "str" => "East is least\n", + "arr" => array(), + "lossy" => "str", + "errors" => 1, + ), + array("name" => "two keys", + "str" => "city:claremont\nstate:CA\n", + "arr" => array('city' => 'claremont', + 'state' => 'CA'), + ), + array("name" => "real life", + "str" => "is_valid:true\ninvalidate_handle:" . + "{HMAC-SHA1:2398410938412093}\n", + "arr" => array('is_valid' => 'true', + 'invalidate_handle' => + '{HMAC-SHA1:2398410938412093}'), + ), + array("name" => "empty key and value", + "str" => ":\n", + "arr" => array(''=>''), + ), + array("name" => "empty key, not value", + "str" => ":missing key\n", + "arr" => array(''=>'missing key'), + ), + array("name" => "whitespace at front of key", + "str" => " street:foothill blvd\n", + "arr" => array('street'=>'foothill blvd'), + "lossy" => "str", + "errors" => 1, + ), + array("name" => "whitespace at front of value", + "str" => "major: computer science\n", + "arr" => array('major'=>'computer science'), + "lossy" => "str", + "errors" => 1, + ), + array("name" => "whitespace around key and value", + "str" => " dorm : east \n", + "arr" => array('dorm'=>'east'), + "lossy" => "str", + "errors" => 2, + ), + array("name" => "missing trailing newline", + "str" => "e^(i*pi)+1:0", + "arr" => array('e^(i*pi)+1'=>'0'), + "lossy" => "str", + "errors" => 1, + ), + array("name" => "missing trailing newline (two key)", + "str" => "east:west\nnorth:south", + "arr" => array('east'=>'west', + 'north'=>'south'), + "lossy" => "str", + "errors" => 1, + ), + array("name" => "colon in key", + "arr" => array("k:k" => 'v'), + "errors" => 1, + ), + array("name" => "newline in key", + "arr" => array("k\nk" => 'v'), + "errors" => 1, + ), + array("name" => "newline in value", + "arr" => array('k' => "v\nv"), + "errors" => 1, + ), + array("name" => "array whitespace", + "arr" => array(" k " => "v"), + "lossy" => "both", + "str" => " k :v\n", + "errors" => 2, + ), + array("name" => "array ordering 1", + "arr" => array("a" => "x", + "b" => "x", + "c" => "x"), + "str" => "a:x\nb:x\nc:x\n", + ), + array("name" => "array ordering 2", + "arr" => array("a" => "x", + "c" => "x", + "b" => "x"), + "str" => "a:x\nc:x\nb:x\n", + ), + ); + + foreach ($testdata_list as $testdata) { + if (isset($testdata['str'])) { + $str = $testdata['str']; + } else { + $str = null; + } + + $arr = $testdata["arr"]; + + if (isset($testdata['errors'])) { + $errs = $testdata["errors"]; + } else { + $errs = 0; + } + + if (is_null($str)) { + $test = new Tests_Auth_OpenID_KVForm_TestCase_Null($arr, $errs); + } else { + if (isset($testdata['lossy'])) { + $lossy = $testdata["lossy"]; + } else { + $lossy = 'neither'; + } + $test = new Tests_Auth_OpenID_KVForm_TestCase_Parse( + $arr, $str, $lossy, $errs); + } + $test->setName($testdata["name"]); + $this->addTest($test); + } + } +} + + |