12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253 |
- <?php
- /**
- * Unit tests for the Auth_OpenID_Message implementation.
- */
- require_once "Auth/OpenID/Message.php";
- require_once "Auth/OpenID.php";
- require_once "PHPUnit.php";
- class MessageTest extends PHPUnit_TestCase {
- function _argTest($ns, $key, $expected = null)
- {
- $a_default = 'a bogus default value';
- $this->assertEquals($this->msg->getArg($ns, $key), $expected);
- if ($expected === null) {
- $this->assertEquals(
- $this->msg->getArg($ns, $key, $a_default), $a_default);
- $result = $this->msg->getArg($ns, $key, Auth_OpenID_NO_DEFAULT);
- $this->assertTrue(Auth_OpenID::isFailure($result));
- } else {
- $this->assertEquals(
- $this->msg->getArg($ns, $key, $a_default), $expected);
- $this->assertEquals(
- $this->msg->getArg($ns, $key, Auth_OpenID_NO_DEFAULT),
- $expected);
- }
- }
- }
- class Tests_Auth_OpenID_EmptyMessage extends MessageTest {
- function setUp()
- {
- $this->msg = new Auth_OpenID_Message();
- }
- function test_toPostArgs()
- {
- $this->assertEquals($this->msg->toPostArgs(), array());
- }
- function test_toArgs()
- {
- $this->assertEquals($this->msg->toArgs(), array());
- }
- function test_toKVForm()
- {
- $this->assertEquals($this->msg->toKVForm(), '');
- }
- function test_toURLEncoded()
- {
- $this->assertEquals($this->msg->toURLEncoded(), '');
- }
- function test_toURL()
- {
- $base_url = 'http://base.url/';
- $this->assertEquals($this->msg->toURL($base_url), $base_url);
- }
- function test_getOpenID()
- {
- $this->assertEquals($this->msg->getOpenIDNamespace(), null);
- }
- function test_getKeyOpenID()
- {
- $key = $this->msg->getKey(Auth_OpenID_OPENID_NS, 'foo');
- $this->assertTrue(Auth_OpenID::isFailure($key));
- $this->msg->setOpenIDNamespace(Auth_OpenID_OPENID1_NS, false);
- $key = $this->msg->getKey(Auth_OpenID_OPENID_NS, 'foo');
- $this->assertEquals('openid.foo', $key);
- }
- function test_getKeyBARE()
- {
- $this->assertEquals($this->msg->getKey(Auth_OpenID_BARE_NS, 'foo'), 'foo');
- }
- function test_getKeyNS1()
- {
- $this->assertEquals($this->msg->getKey(Auth_OpenID_OPENID1_NS, 'foo'), null);
- }
- function test_getKeyNS2()
- {
- $this->assertEquals($this->msg->getKey(Auth_OpenID_OPENID2_NS, 'foo'), null);
- }
- function test_getKeyNS3()
- {
- $this->assertEquals($this->msg->getKey('urn:nothing-significant', 'foo'),
- null);
- }
- function test_hasKey()
- {
- $this->assertEquals($this->msg->hasKey(Auth_OpenID_OPENID_NS, 'foo'), false);
- }
- function test_hasKeyBARE()
- {
- $this->assertEquals($this->msg->hasKey(Auth_OpenID_BARE_NS, 'foo'), false);
- }
- function test_hasKeyNS1()
- {
- $this->assertEquals($this->msg->hasKey(Auth_OpenID_OPENID1_NS, 'foo'), false);
- }
- function test_hasKeyNS2()
- {
- $this->assertEquals($this->msg->hasKey(Auth_OpenID_OPENID2_NS, 'foo'), false);
- }
- function test_hasKeyNS3()
- {
- $this->assertEquals($this->msg->hasKey('urn:nothing-significant', 'foo'),
- false);
- }
- function test_getArg()
- {
- $result = $this->msg->getArg(Auth_OpenID_OPENID_NS, 'foo');
- $this->assertTrue(Auth_OpenID::isFailure($result));
- }
- function test_getArgs()
- {
- $result = $this->msg->getArgs(Auth_OpenID_OPENID_NS);
- $this->assertTrue(Auth_OpenID::isFailure($result));
- }
- function test_getArgsBARE()
- {
- $this->assertEquals($this->msg->getArgs(Auth_OpenID_BARE_NS), array());
- }
- function test_getArgsNS1()
- {
- $this->assertEquals($this->msg->getArgs(Auth_OpenID_OPENID1_NS), array());
- }
- function test_getArgsNS2()
- {
- $this->assertEquals($this->msg->getArgs(Auth_OpenID_OPENID2_NS), array());
- }
- function test_getArgsNS3()
- {
- $this->assertEquals($this->msg->getArgs('urn:nothing-significant'), array());
- }
- function test_updateArgs()
- {
- $result= $this->msg->updateArgs(Auth_OpenID_OPENID_NS,
- array('does not' => 'matter'));
- $this->assertTrue(Auth_OpenID::isFailure($result));
- }
- function _test_updateArgsNS($ns)
- {
- $update_args = array(
- 'Camper van Beethoven' => 'David Lowery',
- 'Magnolia Electric Co.' => 'Jason Molina');
- $this->assertEquals($this->msg->getArgs($ns), array());
- $this->msg->updateArgs($ns, $update_args);
- $this->assertEquals($this->msg->getArgs($ns), $update_args);
- }
- function test_updateArgsBARE()
- {
- $this->_test_updateArgsNS(Auth_OpenID_BARE_NS);
- }
- function test_updateArgsNS1()
- {
- $this->_test_updateArgsNS(Auth_OpenID_OPENID1_NS);
- }
- function test_updateArgsNS2()
- {
- $this->_test_updateArgsNS(Auth_OpenID_OPENID2_NS);
- }
- function test_updateArgsNS3()
- {
- $this->_test_updateArgsNS('urn:nothing-significant');
- }
- function test_setArg()
- {
- $result = $this->msg->setArg(Auth_OpenID_OPENID_NS,
- 'does not', 'matter');
- $this->assertTrue(Auth_OpenID::isFailure($result));
- }
- function _test_setArgNS($ns)
- {
- $key = 'Camper van Beethoven';
- $value = 'David Lowery';
- $this->assertEquals($this->msg->getArg($ns, $key), null);
- $this->msg->setArg($ns, $key, $value);
- $this->assertEquals($this->msg->getArg($ns, $key), $value);
- }
- function test_setArgBARE()
- {
- $this->_test_setArgNS(Auth_OpenID_BARE_NS);
- }
- function test_setArgNS1()
- {
- $this->_test_setArgNS(Auth_OpenID_OPENID1_NS);
- }
- function test_setArgNS2()
- {
- $this->_test_setArgNS(Auth_OpenID_OPENID2_NS);
- }
- function test_setArgNS3()
- {
- $this->_test_setArgNS('urn:nothing-significant');
- }
- function test_delArg()
- {
- $result = $this->msg->delArg(Auth_OpenID_OPENID_NS, 'does not');
- $this->assertTrue(Auth_OpenID::isFailure($result));
- }
- function _test_delArgNS($ns)
- {
- $key = 'Camper van Beethoven';
- $this->assertEquals($this->msg->delArg($ns, $key), false);
- }
- function test_delArgBARE()
- {
- $this->_test_delArgNS(Auth_OpenID_BARE_NS);
- }
- function test_delArgNS1()
- {
- $this->_test_delArgNS(Auth_OpenID_OPENID1_NS);
- }
- function test_delArgNS2()
- {
- $this->_test_delArgNS(Auth_OpenID_OPENID2_NS);
- }
- function test_delArgNS3()
- {
- $this->_test_delArgNS('urn:nothing-significant');
- }
- function test_isOpenID1()
- {
- $this->assertFalse($this->msg->isOpenID1());
- }
- function test_isOpenID2()
- {
- $this->assertFalse($this->msg->isOpenID2());
- }
- function test_args()
- {
- $this->_argTest(Auth_OpenID_BARE_NS, 'foo');
- $this->_argTest(Auth_OpenID_OPENID1_NS, 'foo');
- $this->_argTest(Auth_OpenID_OPENID2_NS, 'foo');
- $this->_argTest('urn:nothing-significant', 'foo');
- }
- }
- class Tests_Auth_OpenID_OpenID1Message extends MessageTest {
- function setUp()
- {
- $this->msg = Auth_OpenID_Message::fromPostArgs(array('openid.mode' => 'error',
- 'openid.error' => 'unit test'));
- }
- function test_toPostArgs()
- {
- $this->assertEquals($this->msg->toPostArgs(),
- array('openid.mode' => 'error',
- 'openid.error' => 'unit test'));
- }
- function test_toArgs()
- {
- $this->assertEquals($this->msg->toArgs(),
- array('mode' => 'error',
- 'error' => 'unit test'));
- }
- function test_toKVForm()
- {
- $this->assertEquals($this->msg->toKVForm(),
- "error:unit test\nmode:error\n");
- }
- function test_toURLEncoded()
- {
- $this->assertEquals($this->msg->toURLEncoded(),
- 'openid.error=unit+test&openid.mode=error');
- }
- function test_toURL()
- {
- $base_url = 'http://base.url/';
- $actual = $this->msg->toURL($base_url);
- $actual_base = substr($actual, 0, strlen($base_url));
- $this->assertEquals($actual_base, $base_url);
- $this->assertEquals($actual[strlen($base_url)], '?');
- $query = substr($actual, strlen($base_url) + 1);
- $parsed = Auth_OpenID::parse_str($query);
- $this->assertEquals($parsed, array('openid.mode' => 'error',
- 'openid.error' => 'unit test'));
- }
- function test_getOpenID()
- {
- $this->assertEquals($this->msg->getOpenIDNamespace(),
- Auth_OpenID_OPENID1_NS);
- $this->assertTrue($this->msg->namespaces->isImplicit(Auth_OpenID_OPENID1_NS));
- }
- function test_getKeyOpenID()
- {
- $this->assertEquals($this->msg->getKey(Auth_OpenID_OPENID_NS, 'mode'),
- 'openid.mode');
- }
- function test_getKeyBARE()
- {
- $this->assertEquals($this->msg->getKey(Auth_OpenID_BARE_NS, 'mode'), 'mode');
- }
- function test_getKeyNS1()
- {
- $this->assertEquals(
- $this->msg->getKey(Auth_OpenID_OPENID1_NS, 'mode'), 'openid.mode');
- }
- function test_getKeyNS2()
- {
- $this->assertEquals($this->msg->getKey(Auth_OpenID_OPENID2_NS, 'mode'), null);
- }
- function test_getKeyNS3()
- {
- $this->assertEquals(
- $this->msg->getKey('urn:nothing-significant', 'mode'), null);
- }
- function test_hasKey()
- {
- $this->assertEquals($this->msg->hasKey(Auth_OpenID_OPENID_NS, 'mode'), true);
- }
- function test_hasKeyBARE()
- {
- $this->assertEquals($this->msg->hasKey(Auth_OpenID_BARE_NS, 'mode'), false);
- }
- function test_hasKeyNS1()
- {
- $this->assertEquals($this->msg->hasKey(Auth_OpenID_OPENID1_NS, 'mode'), true);
- }
- function test_hasKeyNS2()
- {
- $this->assertEquals(
- $this->msg->hasKey(Auth_OpenID_OPENID2_NS, 'mode'), false);
- }
- function test_hasKeyNS3()
- {
- $this->assertEquals(
- $this->msg->hasKey('urn:nothing-significant', 'mode'), false);
- }
- function test_getArgs()
- {
- $this->assertEquals($this->msg->getArgs(Auth_OpenID_OPENID_NS),
- array('mode' => 'error',
- 'error' => 'unit test'));
- }
- function test_getArgsBARE()
- {
- $this->assertEquals($this->msg->getArgs(Auth_OpenID_BARE_NS), array());
- }
- function test_getArgsNS1()
- {
- $this->assertEquals($this->msg->getArgs(Auth_OpenID_OPENID1_NS),
- array('mode' => 'error',
- 'error' => 'unit test'));
- }
- function test_getArgsNS2()
- {
- $this->assertEquals($this->msg->getArgs(Auth_OpenID_OPENID2_NS), array());
- }
- function test_getArgsNS3()
- {
- $this->assertEquals($this->msg->getArgs('urn:nothing-significant'), array());
- }
- function _test_updateArgsNS($ns, $before=null)
- {
- if ($before === null) {
- $before = array();
- }
- $update_args = array(
- 'Camper van Beethoven' => 'David Lowery',
- 'Magnolia Electric Co.' => 'Jason Molina');
- $this->assertEquals($this->msg->getArgs($ns), $before);
- $this->msg->updateArgs($ns, $update_args);
- $after = $before;
- $after = array_merge($after, $update_args);
- $this->assertEquals($this->msg->getArgs($ns), $after);
- }
- function test_updateArgs()
- {
- $this->_test_updateArgsNS(Auth_OpenID_OPENID_NS,
- array('mode' => 'error', 'error' => 'unit test'));
- }
- function test_updateArgsBARE()
- {
- $this->_test_updateArgsNS(Auth_OpenID_BARE_NS);
- }
- function test_updateArgsNS1()
- {
- $this->_test_updateArgsNS(Auth_OpenID_OPENID1_NS,
- array('mode' => 'error', 'error' => 'unit test'));
- }
- function test_updateArgsNS2()
- {
- $this->_test_updateArgsNS(Auth_OpenID_OPENID2_NS);
- }
- function test_updateArgsNS3()
- {
- $this->_test_updateArgsNS('urn:nothing-significant');
- }
- function _test_setArgNS($ns)
- {
- $key = 'Camper van Beethoven';
- $value = 'David Lowery';
- $this->assertEquals($this->msg->getArg($ns, $key), null);
- $this->msg->setArg($ns, $key, $value);
- $this->assertEquals($this->msg->getArg($ns, $key), $value);
- }
- function test_setArg()
- {
- $this->_test_setArgNS(Auth_OpenID_OPENID_NS);
- }
- function test_setArgBARE()
- {
- $this->_test_setArgNS(Auth_OpenID_BARE_NS);
- }
- function test_setArgNS1()
- {
- $this->_test_setArgNS(Auth_OpenID_OPENID1_NS);
- }
- function test_setArgNS2()
- {
- $this->_test_setArgNS(Auth_OpenID_OPENID2_NS);
- }
- function test_setArgNS3()
- {
- $this->_test_setArgNS('urn:nothing-significant');
- }
- function _test_delArgNS($ns)
- {
- $key = 'Camper van Beethoven';
- $value = 'David Lowery';
- $this->assertEquals($this->msg->delArg($ns, $key), false);
- $this->msg->setArg($ns, $key, $value);
- $this->assertEquals($this->msg->getArg($ns, $key), $value);
- $this->msg->delArg($ns, $key);
- $this->assertEquals($this->msg->getArg($ns, $key), null);
- }
- function test_delArg()
- {
- $this->_test_delArgNS(Auth_OpenID_OPENID_NS);
- }
- function test_delArgBARE()
- {
- $this->_test_delArgNS(Auth_OpenID_BARE_NS);
- }
- function test_delArgNS1()
- {
- $this->_test_delArgNS(Auth_OpenID_OPENID1_NS);
- }
- function test_delArgNS2()
- {
- $this->_test_delArgNS(Auth_OpenID_OPENID2_NS);
- }
- function test_delArgNS3()
- {
- $this->_test_delArgNS('urn:nothing-significant');
- }
- function test_isOpenID1()
- {
- $this->assertTrue($this->msg->isOpenID1());
- }
- function test_isOpenID2()
- {
- $this->assertFalse($this->msg->isOpenID2());
- }
- function test_args()
- {
- $this->_argTest(Auth_OpenID_BARE_NS, 'mode');
- $this->_argTest(Auth_OpenID_OPENID_NS, 'mode', 'error');
- $this->_argTest(Auth_OpenID_OPENID1_NS, 'mode', 'error');
- $this->_argTest(Auth_OpenID_OPENID2_NS, 'mode');
- $this->_argTest('urn:nothing-significant', 'mode');
- }
- }
- class Tests_Auth_OpenID_OpenID1ExplicitMessage extends PHPUnit_TestCase {
- function setUp()
- {
- $this->msg = Auth_OpenID_Message::fromPostArgs(array('openid.mode' => 'error',
- 'openid.error' => 'unit test',
- 'openid.ns' => Auth_OpenID_OPENID1_NS));
- }
- function test_isOpenID1()
- {
- $this->assertTrue($this->msg->isOpenID1());
- $this->assertFalse(
- $this->msg->namespaces->isImplicit(Auth_OpenID_OPENID1_NS));
- }
- function test_isOpenID2()
- {
- $this->assertFalse($this->msg->isOpenID2());
- }
- function test_toPostArgs()
- {
- $this->assertEquals($this->msg->toPostArgs(),
- array('openid.mode' => 'error',
- 'openid.error' => 'unit test',
- 'openid.ns' => Auth_OpenID_OPENID1_NS));
- }
- function test_toArgs()
- {
- $this->assertEquals($this->msg->toArgs(),
- array('mode' => 'error',
- 'error' => 'unit test',
- 'ns' => Auth_OpenID_OPENID1_NS));
- }
- function test_toKVForm()
- {
- $this->assertEquals($this->msg->toKVForm(),
- "error:unit test\nmode:error\nns:".
- Auth_OpenID_OPENID1_NS."\n");
- }
- function test_toURLEncoded()
- {
- $this->assertEquals($this->msg->toURLEncoded(),
- 'openid.error=unit+test&openid.mode=error&openid.ns=http%3A%2F%2Fopenid.net%2Fsignon%2F1.0');
- }
- function test_toURL()
- {
- $base_url = 'http://base.url/';
- $actual = $this->msg->toURL($base_url);
- $actual_base = substr($actual, 0, strlen($base_url));
- $this->assertEquals($actual_base, $base_url);
- $this->assertEquals($actual[strlen($base_url)], '?');
- $query = substr($actual, strlen($base_url) + 1);
- $parsed = Auth_OpenID::parse_str($query);
- $this->assertEquals($parsed, array('openid.mode' => 'error',
- 'openid.error' => 'unit test',
- 'openid.ns' => Auth_OpenID_OPENID1_NS));
- }
- }
- class Tests_Auth_OpenID_OpenID2Message extends MessageTest {
- function setUp()
- {
- $this->msg = Auth_OpenID_Message::fromPostArgs(array('openid.mode' => 'error',
- 'openid.error' => 'unit test',
- 'openid.ns' => Auth_OpenID_OPENID2_NS));
- $this->msg->setArg(Auth_OpenID_BARE_NS, "xey", "value");
- }
- function test_toPostArgs()
- {
- $this->assertEquals($this->msg->toPostArgs(),
- array('openid.mode' => 'error',
- 'openid.error' => 'unit test',
- 'openid.ns' => Auth_OpenID_OPENID2_NS,
- 'xey' => 'value'));
- }
- function test_toArgs()
- {
- // This method can't tolerate BARE_NS.
- $this->msg->delArg(Auth_OpenID_BARE_NS, "xey");
- $this->assertEquals($this->msg->toArgs(),
- array('mode' => 'error',
- 'error' => 'unit test',
- 'ns' => Auth_OpenID_OPENID2_NS));
- }
- function test_toKVForm()
- {
- // Can't tolerate BARE_NS in kvform
- $this->msg->delArg(Auth_OpenID_BARE_NS, "xey");
- $this->assertEquals($this->msg->toKVForm(),
- sprintf("error:unit test\nmode:error\nns:%s\n",
- Auth_OpenID_OPENID2_NS));
- }
- function _test_urlencoded($s)
- {
- $expected = 'openid.error=unit+test&openid.mode=error&' .
- 'openid.ns=%s&xey=value';
- $expected = sprintf($expected, urlencode(Auth_OpenID_OPENID2_NS));
- $this->assertEquals($s, $expected);
- }
- function test_toURLEncoded()
- {
- $this->_test_urlencoded($this->msg->toURLEncoded());
- }
- function test_toURL()
- {
- $base_url = 'http://base.url/';
- $actual = $this->msg->toURL($base_url);
- $actual_base = substr($actual, 0, strlen($base_url));
- $this->assertEquals($actual_base, $base_url);
- $this->assertEquals($actual[strlen($base_url)], '?');
- $query = substr($actual, strlen($base_url) + 1);
- $this->_test_urlencoded($query);
- }
- function test_getOpenID()
- {
- $this->assertEquals($this->msg->getOpenIDNamespace(),
- Auth_OpenID_OPENID2_NS);
- }
- function test_getKeyOpenID()
- {
- $this->assertEquals($this->msg->getKey(Auth_OpenID_OPENID_NS, 'mode'),
- 'openid.mode');
- }
- function test_getKeyBARE()
- {
- $this->assertEquals($this->msg->getKey(Auth_OpenID_BARE_NS, 'mode'), 'mode');
- }
- function test_getKeyNS1()
- {
- $this->assertEquals(
- $this->msg->getKey(Auth_OpenID_OPENID1_NS, 'mode'), null);
- }
- function test_getKeyNS2()
- {
- $this->assertEquals(
- $this->msg->getKey(Auth_OpenID_OPENID2_NS, 'mode'), 'openid.mode');
- }
- function test_getKeyNS3()
- {
- $this->assertEquals(
- $this->msg->getKey('urn:nothing-significant', 'mode'), null);
- }
- function test_hasKeyOpenID()
- {
- $this->assertEquals($this->msg->hasKey(Auth_OpenID_OPENID_NS, 'mode'), true);
- }
- function test_hasKeyBARE()
- {
- $this->assertEquals($this->msg->hasKey(Auth_OpenID_BARE_NS, 'mode'), false);
- }
- function test_hasKeyNS1()
- {
- $this->assertEquals(
- $this->msg->hasKey(Auth_OpenID_OPENID1_NS, 'mode'), false);
- }
- function test_hasKeyNS2()
- {
- $this->assertEquals(
- $this->msg->hasKey(Auth_OpenID_OPENID2_NS, 'mode'), true);
- }
- function test_hasKeyNS3()
- {
- $this->assertEquals(
- $this->msg->hasKey('urn:nothing-significant', 'mode'), false);
- }
- function test_getArgsOpenID()
- {
- $this->assertEquals($this->msg->getArgs(Auth_OpenID_OPENID_NS),
- array('mode' => 'error',
- 'error' => 'unit test'));
- }
- function test_getArgsBARE()
- {
- $this->assertEquals($this->msg->getArgs(Auth_OpenID_BARE_NS),
- array('xey' => 'value'));
- }
- function test_getArgsNS1()
- {
- $this->assertEquals($this->msg->getArgs(Auth_OpenID_OPENID1_NS), array());
- }
- function test_getArgsNS2()
- {
- $this->assertEquals($this->msg->getArgs(Auth_OpenID_OPENID2_NS),
- array('mode' => 'error',
- 'error' => 'unit test'));
- }
- function test_getArgsNS3()
- {
- $this->assertEquals($this->msg->getArgs('urn:nothing-significant'), array());
- }
- function _test_updateArgsNS($ns, $before=null)
- {
- if ($before === null) {
- $before = array();
- }
- $update_args = array(
- 'Camper van Beethoven' => 'David Lowery',
- 'Magnolia Electric Co.' => 'Jason Molina');
- $this->assertEquals($this->msg->getArgs($ns), $before);
- $this->msg->updateArgs($ns, $update_args);
- $after = $before;
- $after = array_merge($after, $update_args);
- $this->assertEquals($this->msg->getArgs($ns), $after);
- }
- function test_updateArgsOpenID()
- {
- $this->_test_updateArgsNS(Auth_OpenID_OPENID_NS,
- array('mode' => 'error', 'error' => 'unit test'));
- }
- function test_updateArgsBARE()
- {
- $this->_test_updateArgsNS(Auth_OpenID_BARE_NS,
- array('xey' => 'value'));
- }
- function test_updateArgsNS1()
- {
- $this->_test_updateArgsNS(Auth_OpenID_OPENID1_NS);
- }
- function test_updateArgsNS2()
- {
- $this->_test_updateArgsNS(Auth_OpenID_OPENID2_NS,
- array('mode' => 'error', 'error' => 'unit test'));
- }
- function test_updateArgsNS3()
- {
- $this->_test_updateArgsNS('urn:nothing-significant');
- }
- function _test_setArgNS($ns)
- {
- $key = 'Camper van Beethoven';
- $value = 'David Lowery';
- $this->assertEquals($this->msg->getArg($ns, $key), null);
- $this->msg->setArg($ns, $key, $value);
- $this->assertEquals($this->msg->getArg($ns, $key), $value);
- }
- function test_setArgOpenID()
- {
- $this->_test_setArgNS(Auth_OpenID_OPENID_NS);
- }
- function test_setArgBARE()
- {
- $this->_test_setArgNS(Auth_OpenID_BARE_NS);
- }
- function test_setArgNS1()
- {
- $this->_test_setArgNS(Auth_OpenID_OPENID1_NS);
- }
- function test_setArgNS2()
- {
- $this->_test_setArgNS(Auth_OpenID_OPENID2_NS);
- }
- function test_setArgNS3()
- {
- $this->_test_setArgNS('urn:nothing-significant');
- }
- function test_badAlias()
- {
- // Make sure dotted aliases and OpenID protocol fields are not
- // allowed as namespace aliases.
- global $Auth_OpenID_OPENID_PROTOCOL_FIELDS;
- $all = array_merge($Auth_OpenID_OPENID_PROTOCOL_FIELDS, array('dotted.alias'));
- foreach ($all as $f) {
- $args = array(sprintf('openid.ns.%s', $f) => 'blah',
- sprintf('openid.%s.foo', $f) => 'test');
- // .fromPostArgs covers .fromPostArgs, .fromOpenIDArgs,
- // ._fromOpenIDArgs, and .fromOpenIDArgs (since it calls
- // .fromPostArgs). Python code raises AssertionError, but
- // we usually return null for bad things in PHP.
- $this->assertEquals($this->msg->fromPostArgs($args), null);
- }
- }
- function _test_delArgNS($ns)
- {
- $key = 'Camper van Beethoven';
- $value = 'David Lowery';
- $this->assertEquals($this->msg->delArg($ns, $key), false);
- $this->msg->setArg($ns, $key, $value);
- $this->assertEquals($this->msg->getArg($ns, $key), $value);
- $this->msg->delArg($ns, $key);
- $this->assertEquals($this->msg->getArg($ns, $key), null);
- }
- function test_delArgOpenID()
- {
- $this->_test_delArgNS(Auth_OpenID_OPENID_NS);
- }
- function test_delArgBARE()
- {
- $this->_test_delArgNS(Auth_OpenID_BARE_NS);
- }
- function test_delArgNS1()
- {
- $this->_test_delArgNS(Auth_OpenID_OPENID1_NS);
- }
- function test_delArgNS2()
- {
- $this->_test_delArgNS(Auth_OpenID_OPENID2_NS);
- }
- function test_delArgNS3()
- {
- $this->_test_delArgNS('urn:nothing-significant');
- }
- function test_overwriteExtensionArg()
- {
- $ns = 'urn:unittest_extension';
- $key = 'mykey';
- $value_1 = 'value_1';
- $value_2 = 'value_2';
- $this->msg->setArg($ns, $key, $value_1);
- $this->assertTrue($this->msg->getArg($ns, $key) == $value_1);
- $this->msg->setArg($ns, $key, $value_2);
- $this->assertTrue($this->msg->getArg($ns, $key) == $value_2);
- }
- function test_argList()
- {
- $this->assertEquals($this->msg->fromPostArgs(array('arg' => array(1, 2, 3))),
- null);
- }
- function test_isOpenID1()
- {
- $this->assertFalse($this->msg->isOpenID1());
- }
- function test_isOpenID2()
- {
- $this->assertTrue($this->msg->isOpenID2());
- }
- function test_args()
- {
- $this->_argTest(Auth_OpenID_BARE_NS, 'mode');
- $this->_argTest(Auth_OpenID_OPENID_NS, 'mode', 'error');
- $this->_argTest(Auth_OpenID_OPENID1_NS, 'mode');
- $this->_argTest(Auth_OpenID_OPENID2_NS, 'mode', 'error');
- $this->_argTest('urn:nothing-significant', 'mode');
- }
- }
- class Tests_Auth_OpenID_GeneralMessageTest extends PHPUnit_TestCase {
- function setUp()
- {
- $this->postargs = array(
- 'openid.ns' => Auth_OpenID_OPENID2_NS,
- 'openid.mode' => 'checkid_setup',
- 'openid.identity' => 'http://bogus.example.invalid:port/',
- 'openid.assoc_handle' => 'FLUB',
- 'openid.return_to' => 'Neverland');
- $this->action_url = 'scheme://host:port/path?query';
- $this->form_tag_attrs = array(
- 'company' => 'janrain',
- 'class' => 'fancyCSS');
- $this->submit_text = 'GO!';
- // Expected data regardless of input
- $this->required_form_attrs = array(
- 'accept-charset' => 'UTF-8',
- 'enctype' => 'application/x-www-form-urlencoded',
- 'method' => 'post');
- }
- function _checkForm($html, $message_, $action_url,
- $form_tag_attrs, $submit_text)
- {
- $parser =& Auth_Yadis_getXMLParser();
- // Parse HTML source
- $this->assertTrue($parser->init($html, array()));
- // Get root element
- $form = $parser->evalXPath('/form[1]');
- $this->assertTrue(count($form) == 1);
- $form = $form[0];
- // Check required form attributes
- $form_attrs = $parser->attributes($form);
- foreach ($this->required_form_attrs as $k => $v) {
- $this->assertTrue($form_attrs[$k] == $v);
- }
- // Check extra form attributes
- foreach ($form_tag_attrs as $k => $v) {
- // Skip attributes that already passed the required
- // attribute check, since they should be ignored by the
- // form generation code.
- if (in_array($k, array_keys($this->required_form_attrs))) {
- continue;
- }
- $this->assertTrue($form_attrs[$k] == $v,
- "Form attr $k is ".$form_attrs[$k]." (expected $v)");
- }
- // Check hidden fields against post args
- $hiddens = array();
- $input_elements = $parser->evalXPath('input', $form);
- foreach ($input_elements as $e) {
- $attrs = $parser->attributes($e);
- if (strtoupper($attrs['type']) == 'HIDDEN') {
- $hiddens[] = $e;
- }
- }
- // For each post arg, make sure there is a hidden with that
- // value. Make sure there are no other hiddens.
- $postargs = $message_->toPostArgs();
- foreach ($postargs as $name => $value) {
- $found = false;
- foreach ($hiddens as $e) {
- $attrs = $parser->attributes($e);
- if ($attrs['name'] == $name) {
- $this->assertTrue($attrs['value'] == $value);
- $found = true;
- break;
- }
- }
- if (!$found) {
- $this->fail("Post arg $name not found in form");
- }
- }
- $keys = array_keys($postargs);
- foreach ($hiddens as $e) {
- $attrs = $parser->attributes($e);
- $this->assertTrue(in_array($attrs['name'], $keys));
- }
- // Check action URL
- $this->assertTrue($form_attrs['action'] == $action_url);
- // Check submit text
- $submits = array();
- foreach ($input_elements as $e) {
- $attrs = $parser->attributes($e);
- if (strtoupper($attrs['type']) == 'SUBMIT') {
- $submits[] = $e;
- }
- }
- $this->assertTrue(count($submits) == 1);
- $attrs = $parser->attributes($submits[0]);
- $this->assertTrue($attrs['value'] == $submit_text);
- }
- function test_toFormMarkup()
- {
- $m = Auth_OpenID_Message::fromPostArgs($this->postargs);
- $html = $m->toFormMarkup($this->action_url, $this->form_tag_attrs,
- $this->submit_text);
- $this->_checkForm($html, $m, $this->action_url,
- $this->form_tag_attrs, $this->submit_text);
- }
- function test_overrideMethod()
- {
- // Be sure that caller cannot change form method to GET.
- $m = Auth_OpenID_Message::fromPostArgs($this->postargs);
- $tag_attrs = $this->form_tag_attrs;
- $tag_attrs['method'] = 'GET';
- $html = $m->toFormMarkup($this->action_url, $this->form_tag_attrs,
- $this->submit_text);
- $this->_checkForm($html, $m, $this->action_url,
- $this->form_tag_attrs, $this->submit_text);
- }
- function test_overrideRequired()
- {
- // Be sure that caller CANNOT change the form charset for
- // encoding type.
- $m = Auth_OpenID_Message::fromPostArgs($this->postargs);
- $tag_attrs = $this->form_tag_attrs;
- $tag_attrs['accept-charset'] = 'UCS4';
- $tag_attrs['enctype'] = 'invalid/x-broken';
- $html = $m->toFormMarkup($this->action_url, $tag_attrs,
- $this->submit_text);
- $this->_checkForm($html, $m, $this->action_url,
- $tag_attrs, $this->submit_text);
- }
- function test_setOpenIDNamespace_invalid()
- {
- $m = new Auth_OpenID_Message();
- $invalid_things = array(
- // Empty string is not okay here.
- '',
- // Good guess! But wrong.
- 'http://openid.net/signon/2.0',
- // What?
- 'http://specs%\\\r2Eopenid.net/auth/2.0',
- // Too much escapings!
- 'http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0',
- // This is a Type URI, not a openid.ns value.
- 'http://specs.openid.net/auth/2.0/signon',
- );
- foreach ($invalid_things as $x) {
- $this->assertTrue($m->setOpenIDNamespace($x, true) === false);
- }
- }
- function test_isOpenID1()
- {
- $v1_namespaces = array(
- // Yes, there are two of them.
- 'http://openid.net/signon/1.1',
- 'http://openid.net/signon/1.0',
- );
- foreach ($v1_namespaces as $ns) {
- $m = new Auth_OpenID_Message($ns);
- $this->assertTrue($m->isOpenID1(),
- "$ns not recognized as OpenID 1");
- $this->assertEquals($ns, $m->getOpenIDNamespace());
- $this->assertTrue($m->namespaces->isImplicit($ns));
- }
- }
- function test_isOpenID2()
- {
- $ns = 'http://specs.openid.net/auth/2.0';
- $m = new Auth_OpenID_Message($ns);
- $this->assertTrue($m->isOpenID2());
- $this->assertFalse(
- $m->namespaces->isImplicit(Auth_OpenID_NULL_NAMESPACE));
- $this->assertEquals($ns, $m->getOpenIDNamespace());
- }
- function test_setOpenIDNamespace_explicit()
- {
- $m = new Auth_OpenID_Message();
- $m->setOpenIDNamespace(Auth_OpenID_THE_OTHER_OPENID1_NS, false);
- $this->assertFalse($m->namespaces->isImplicit(
- Auth_OpenID_THE_OTHER_OPENID1_NS));
- }
- function test_setOpenIDNamespace_implicit()
- {
- $m = new Auth_OpenID_Message();
- $m->setOpenIDNamespace(Auth_OpenID_THE_OTHER_OPENID1_NS, true);
- $this->assertTrue(
- $m->namespaces->isImplicit(Auth_OpenID_THE_OTHER_OPENID1_NS));
- }
- function test_explicitOpenID11NSSerialzation()
- {
- $m = new Auth_OpenID_Message();
- $m->setOpenIDNamespace(Auth_OpenID_THE_OTHER_OPENID1_NS, false);
- $post_args = $m->toPostArgs();
- $this->assertEquals($post_args,
- array('openid.ns' =>
- Auth_OpenID_THE_OTHER_OPENID1_NS));
- }
- function test_fromPostArgs_ns11()
- {
- // An example of the stuff that some Drupal installations send us,
- // which includes openid.ns but is 1.1.
- $query = array(
- 'openid.assoc_handle' => '',
- 'openid.claimed_id' => 'http://foobar.invalid/',
- 'openid.identity' => 'http://foobar.myopenid.com',
- 'openid.mode' => 'checkid_setup',
- 'openid.ns' => 'http://openid.net/signon/1.1',
- 'openid.ns.sreg' => 'http://openid.net/extensions/sreg/1.1',
- 'openid.return_to' => 'http://drupal.invalid/return_to',
- 'openid.sreg.required' => 'nickname,email',
- 'openid.trust_root' => 'http://drupal.invalid',
- );
- $m = Auth_OpenID_Message::fromPostArgs($query);
- $this->assertTrue($m->isOpenID1());
- }
- }
- class Tests_Auth_OpenID_NamespaceMap extends PHPUnit_TestCase {
- function test_onealias()
- {
- $nsm = new Auth_OpenID_NamespaceMap();
- $uri = 'http://example.com/foo';
- $alias = "foo";
- $nsm->addAlias($uri, $alias);
- $this->assertTrue($nsm->getNamespaceURI($alias) == $uri);
- $this->assertTrue($nsm->getAlias($uri) == $alias);
- }
- function test_iteration()
- {
- $nsm = new Auth_OpenID_NamespaceMap();
- $uripat = 'http://example.com/foo%d';
- $nsm->add(sprintf($uripat, 0));
- for ($n = 1; $n < 23; $n++) {
- $this->assertTrue($nsm->contains(sprintf($uripat, $n - 1)));
- $this->assertTrue($nsm->isDefined(sprintf($uripat, $n - 1)));
- $nsm->add(sprintf($uripat, $n));
- }
- foreach ($nsm->iteritems() as $pair) {
- list($uri, $alias) = $pair;
- $this->assertTrue('ext'.substr($uri, 22) == $alias);
- }
- $it = $nsm->iterAliases();
- $this->assertTrue(count($it) == 23);
- $it = $nsm->iterNamespaceURIs();
- $this->assertTrue(count($it) == 23);
- }
- }
- class Tests_Auth_OpenID_Message extends PHPUnit_TestCase {
- }
- global $Tests_Auth_OpenID_Message_other;
- $Tests_Auth_OpenID_Message_other = array(
- new Tests_Auth_OpenID_EmptyMessage(),
- new Tests_Auth_OpenID_OpenID1Message(),
- new Tests_Auth_OpenID_OpenID2Message(),
- new Tests_Auth_OpenID_NamespaceMap(),
- new Tests_Auth_OpenID_OpenID1ExplicitMessage(),
- new Tests_Auth_OpenID_GeneralMessageTest()
- );
- ?>
|