~certify-web-dev/twisted/certify-trunk

« back to all changes in this revision

Viewing changes to twisted/words/test/test_jabberxmppstringprep.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2007-01-17 14:52:35 UTC
  • mfrom: (1.1.5 upstream) (2.1.2 etch)
  • Revision ID: james.westby@ubuntu.com-20070117145235-btmig6qfmqfen0om
Tags: 2.5.0-0ubuntu1
New upstream version, compatible with python2.5.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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, resourceprep, 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')