2013-07-26 11:02:26 +00:00
|
|
|
import unittest
|
2014-07-17 12:19:04 +00:00
|
|
|
from slixmpp.test import SlixTest
|
|
|
|
from slixmpp.xmlstream import ET
|
2010-08-12 03:32:14 +00:00
|
|
|
|
|
|
|
|
2014-07-17 12:19:04 +00:00
|
|
|
class TestRosterStanzas(SlixTest):
|
2010-08-12 03:32:14 +00:00
|
|
|
|
|
|
|
def testAddItems(self):
|
|
|
|
"""Test adding items to a roster stanza."""
|
|
|
|
iq = self.Iq()
|
2014-09-21 16:51:06 +00:00
|
|
|
iq['roster'].set_items({
|
2010-08-12 03:32:14 +00:00
|
|
|
'user@example.com': {
|
|
|
|
'name': 'User',
|
|
|
|
'subscription': 'both',
|
|
|
|
'groups': ['Friends', 'Coworkers']},
|
|
|
|
'otheruser@example.com': {
|
|
|
|
'name': 'Other User',
|
|
|
|
'subscription': 'both',
|
|
|
|
'groups': []}})
|
2010-11-05 18:45:58 +00:00
|
|
|
self.check(iq, """
|
2010-08-12 03:32:14 +00:00
|
|
|
<iq>
|
|
|
|
<query xmlns="jabber:iq:roster">
|
|
|
|
<item jid="user@example.com" name="User" subscription="both">
|
|
|
|
<group>Friends</group>
|
|
|
|
<group>Coworkers</group>
|
|
|
|
</item>
|
|
|
|
<item jid="otheruser@example.com" name="Other User"
|
|
|
|
subscription="both" />
|
|
|
|
</query>
|
|
|
|
</iq>
|
|
|
|
""")
|
|
|
|
|
|
|
|
def testGetItems(self):
|
|
|
|
"""Test retrieving items from a roster stanza."""
|
|
|
|
xml_string = """
|
|
|
|
<iq>
|
|
|
|
<query xmlns="jabber:iq:roster">
|
|
|
|
<item jid="user@example.com" name="User" subscription="both">
|
|
|
|
<group>Friends</group>
|
|
|
|
<group>Coworkers</group>
|
|
|
|
</item>
|
|
|
|
<item jid="otheruser@example.com" name="Other User"
|
|
|
|
subscription="both" />
|
|
|
|
</query>
|
|
|
|
</iq>
|
|
|
|
"""
|
|
|
|
iq = self.Iq(ET.fromstring(xml_string))
|
|
|
|
expected = {
|
|
|
|
'user@example.com': {
|
|
|
|
'name': 'User',
|
|
|
|
'subscription': 'both',
|
2010-10-27 03:47:17 +00:00
|
|
|
'ask': '',
|
|
|
|
'approved': '',
|
2010-08-12 03:32:14 +00:00
|
|
|
'groups': ['Friends', 'Coworkers']},
|
|
|
|
'otheruser@example.com': {
|
|
|
|
'name': 'Other User',
|
|
|
|
'subscription': 'both',
|
2010-10-27 03:47:17 +00:00
|
|
|
'ask': '',
|
|
|
|
'approved': '',
|
2010-08-12 03:32:14 +00:00
|
|
|
'groups': []}}
|
|
|
|
debug = "Roster items don't match after retrieval."
|
|
|
|
debug += "\nReturned: %s" % str(iq['roster']['items'])
|
|
|
|
debug += "\nExpected: %s" % str(expected)
|
2018-10-08 21:25:23 +00:00
|
|
|
self.assertTrue(iq['roster']['items'] == expected, debug)
|
2010-08-12 03:32:14 +00:00
|
|
|
|
|
|
|
def testDelItems(self):
|
|
|
|
"""Test clearing items from a roster stanza."""
|
|
|
|
xml_string = """
|
|
|
|
<iq>
|
|
|
|
<query xmlns="jabber:iq:roster">
|
|
|
|
<item jid="user@example.com" name="User" subscription="both">
|
|
|
|
<group>Friends</group>
|
|
|
|
<group>Coworkers</group>
|
|
|
|
</item>
|
|
|
|
<item jid="otheruser@example.com" name="Other User"
|
|
|
|
subscription="both" />
|
|
|
|
</query>
|
|
|
|
</iq>
|
|
|
|
"""
|
|
|
|
iq = self.Iq(ET.fromstring(xml_string))
|
|
|
|
del iq['roster']['items']
|
2010-11-05 18:45:58 +00:00
|
|
|
self.check(iq, """
|
2010-08-12 03:32:14 +00:00
|
|
|
<iq>
|
|
|
|
<query xmlns="jabber:iq:roster" />
|
|
|
|
</iq>
|
|
|
|
""")
|
|
|
|
|
|
|
|
|
|
|
|
suite = unittest.TestLoader().loadTestsFromTestCase(TestRosterStanzas)
|