2010-08-06 00:23:07 +00:00
|
|
|
from . sleektest import *
|
2010-07-30 03:58:25 +00:00
|
|
|
from sleekxmpp.xmlstream.stanzabase import ET
|
|
|
|
|
|
|
|
|
|
|
|
class TestIqStanzas(SleekTest):
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
"""Shutdown the XML stream after testing."""
|
|
|
|
self.streamClose()
|
|
|
|
|
|
|
|
def testSetup(self):
|
|
|
|
"""Test initializing default Iq values."""
|
|
|
|
iq = self.Iq()
|
|
|
|
self.checkIq(iq, """
|
|
|
|
<iq id="0" />
|
|
|
|
""")
|
2010-08-06 00:23:07 +00:00
|
|
|
|
2010-07-30 03:58:25 +00:00
|
|
|
def testPayload(self):
|
|
|
|
"""Test setting Iq stanza payload."""
|
|
|
|
iq = self.Iq()
|
|
|
|
iq.setPayload(ET.Element('{test}tester'))
|
|
|
|
self.checkIq(iq, """
|
|
|
|
<iq id="0">
|
|
|
|
<tester xmlns="test" />
|
|
|
|
</iq>
|
|
|
|
""", use_values=False)
|
|
|
|
|
|
|
|
|
|
|
|
def testUnhandled(self):
|
|
|
|
"""Test behavior for Iq.unhandled."""
|
2010-08-11 22:41:57 +00:00
|
|
|
self.streamStart()
|
2010-07-30 03:58:25 +00:00
|
|
|
self.streamRecv("""
|
|
|
|
<iq id="test" type="get">
|
|
|
|
<query xmlns="test" />
|
|
|
|
</iq>
|
|
|
|
""")
|
|
|
|
|
2010-08-06 00:23:07 +00:00
|
|
|
iq = self.Iq()
|
2010-07-30 03:58:25 +00:00
|
|
|
iq['id'] = 'test'
|
2010-08-06 00:23:07 +00:00
|
|
|
iq['error']['condition'] = 'feature-not-implemented'
|
|
|
|
iq['error']['text'] = 'No handlers registered for this request.'
|
2010-07-30 03:58:25 +00:00
|
|
|
|
|
|
|
self.streamSendIq(iq, """
|
|
|
|
<iq id="test" type="error">
|
|
|
|
<error type="cancel">
|
|
|
|
<feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" />
|
|
|
|
<text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">
|
|
|
|
No handlers registered for this request.
|
|
|
|
</text>
|
|
|
|
</error>
|
|
|
|
</iq>
|
|
|
|
""")
|
|
|
|
|
|
|
|
def testQuery(self):
|
|
|
|
"""Test modifying query element of Iq stanzas."""
|
|
|
|
iq = self.Iq()
|
|
|
|
|
|
|
|
iq['query'] = 'query_ns'
|
|
|
|
self.checkIq(iq, """
|
|
|
|
<iq id="0">
|
|
|
|
<query xmlns="query_ns" />
|
|
|
|
</iq>
|
|
|
|
""")
|
|
|
|
|
|
|
|
iq['query'] = 'query_ns2'
|
|
|
|
self.checkIq(iq, """
|
|
|
|
<iq id="0">
|
|
|
|
<query xmlns="query_ns2" />
|
|
|
|
</iq>
|
|
|
|
""")
|
|
|
|
|
2010-08-06 00:23:07 +00:00
|
|
|
self.failUnless(iq['query'] == 'query_ns2', "Query namespace doesn't match")
|
2010-07-30 03:58:25 +00:00
|
|
|
|
2010-08-06 00:23:07 +00:00
|
|
|
del iq['query']
|
|
|
|
self.checkIq(iq, """
|
2010-07-30 03:58:25 +00:00
|
|
|
<iq id="0" />
|
|
|
|
""")
|
|
|
|
|
|
|
|
def testReply(self):
|
|
|
|
"""Test setting proper result type in Iq replies."""
|
|
|
|
iq = self.Iq()
|
2010-08-06 00:23:07 +00:00
|
|
|
iq['to'] = 'user@localhost'
|
|
|
|
iq['type'] = 'get'
|
2010-07-30 03:58:25 +00:00
|
|
|
iq.reply()
|
|
|
|
|
2010-08-06 00:23:07 +00:00
|
|
|
self.checkIq(iq, """
|
2010-07-30 03:58:25 +00:00
|
|
|
<iq id="0" type="result" />
|
|
|
|
""")
|
|
|
|
|
|
|
|
suite = unittest.TestLoader().loadTestsFromTestCase(TestIqStanzas)
|