function runTest() { $xris = array(array("@foo", "@"), array("@foo*bar", "@"), array("@*foo*bar", "@"), array("@foo/bar", "@"), array("!!990!991", "!"), array("!1001!02", "!"), array("=foo*bar", "="), array("(example.com)/foo", "(example.com)"), array("(example.com)*bar/foo", "(example.com)"), array("baz.example.com/foo", "baz.example.com"), array("baz.example.com:8080/foo", "baz.example.com:8080")); foreach ($xris as $tupl) { list($thexri, $expected_root) = $tupl; $this->assertEquals(Auth_Yadis_XRI($expected_root), Auth_Yadis_rootAuthority($thexri), 'rootAuthority test (' . $thexri . ')'); } }
function _getCanonicalID($iname, $xrds, $expectedID) { if ($expectedID === null) { $result = Auth_Yadis_getCanonicalID($iname, $xrds); if ($result !== false) { $this->fail($iname . ' (got ' . $result . ')'); } } else { $cid = Auth_Yadis_getCanonicalID($iname, $xrds); $this->assertEquals(Auth_Yadis_XRI($expectedID), $cid); } }
function Auth_Yadis_getCanonicalID($iname, $xrds) { // Returns false or a canonical ID value. // Now nodes are in reverse order. $xrd_list = array_reverse($xrds->allXrdNodes); $parser = $xrds->parser; $node = $xrd_list[0]; $canonicalID_nodes = $parser->evalXPath('xrd:CanonicalID', $node); if (!$canonicalID_nodes) { return false; } $canonicalID = $canonicalID_nodes[0]; $canonicalID = Auth_Yadis_XRI($parser->content($canonicalID)); $childID = $canonicalID; for ($i = 1; $i < count($xrd_list); $i++) { $xrd = $xrd_list[$i]; $parent_sought = substr($childID, 0, strrpos($childID, '!')); $parentCID = $parser->evalXPath('xrd:CanonicalID', $xrd); if (!$parentCID) { return false; } $parentCID = Auth_Yadis_XRI($parser->content($parentCID[0])); if (strcasecmp($parent_sought, $parentCID)) { // raise XRDSFraud. return false; } $childID = $parent_sought; } $root = Auth_Yadis_rootAuthority($iname); if (!Auth_Yadis_providerIsAuthoritative($root, $childID)) { // raise XRDSFraud. return false; } return $canonicalID; }
function test_useCanonicalID() { $endpoint = new Auth_OpenID_ServiceEndpoint(); $endpoint->claimed_id = Auth_Yadis_XRI("=!1000"); $endpoint->canonicalID = Auth_Yadis_XRI("=!1000"); $htis->assertEquals($endpoint->getLocalID(), Auth_Yadis_XRI("=!1000")); }