summaryrefslogtreecommitdiff
path: root/tests/test_iqstanzas.py
diff options
context:
space:
mode:
authorLance Stout <lancestout@gmail.com>2010-07-29 23:58:25 -0400
committerLance Stout <lancestout@gmail.com>2010-07-29 23:58:25 -0400
commitcbed8029bad691f8353854dc264f83303a196a09 (patch)
treef1046af3647f7aa9f6c806af9022c9c51f93836c /tests/test_iqstanzas.py
parent1da3e5b35eb59909d4d6903b1c0190a7aad98a30 (diff)
downloadslixmpp-cbed8029bad691f8353854dc264f83303a196a09.tar.gz
slixmpp-cbed8029bad691f8353854dc264f83303a196a09.tar.bz2
slixmpp-cbed8029bad691f8353854dc264f83303a196a09.tar.xz
slixmpp-cbed8029bad691f8353854dc264f83303a196a09.zip
Updated, cleaned, and documented Iq stanza class. Also added unit tests.
Diffstat (limited to 'tests/test_iqstanzas.py')
-rw-r--r--tests/test_iqstanzas.py93
1 files changed, 93 insertions, 0 deletions
diff --git a/tests/test_iqstanzas.py b/tests/test_iqstanzas.py
new file mode 100644
index 00000000..9ae59297
--- /dev/null
+++ b/tests/test_iqstanzas.py
@@ -0,0 +1,93 @@
+from sleektest import *
+from sleekxmpp.xmlstream.stanzabase import ET
+
+
+class TestIqStanzas(SleekTest):
+
+ def setUp(self):
+ """Start XML stream for testing."""
+ self.streamStart()
+
+ 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" />
+ """)
+
+ 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."""
+ self.streamRecv("""
+ <iq id="test" type="get">
+ <query xmlns="test" />
+ </iq>
+ """)
+
+ iq = self.Iq()
+ iq['id'] = 'test'
+ iq['error']['condition'] = 'feature-not-implemented'
+ iq['error']['text'] = 'No handlers registered for this request.'
+
+ 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>
+ """)
+
+ self.failUnless(iq['query'] == 'query_ns2', "Query namespace doesn't match")
+
+ del iq['query']
+ self.checkIq(iq, """
+ <iq id="0" />
+ """)
+
+ def testReply(self):
+ """Test setting proper result type in Iq replies."""
+ iq = self.Iq()
+ iq['to'] = 'user@localhost'
+ iq['type'] = 'get'
+ iq.reply()
+
+ self.checkIq(iq, """
+ <iq id="0" type="result" />
+ """)
+
+suite = unittest.TestLoader().loadTestsFromTestCase(TestIqStanzas)