def prep(user, host, resource): """ Perform stringprep on all JID fragments. @param user: The user part of the JID. @type user: C{unicode} @param host: The host part of the JID. @type host: C{unicode} @param resource: The resource part of the JID. @type resource: C{unicode} @return: The given parts with stringprep applied. @rtype: C{tuple} """ if user: try: user = nodeprep.prepare(unicode(user)) except UnicodeError: raise InvalidFormat, "Invalid character in username" else: user = None if not host: raise InvalidFormat, "Server address required." else: try: host = nameprep.prepare(unicode(host)) except UnicodeError: raise InvalidFormat, "Invalid character in hostname" if resource: try: resource = resourceprep.prepare(unicode(resource)) except UnicodeError: raise InvalidFormat, "Invalid character in resource" else: resource = None return (user, host, resource)
def prep(user, host, resource): """ Perform stringprep on all JID fragments. @param user: The user part of the JID. @type user: C{unicode} @param host: The host part of the JID. @type host: C{unicode} @param resource: The resource part of the JID. @type resource: C{unicode} @return: The given parts with stringprep applied. @rtype: C{tuple} """ if user: try: user = nodeprep.prepare(unicode(user)) except UnicodeError: raise InvalidFormat, "Invalid character in username" else: user = None if not host: raise InvalidFormat, "Server address required." else: try: host = nameprep.prepare(unicode(host)) except UnicodeError: raise InvalidFormat, "Invalid character in hostname" if resource: try: resource = resourceprep.prepare(unicode(resource)) except UnicodeError: raise InvalidFormat, "Invalid character in resource" else: resource = None return (user, host, resource)
def testResourcePrep(self): self.assertEquals(resourceprep.prepare(u'resource'), u'resource') self.assertNotEquals(resourceprep.prepare(u'Resource'), u'resource') self.assertEquals(resourceprep.prepare(u' '), u' ') if crippled: return self.assertEquals(resourceprep.prepare(u'Henry \u2163'), u'Henry IV') self.assertEquals(resourceprep.prepare(u'foo\xad\u034f\u1806\u180b' u'bar\u200b\u2060' u'baz\ufe00\ufe08\ufe0f\ufeff'), u'foobarbaz') self.assertEquals(resourceprep.prepare(u'\u00a0'), u' ') self.assertRaises(UnicodeError, resourceprep.prepare, u'\u1680') self.assertEquals(resourceprep.prepare(u'\u2000'), u' ') self.assertEquals(resourceprep.prepare(u'\u200b'), u'') self.assertRaises(UnicodeError, resourceprep.prepare, u'\u0010\u007f') self.assertRaises(UnicodeError, resourceprep.prepare, u'\u0085') self.assertRaises(UnicodeError, resourceprep.prepare, u'\u180e') self.assertEquals(resourceprep.prepare(u'\ufeff'), u'') self.assertRaises(UnicodeError, resourceprep.prepare, u'\uf123') self.assertRaises(UnicodeError, resourceprep.prepare, u'\U000f1234') self.assertRaises(UnicodeError, resourceprep.prepare, u'\U0010f234') self.assertRaises(UnicodeError, resourceprep.prepare, u'\U0008fffe') self.assertRaises(UnicodeError, resourceprep.prepare, u'\U0010ffff') self.assertRaises(UnicodeError, resourceprep.prepare, u'\udf42') self.assertRaises(UnicodeError, resourceprep.prepare, u'\ufffd') self.assertRaises(UnicodeError, resourceprep.prepare, u'\u2ff5') self.assertEquals(resourceprep.prepare(u'\u0341'), u'\u0301') self.assertRaises(UnicodeError, resourceprep.prepare, u'\u200e') self.assertRaises(UnicodeError, resourceprep.prepare, u'\u202a') self.assertRaises(UnicodeError, resourceprep.prepare, u'\U000e0001') self.assertRaises(UnicodeError, resourceprep.prepare, u'\U000e0042') self.assertRaises(UnicodeError, resourceprep.prepare, u'foo\u05bebar') self.assertRaises(UnicodeError, resourceprep.prepare, u'foo\ufd50bar') #self.assertEquals(resourceprep.prepare(u'foo\ufb38bar'), # u'foo\u064ebar') self.assertRaises(UnicodeError, resourceprep.prepare, u'\u06271') self.assertEquals(resourceprep.prepare(u'\u06271\u0628'), u'\u06271\u0628') self.assertRaises(UnicodeError, resourceprep.prepare, u'\U000e0002')