Beispiel #1
0
def getCanonicalID(iname, xrd_tree):
    """Return the CanonicalID from this XRDS document.

    @param iname: the XRI being resolved.
    @type iname: unicode

    @param xrd_tree: The XRDS output from the resolver.
    @type xrd_tree: ElementTree

    @returns: The XRI CanonicalID or None.
    @returntype: unicode or None
    """
    xrd_list = xrd_tree.findall(xrd_tag)
    xrd_list.reverse()

    try:
        canonicalID = xri.XRI(xrd_list[0].findall(canonicalID_tag)[0].text)
    except IndexError:
        return None

    childID = canonicalID.lower()

    for xrd in xrd_list[1:]:
        parent_sought = childID.rsplit("!", 1)[0]
        parent = xri.XRI(xrd.findtext(canonicalID_tag))
        if parent_sought != parent.lower():
            raise XRDSFraud("%r can not come from %s" % (childID, parent))

        childID = parent_sought

    root = xri.rootAuthority(iname)
    if not xri.providerIsAuthoritative(root, childID):
        raise XRDSFraud("%r can not come from root %r" % (childID, root))

    return canonicalID
Beispiel #2
0
 def _getCanonicalID(self, iname, xrds, expectedID):
     if isinstance(expectedID, six.string_types + (type(None), )):
         cid = etxrd.getCanonicalID(iname, xrds)
         self.assertEqual(cid, expectedID and xri.XRI(expectedID))
     elif issubclass(expectedID, etxrd.XRDSError):
         self.assertRaises(expectedID, etxrd.getCanonicalID, iname, xrds)
     else:
         self.fail("Don't know how to test for expected value %r" %
                   (expectedID, ))
Beispiel #3
0
 def _getCanonicalID(self, iname, xrds, expectedID):
     if isinstance(expectedID, (str, unicode, type(None))):
         cid = etxrd.getCanonicalID(iname, xrds)
         self.failUnlessEqual(cid, expectedID and xri.XRI(expectedID))
     elif issubclass(expectedID, etxrd.XRDSError):
         self.failUnlessRaises(expectedID, etxrd.getCanonicalID, iname,
                               xrds)
     else:
         self.fail("Don't know how to test for expected value %r" %
                   (expectedID, ))
Beispiel #4
0
def getCanonicalID(iname, xrd_tree):
    """Return the CanonicalID from this XRDS document.

    @param iname: the XRI being resolved.
    @type iname: unicode

    @param xrd_tree: The XRDS output from the resolver.
    @type xrd_tree: ElementTree

    @returns: The XRI CanonicalID or None.
    @returntype: unicode or None
    """
    xrd_list = xrd_tree.findall(xrd_tag)
    xrd_list.reverse()

    try:
        canonicalID = xri.XRI(xrd_list[0].findall(canonicalID_tag)[-1].text)
    except IndexError:
        return None

    childID = canonicalID

    for xrd in xrd_list[1:]:
        # XXX: can't use rsplit until we require python >= 2.4.
        parent_sought = childID[:childID.rindex('!')]
        parent_list = [xri.XRI(c.text) for c in xrd.findall(canonicalID_tag)]
        if parent_sought not in parent_list:
            raise XRDSFraud("%r can not come from any of %s" %
                            (parent_sought, parent_list))

        childID = parent_sought

    root = xri.rootAuthority(iname)
    if not xri.providerIsAuthoritative(root, childID):
        raise XRDSFraud("%r can not come from root %r" % (childID, root))

    return canonicalID
Beispiel #5
0
 def test(self):
     actual_root = xri.rootAuthority(the_xri)
     self.assertEqual(actual_root, xri.XRI(expected_root))
Beispiel #6
0
 def test(self):
     actual_root = xri.rootAuthority(the_xri)
     self.failUnlessEqual(actual_root, xri.XRI(expected_root))