Allow XEP 0092 to send os information
[slixmpp.git] / tests / test_stanza_roster.py
blobcd3e607cbb208ecbbc9f125af92defea52f5e770
1 from sleekxmpp.test import *
2 from sleekxmpp.stanza.roster import Roster
5 class TestRosterStanzas(SleekTest):
7 def testAddItems(self):
8 """Test adding items to a roster stanza."""
9 iq = self.Iq()
10 iq['roster'].setItems({
11 'user@example.com': {
12 'name': 'User',
13 'subscription': 'both',
14 'groups': ['Friends', 'Coworkers']},
15 'otheruser@example.com': {
16 'name': 'Other User',
17 'subscription': 'both',
18 'groups': []}})
19 self.check(iq, """
20 <iq>
21 <query xmlns="jabber:iq:roster">
22 <item jid="user@example.com" name="User" subscription="both">
23 <group>Friends</group>
24 <group>Coworkers</group>
25 </item>
26 <item jid="otheruser@example.com" name="Other User"
27 subscription="both" />
28 </query>
29 </iq>
30 """)
32 def testGetItems(self):
33 """Test retrieving items from a roster stanza."""
34 xml_string = """
35 <iq>
36 <query xmlns="jabber:iq:roster">
37 <item jid="user@example.com" name="User" subscription="both">
38 <group>Friends</group>
39 <group>Coworkers</group>
40 </item>
41 <item jid="otheruser@example.com" name="Other User"
42 subscription="both" />
43 </query>
44 </iq>
45 """
46 iq = self.Iq(ET.fromstring(xml_string))
47 expected = {
48 'user@example.com': {
49 'name': 'User',
50 'subscription': 'both',
51 'groups': ['Friends', 'Coworkers']},
52 'otheruser@example.com': {
53 'name': 'Other User',
54 'subscription': 'both',
55 'groups': []}}
56 debug = "Roster items don't match after retrieval."
57 debug += "\nReturned: %s" % str(iq['roster']['items'])
58 debug += "\nExpected: %s" % str(expected)
59 self.failUnless(iq['roster']['items'] == expected, debug)
61 def testDelItems(self):
62 """Test clearing items from a roster stanza."""
63 xml_string = """
64 <iq>
65 <query xmlns="jabber:iq:roster">
66 <item jid="user@example.com" name="User" subscription="both">
67 <group>Friends</group>
68 <group>Coworkers</group>
69 </item>
70 <item jid="otheruser@example.com" name="Other User"
71 subscription="both" />
72 </query>
73 </iq>
74 """
75 iq = self.Iq(ET.fromstring(xml_string))
76 del iq['roster']['items']
77 self.check(iq, """
78 <iq>
79 <query xmlns="jabber:iq:roster" />
80 </iq>
81 """)
84 suite = unittest.TestLoader().loadTestsFromTestCase(TestRosterStanzas)