Package yadis :: Package test :: Module test_xri
[hide private]
[frames] | no frames]

Source Code for Module yadis.test.test_xri

  1   
  2  from unittest import TestCase 
  3  from yadis import xri 
  4   
5 -class XriDiscoveryTestCase(TestCase):
6 - def test_isXRI(self):
7 i = xri.identifierScheme 8 self.failUnlessEqual(i('=john.smith'), 'XRI') 9 self.failUnlessEqual(i('@smiths/john'), 'XRI') 10 self.failUnlessEqual(i('smoker.myopenid.com'), 'URI') 11 self.failUnlessEqual(i('xri://=john'), 'XRI')
12 13
14 -class XriEscapingTestCase(TestCase):
15 - def test_escaping_percents(self):
16 self.failUnlessEqual(xri.escapeForIRI('@example/abc%2Fd/ef'), 17 '@example/abc%252Fd/ef')
18 19
20 - def test_escaping_xref(self):
21 # no escapes 22 esc = xri.escapeForIRI 23 self.failUnlessEqual('@example/foo/(@bar)', esc('@example/foo/(@bar)')) 24 # escape slashes 25 self.failUnlessEqual('@example/foo/(@bar%2Fbaz)', 26 esc('@example/foo/(@bar/baz)')) 27 self.failUnlessEqual('@example/foo/(@bar%2Fbaz)/(+a%2Fb)', 28 esc('@example/foo/(@bar/baz)/(+a/b)')) 29 # escape query ? and fragment # 30 self.failUnlessEqual('@example/foo/(@baz%3Fp=q%23r)?i=j#k', 31 esc('@example/foo/(@baz?p=q#r)?i=j#k'))
32 33 34
35 -class XriTransformationTestCase(TestCase):
36 - def test_to_iri_normal(self):
37 self.failUnlessEqual(xri.toIRINormal('@example'), 'xri://@example')
38 39 try: 40 unichr(0x10000) 41 except ValueError: 42 # bleh narrow python build
43 - def test_iri_to_url(self):
44 s = u'l\xa1m' 45 expected = 'l%C2%A1m' 46 self.failUnlessEqual(xri.iriToURI(s), expected)
47 else:
48 - def test_iri_to_url(self):
49 s = u'l\xa1m\U00101010n' 50 expected = 'l%C2%A1m%F4%81%80%90n' 51 self.failUnlessEqual(xri.iriToURI(s), expected)
52 53 54
55 -class CanonicalIDTest(TestCase):
56 providerIsAuthoritativeCases = [ 57 # provider, canonicalID, isAuthoritative 58 ('=', '=!698.74D1.A1F2.86C7', True), 59 ('@!1234', '@!1234!ABCD', True), 60 ('@!1234!5678', '@!1234!5678!ABCD', True), 61 ('@!1234', '=!1234!ABCD', False), 62 ('@!1234', '@!1234!ABCD!9765', False), 63 ('@!1234!ABCD', '=!1234', False), 64 ('=!BABE', '=!D00D', False), 65 ] 66 67
69 """Checking whether this provider is authoratitve for 70 the given XRI.""" 71 # XXX: Should perhaps be more like the other data-driven tests? 72 for providerID, canonicalID, isAuthoritative in \ 73 self.providerIsAuthoritativeCases: 74 self._providerIsAuthoritative(providerID, canonicalID, 75 isAuthoritative)
76 77
78 - def _providerIsAuthoritative(self, providerID, canonicalID, expected):
79 result = xri.providerIsAuthoritative(providerID, canonicalID) 80 self.failUnlessEqual(expected, result, 81 "%s providing %s, expected %s" % (providerID, 82 canonicalID, 83 expected))
84 85 86
87 -class TestGetRootAuthority(TestCase):
88 xris = [ 89 ("@foo", "@"), 90 ("@foo*bar", "@"), 91 ("@*foo*bar", "@"), 92 ("@foo/bar", "@"), 93 ("!!990!991", "!"), 94 ("!1001!02", "!"), 95 ("=foo*bar", "="), 96 ("(example.com)/foo", "(example.com)"), 97 ("(example.com)*bar/foo", "(example.com)"), 98 ("baz.example.com/foo", "baz.example.com"), 99 ("baz.example.com:8080/foo", "baz.example.com:8080"), 100 # Looking at the ABNF in XRI Syntax 2.0, I don't think you can 101 # have example.com*bar. You can do (example.com)*bar, but that 102 # would mean something else. 103 ##("example.com*bar/(=baz)", "example.com*bar"), 104 ##("baz.example.com!01/foo", "baz.example.com!01"), 105 ] 106 107
108 - def test_getRootAuthority(self):
109 for thexri, expected_root in self.xris: 110 self.failUnlessEqual(xri.rootAuthority(thexri), 111 xri.XRI(expected_root))
112 113 114 115 if __name__ == '__main__': 116 import unittest 117 unittest.main() 118