diff options
author | Lance Stout <lancestout@gmail.com> | 2010-07-29 23:58:25 -0400 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2010-07-29 23:58:25 -0400 |
commit | cbed8029bad691f8353854dc264f83303a196a09 (patch) | |
tree | f1046af3647f7aa9f6c806af9022c9c51f93836c /tests | |
parent | 1da3e5b35eb59909d4d6903b1c0190a7aad98a30 (diff) | |
download | slixmpp-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')
-rw-r--r-- | tests/test_iqstanzas.py | 93 |
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) |