| OLD | NEW |
| (Empty) |
| 1 # Copyright (c) 2001-2008 Twisted Matrix Laboratories. | |
| 2 # See LICENSE for details. | |
| 3 | |
| 4 """ | |
| 5 Tests for L{twisted.words.protocols.jabber.jid}. | |
| 6 """ | |
| 7 | |
| 8 from twisted.trial import unittest | |
| 9 | |
| 10 from twisted.words.protocols.jabber import jid | |
| 11 | |
| 12 class JIDParsingTest(unittest.TestCase): | |
| 13 def test_parse(self): | |
| 14 """ | |
| 15 Test different forms of JIDs. | |
| 16 """ | |
| 17 # Basic forms | |
| 18 self.assertEquals(jid.parse("user@host/resource"), | |
| 19 ("user", "host", "resource")) | |
| 20 self.assertEquals(jid.parse("user@host"), | |
| 21 ("user", "host", None)) | |
| 22 self.assertEquals(jid.parse("host"), | |
| 23 (None, "host", None)) | |
| 24 self.assertEquals(jid.parse("host/resource"), | |
| 25 (None, "host", "resource")) | |
| 26 | |
| 27 # More interesting forms | |
| 28 self.assertEquals(jid.parse("foo/bar@baz"), | |
| 29 (None, "foo", "bar@baz")) | |
| 30 self.assertEquals(jid.parse("boo@foo/bar@baz"), | |
| 31 ("boo", "foo", "bar@baz")) | |
| 32 self.assertEquals(jid.parse("boo@foo/bar/baz"), | |
| 33 ("boo", "foo", "bar/baz")) | |
| 34 self.assertEquals(jid.parse("boo/foo@bar@baz"), | |
| 35 (None, "boo", "foo@bar@baz")) | |
| 36 self.assertEquals(jid.parse("boo/foo/bar"), | |
| 37 (None, "boo", "foo/bar")) | |
| 38 self.assertEquals(jid.parse("boo//foo"), | |
| 39 (None, "boo", "/foo")) | |
| 40 | |
| 41 def test_noHost(self): | |
| 42 """ | |
| 43 Test for failure on no host part. | |
| 44 """ | |
| 45 self.assertRaises(jid.InvalidFormat, jid.parse, "user@") | |
| 46 | |
| 47 def test_doubleAt(self): | |
| 48 """ | |
| 49 Test for failure on double @ signs. | |
| 50 | |
| 51 This should fail because @ is not a valid character for the host | |
| 52 part of the JID. | |
| 53 """ | |
| 54 self.assertRaises(jid.InvalidFormat, jid.parse, "user@@host") | |
| 55 | |
| 56 def test_multipleAt(self): | |
| 57 """ | |
| 58 Test for failure on two @ signs. | |
| 59 | |
| 60 This should fail because @ is not a valid character for the host | |
| 61 part of the JID. | |
| 62 """ | |
| 63 self.assertRaises(jid.InvalidFormat, jid.parse, "user@host@host") | |
| 64 | |
| 65 # Basic tests for case mapping. These are fallback tests for the | |
| 66 # prepping done in twisted.words.protocols.jabber.xmpp_stringprep | |
| 67 | |
| 68 def test_prepCaseMapUser(self): | |
| 69 """ | |
| 70 Test case mapping of the user part of the JID. | |
| 71 """ | |
| 72 self.assertEquals(jid.prep("UsEr", "host", "resource"), | |
| 73 ("user", "host", "resource")) | |
| 74 | |
| 75 def test_prepCaseMapHost(self): | |
| 76 """ | |
| 77 Test case mapping of the host part of the JID. | |
| 78 """ | |
| 79 self.assertEquals(jid.prep("user", "hoST", "resource"), | |
| 80 ("user", "host", "resource")) | |
| 81 | |
| 82 def test_prepNoCaseMapResource(self): | |
| 83 """ | |
| 84 Test no case mapping of the resourcce part of the JID. | |
| 85 """ | |
| 86 self.assertEquals(jid.prep("user", "hoST", "resource"), | |
| 87 ("user", "host", "resource")) | |
| 88 self.assertNotEquals(jid.prep("user", "host", "Resource"), | |
| 89 ("user", "host", "resource")) | |
| 90 | |
| 91 class JIDTest(unittest.TestCase): | |
| 92 | |
| 93 def test_noneArguments(self): | |
| 94 """ | |
| 95 Test that using no arguments raises an exception. | |
| 96 """ | |
| 97 self.assertRaises(RuntimeError, jid.JID) | |
| 98 | |
| 99 def test_attributes(self): | |
| 100 """ | |
| 101 Test that the attributes correspond with the JID parts. | |
| 102 """ | |
| 103 j = jid.JID("user@host/resource") | |
| 104 self.assertEquals(j.user, "user") | |
| 105 self.assertEquals(j.host, "host") | |
| 106 self.assertEquals(j.resource, "resource") | |
| 107 | |
| 108 def test_userhost(self): | |
| 109 """ | |
| 110 Test the extraction of the bare JID. | |
| 111 """ | |
| 112 j = jid.JID("user@host/resource") | |
| 113 self.assertEquals("user@host", j.userhost()) | |
| 114 | |
| 115 def test_userhostOnlyHost(self): | |
| 116 """ | |
| 117 Test the extraction of the bare JID of the full form host/resource. | |
| 118 """ | |
| 119 j = jid.JID("host/resource") | |
| 120 self.assertEquals("host", j.userhost()) | |
| 121 | |
| 122 def test_userhostJID(self): | |
| 123 """ | |
| 124 Test getting a JID object of the bare JID. | |
| 125 """ | |
| 126 j1 = jid.JID("user@host/resource") | |
| 127 j2 = jid.internJID("user@host") | |
| 128 self.assertIdentical(j2, j1.userhostJID()) | |
| 129 | |
| 130 def test_userhostJIDNoResource(self): | |
| 131 """ | |
| 132 Test getting a JID object of the bare JID when there was no resource. | |
| 133 """ | |
| 134 j = jid.JID("user@host") | |
| 135 self.assertIdentical(j, j.userhostJID()) | |
| 136 | |
| 137 def test_fullHost(self): | |
| 138 """ | |
| 139 Test giving a string representation of the JID with only a host part. | |
| 140 """ | |
| 141 j = jid.JID(tuple=(None, 'host', None)) | |
| 142 self.assertEqual('host', j.full()) | |
| 143 | |
| 144 def test_fullHostResource(self): | |
| 145 """ | |
| 146 Test giving a string representation of the JID with host, resource. | |
| 147 """ | |
| 148 j = jid.JID(tuple=(None, 'host', 'resource')) | |
| 149 self.assertEqual('host/resource', j.full()) | |
| 150 | |
| 151 def test_fullUserHost(self): | |
| 152 """ | |
| 153 Test giving a string representation of the JID with user, host. | |
| 154 """ | |
| 155 j = jid.JID(tuple=('user', 'host', None)) | |
| 156 self.assertEqual('user@host', j.full()) | |
| 157 | |
| 158 def test_fullAll(self): | |
| 159 """ | |
| 160 Test giving a string representation of the JID. | |
| 161 """ | |
| 162 j = jid.JID(tuple=('user', 'host', 'resource')) | |
| 163 self.assertEqual('user@host/resource', j.full()) | |
| 164 | |
| 165 def test_equality(self): | |
| 166 """ | |
| 167 Test JID equality. | |
| 168 """ | |
| 169 j1 = jid.JID("user@host/resource") | |
| 170 j2 = jid.JID("user@host/resource") | |
| 171 self.assertNotIdentical(j1, j2) | |
| 172 self.assertEqual(j1, j2) | |
| 173 | |
| 174 def test_equalityWithNonJIDs(self): | |
| 175 """ | |
| 176 Test JID equality. | |
| 177 """ | |
| 178 j = jid.JID("user@host/resource") | |
| 179 self.assertFalse(j == 'user@host/resource') | |
| 180 | |
| 181 def test_inequality(self): | |
| 182 """ | |
| 183 Test JID inequality. | |
| 184 """ | |
| 185 j1 = jid.JID("user1@host/resource") | |
| 186 j2 = jid.JID("user2@host/resource") | |
| 187 self.assertNotEqual(j1, j2) | |
| 188 | |
| 189 def test_inequalityWithNonJIDs(self): | |
| 190 """ | |
| 191 Test JID equality. | |
| 192 """ | |
| 193 j = jid.JID("user@host/resource") | |
| 194 self.assertNotEqual(j, 'user@host/resource') | |
| 195 | |
| 196 def test_hashable(self): | |
| 197 """ | |
| 198 Test JID hashability. | |
| 199 """ | |
| 200 j1 = jid.JID("user@host/resource") | |
| 201 j2 = jid.JID("user@host/resource") | |
| 202 self.assertEqual(hash(j1), hash(j2)) | |
| 203 | |
| 204 def test_unicode(self): | |
| 205 """ | |
| 206 Test unicode representation of JIDs. | |
| 207 """ | |
| 208 j = jid.JID(tuple=('user', 'host', 'resource')) | |
| 209 self.assertEquals("user@host/resource", unicode(j)) | |
| 210 | |
| 211 def test_repr(self): | |
| 212 """ | |
| 213 Test representation of JID objects. | |
| 214 """ | |
| 215 j = jid.JID(tuple=('user', 'host', 'resource')) | |
| 216 self.assertEquals("JID(u'user@host/resource')", repr(j)) | |
| 217 | |
| 218 class InternJIDTest(unittest.TestCase): | |
| 219 def test_identity(self): | |
| 220 """ | |
| 221 Test that two interned JIDs yield the same object. | |
| 222 """ | |
| 223 j1 = jid.internJID("user@host") | |
| 224 j2 = jid.internJID("user@host") | |
| 225 self.assertIdentical(j1, j2) | |
| OLD | NEW |