OLD | NEW |
| (Empty) |
1 # Copyright (c) 2005 Twisted Matrix Laboratories. | |
2 # See LICENSE for details. | |
3 | |
4 from twisted.trial import unittest | |
5 | |
6 from twisted.words.protocols.jabber.xmpp_stringprep import nodeprep, resourcepre
p, nameprep, crippled | |
7 | |
8 class XMPPStringPrepTest(unittest.TestCase): | |
9 """ | |
10 | |
11 The nodeprep stringprep profile is similar to the resourceprep profile, | |
12 but does an extra mapping of characters (table B.2) and disallows | |
13 more characters (table C.1.1 and eight extra punctuation characters). | |
14 Due to this similarity, the resourceprep tests are more extensive, and | |
15 the nodeprep tests only address the mappings additional restrictions. | |
16 | |
17 The nameprep profile is nearly identical to the nameprep implementation in | |
18 L{encodings.idna}, but that implementation assumes the C{UseSTD4ASCIIRules} | |
19 flag to be false. This implementation assumes it to be true, and restricts | |
20 the allowed set of characters. The tests here only check for the | |
21 differences. | |
22 | |
23 """ | |
24 | |
25 def testResourcePrep(self): | |
26 self.assertEquals(resourceprep.prepare(u'resource'), u'resource') | |
27 self.assertNotEquals(resourceprep.prepare(u'Resource'), u'resource') | |
28 self.assertEquals(resourceprep.prepare(u' '), u' ') | |
29 | |
30 if crippled: | |
31 return | |
32 | |
33 self.assertEquals(resourceprep.prepare(u'Henry \u2163'), u'Henry IV') | |
34 self.assertEquals(resourceprep.prepare(u'foo\xad\u034f\u1806\u180b' | |
35 u'bar\u200b\u2060' | |
36 u'baz\ufe00\ufe08\ufe0f\ufeff'), | |
37 u'foobarbaz') | |
38 self.assertEquals(resourceprep.prepare(u'\u00a0'), u' ') | |
39 self.assertRaises(UnicodeError, resourceprep.prepare, u'\u1680') | |
40 self.assertEquals(resourceprep.prepare(u'\u2000'), u' ') | |
41 self.assertEquals(resourceprep.prepare(u'\u200b'), u'') | |
42 self.assertRaises(UnicodeError, resourceprep.prepare, u'\u0010\u007f') | |
43 self.assertRaises(UnicodeError, resourceprep.prepare, u'\u0085') | |
44 self.assertRaises(UnicodeError, resourceprep.prepare, u'\u180e') | |
45 self.assertEquals(resourceprep.prepare(u'\ufeff'), u'') | |
46 self.assertRaises(UnicodeError, resourceprep.prepare, u'\uf123') | |
47 self.assertRaises(UnicodeError, resourceprep.prepare, u'\U000f1234') | |
48 self.assertRaises(UnicodeError, resourceprep.prepare, u'\U0010f234') | |
49 self.assertRaises(UnicodeError, resourceprep.prepare, u'\U0008fffe') | |
50 self.assertRaises(UnicodeError, resourceprep.prepare, u'\U0010ffff') | |
51 self.assertRaises(UnicodeError, resourceprep.prepare, u'\udf42') | |
52 self.assertRaises(UnicodeError, resourceprep.prepare, u'\ufffd') | |
53 self.assertRaises(UnicodeError, resourceprep.prepare, u'\u2ff5') | |
54 self.assertEquals(resourceprep.prepare(u'\u0341'), u'\u0301') | |
55 self.assertRaises(UnicodeError, resourceprep.prepare, u'\u200e') | |
56 self.assertRaises(UnicodeError, resourceprep.prepare, u'\u202a') | |
57 self.assertRaises(UnicodeError, resourceprep.prepare, u'\U000e0001') | |
58 self.assertRaises(UnicodeError, resourceprep.prepare, u'\U000e0042') | |
59 self.assertRaises(UnicodeError, resourceprep.prepare, u'foo\u05bebar') | |
60 self.assertRaises(UnicodeError, resourceprep.prepare, u'foo\ufd50bar') | |
61 #self.assertEquals(resourceprep.prepare(u'foo\ufb38bar'), | |
62 # u'foo\u064ebar') | |
63 self.assertRaises(UnicodeError, resourceprep.prepare, u'\u06271') | |
64 self.assertEquals(resourceprep.prepare(u'\u06271\u0628'), | |
65 u'\u06271\u0628') | |
66 self.assertRaises(UnicodeError, resourceprep.prepare, u'\U000e0002') | |
67 | |
68 def testNodePrep(self): | |
69 self.assertEquals(nodeprep.prepare(u'user'), u'user') | |
70 self.assertEquals(nodeprep.prepare(u'User'), u'user') | |
71 self.assertRaises(UnicodeError, nodeprep.prepare, u'us&er') | |
72 | |
73 def testNamePrep(self): | |
74 self.assertEquals(nameprep.prepare(u'example.com'), u'example.com') | |
75 self.assertEquals(nameprep.prepare(u'Example.com'), u'example.com') | |
76 self.assertRaises(UnicodeError, nameprep.prepare, u'ex@mple.com') | |
77 self.assertRaises(UnicodeError, nameprep.prepare, u'-example.com') | |
78 self.assertRaises(UnicodeError, nameprep.prepare, u'example-.com') | |
79 | |
80 if crippled: | |
81 return | |
82 | |
83 self.assertEquals(nameprep.prepare(u'stra\u00dfe.example.com'), | |
84 u'strasse.example.com') | |
OLD | NEW |