| 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 |