3 from slixmpp
.test
import SlixTest
5 class TestPresenceStanzas(SlixTest
):
7 def testPresenceShowRegression(self
):
8 """Regression check presence['type'] = 'dnd' show value working"""
11 self
.check(p
, "<presence><show>dnd</show></presence>")
13 def testPresenceType(self
):
14 """Test manipulating presence['type']"""
16 p
['type'] = 'available'
17 self
.check(p
, "<presence />")
18 self
.failUnless(p
['type'] == 'available',
19 "Incorrect presence['type'] for type 'available': %s" % p
['type'])
21 for showtype
in ['away', 'chat', 'dnd', 'xa']:
24 <presence><show>%s</show></presence>
26 self
.failUnless(p
['type'] == showtype
,
27 "Incorrect presence['type'] for type '%s'" % showtype
)
30 self
.check(p
, "<presence />")
32 def testPresenceUnsolicitedOffline(self
):
34 Unsolicted offline presence does not spawn changed_status
38 p
['type'] = 'unavailable'
39 p
['from'] = 'bill@chadmore.com/gmail15af'
41 c
= slixmpp
.ClientXMPP('crap@wherever', 'password')
44 def handlechangedpresence(event
):
47 c
.add_event_handler("changed_status", handlechangedpresence
)
50 self
.failUnless(happened
== [],
51 "changed_status event triggered for extra unavailable presence")
52 roster
= c
.roster
['crap@wherever']
53 self
.failUnless(roster
['bill@chadmore.com'].resources
== {},
54 "Roster updated for superfulous unavailable presence")
56 def testNickPlugin(self
):
57 """Test presence/nick/nick stanza."""
59 p
['nick']['nick'] = 'A nickname!'
62 <nick xmlns="http://jabber.org/protocol/nick">A nickname!</nick>
67 suite
= unittest
.TestLoader().loadTestsFromTestCase(TestPresenceStanzas
)