Simplified SleekTest.

* check_stanza does not require stanza_class parameter. Introspection!
* check_message, check_iq, and check_presence removed -- use check
  instead.
* stream_send_stanza, stream_send_message, stream_send_iq, and
  stream_send_presence removed -- use send instead.
* Use recv instead of recv_message, recv_presence, etc.
* check_jid instead of check_JID
* stream_start may accept multi=True to return a new SleekTest instance
  for testing multiple streams at once.
This commit is contained in:
Lance Stout 2010-11-05 14:45:58 -04:00
parent 7351fe1a02
commit d0c506f930
22 changed files with 242 additions and 355 deletions

View file

@ -6,5 +6,5 @@
See the file LICENSE for copying permission. See the file LICENSE for copying permission.
""" """
__all__ = ['xep_0004', 'xep_0012', 'xep_0030', 'xep_0033', 'xep_0045', __all__ = ['xep_0004', 'xep_0012', 'xep_0030', 'xep_0033', 'xep_0045',
'xep_0050', 'xep_0078', 'xep_0085', 'xep_0092', 'xep_0199', 'xep_0050', 'xep_0085', 'xep_0092', 'xep_0199', 'gmail_notify',
'gmail_notify', 'xep_0060', 'xep_0202'] 'xep_0060', 'xep_0202']

View file

@ -1,5 +1,4 @@
""" """
SleekXMPP: The Sleek XMPP Library SleekXMPP: The Sleek XMPP Library
Copyright (C) 2010 Nathanael C. Fritz, Lance J.T. Stout Copyright (C) 2010 Nathanael C. Fritz, Lance J.T. Stout
This file is part of SleekXMPP. This file is part of SleekXMPP.
@ -27,27 +26,29 @@ class SleekTest(unittest.TestCase):
Message -- Create a Message stanza object. Message -- Create a Message stanza object.
Iq -- Create an Iq stanza object. Iq -- Create an Iq stanza object.
Presence -- Create a Presence stanza object. Presence -- Create a Presence stanza object.
check_stanza -- Compare a generic stanza against an XML string. check_jid -- Check a JID and its component parts.
check_message -- Compare a Message stanza against an XML string. check -- Compare a stanza against an XML string.
check_iq -- Compare an Iq stanza against an XML string.
check_presence -- Compare a Presence stanza against an XML string.
stream_start -- Initialize a dummy XMPP client. stream_start -- Initialize a dummy XMPP client.
stream_recv -- Queue data for XMPP client to receive.
stream_make_header -- Create a stream header.
stream_send_header -- Check that the given header has been sent.
stream_send_message -- Check that the XMPP client sent the given
Message stanza.
stream_send_iq -- Check that the XMPP client sent the given
Iq stanza.
stream_send_presence -- Check thatt the XMPP client sent the given
Presence stanza.
stream_send_stanza -- Check that the XMPP client sent the given
generic stanza.
stream_close -- Disconnect the XMPP client. stream_close -- Disconnect the XMPP client.
make_header -- Create a stream header.
send_header -- Check that the given header has been sent.
send_feature -- Send a raw XML element.
send -- Check that the XMPP client sent the given
generic stanza.
recv -- Queue data for XMPP client to receive, or
verify the data that was received from a
live connection.
recv_header -- Check that a given stream header
was received.
recv_feature -- Check that a given, raw XML element
was recveived.
fix_namespaces -- Add top-level namespace to an XML object. fix_namespaces -- Add top-level namespace to an XML object.
compare -- Compare XML objects against each other. compare -- Compare XML objects against each other.
""" """
def runTest(self):
pass
def parse_xml(self, xml_string): def parse_xml(self, xml_string):
try: try:
xml = ET.fromstring(xml_string) xml = ET.fromstring(xml_string)
@ -103,10 +104,8 @@ class SleekTest(unittest.TestCase):
""" """
return Presence(None, *args, **kwargs) return Presence(None, *args, **kwargs)
def check_jid(self, jid, user=None, domain=None, resource=None,
bare=None, full=None, string=None):
def check_JID(self, jid, user=None, domain=None, resource=None,
bare=None, full=None, string=None):
""" """
Verify the components of a JID. Verify the components of a JID.
@ -141,8 +140,8 @@ class SleekTest(unittest.TestCase):
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Methods for comparing stanza objects to XML strings # Methods for comparing stanza objects to XML strings
def check_stanza(self, stanza_class, stanza, xml_string, def check(self, stanza, xml_string,
defaults=None, use_values=True): defaults=None, use_values=True):
""" """
Create and compare several stanza objects to a correct XML string. Create and compare several stanza objects to a correct XML string.
@ -161,7 +160,6 @@ class SleekTest(unittest.TestCase):
must take into account any extra elements that are included by default. must take into account any extra elements that are included by default.
Arguments: Arguments:
stanza_class -- The class of the stanza being tested.
stanza -- The stanza object to test. stanza -- The stanza object to test.
xml_string -- A string version of the correct XML expected. xml_string -- A string version of the correct XML expected.
defaults -- A list of stanza interfaces that have default defaults -- A list of stanza interfaces that have default
@ -172,6 +170,7 @@ class SleekTest(unittest.TestCase):
setStanzaValues() should be used. Defaults to setStanzaValues() should be used. Defaults to
True. True.
""" """
stanza_class = stanza.__class__
xml = self.parse_xml(xml_string) xml = self.parse_xml(xml_string)
# Ensure that top level namespaces are used, even if they # Ensure that top level namespaces are used, even if they
@ -188,7 +187,11 @@ class SleekTest(unittest.TestCase):
# so that they will compare correctly. # so that they will compare correctly.
default_stanza = stanza_class() default_stanza = stanza_class()
if defaults is None: if defaults is None:
defaults = [] known_defaults = {
Message: ['type'],
Presence: ['priority']
}
defaults = known_defaults.get(stanza_class, [])
for interface in defaults: for interface in defaults:
stanza[interface] = stanza[interface] stanza[interface] = stanza[interface]
stanza2[interface] = stanza2[interface] stanza2[interface] = stanza2[interface]
@ -219,62 +222,6 @@ class SleekTest(unittest.TestCase):
self.failUnless(result, debug) self.failUnless(result, debug)
def check_message(self, msg, xml_string, use_values=True):
"""
Create and compare several message stanza objects to a
correct XML string.
If use_values is False, the test using getStanzaValues() and
setStanzaValues() will not be used.
Arguments:
msg -- The Message stanza object to check.
xml_string -- The XML contents to compare against.
use_values -- Indicates if the test using getStanzaValues
and setStanzaValues should be used. Defaults
to True.
"""
return self.check_stanza(Message, msg, xml_string,
defaults=['type'],
use_values=use_values)
def check_iq(self, iq, xml_string, use_values=True):
"""
Create and compare several iq stanza objects to a
correct XML string.
If use_values is False, the test using getStanzaValues() and
setStanzaValues() will not be used.
Arguments:
iq -- The Iq stanza object to check.
xml_string -- The XML contents to compare against.
use_values -- Indicates if the test using getStanzaValues
and setStanzaValues should be used. Defaults
to True.
"""
return self.check_stanza(Iq, iq, xml_string, use_values=use_values)
def check_presence(self, pres, xml_string, use_values=True):
"""
Create and compare several presence stanza objects to a
correct XML string.
If use_values is False, the test using getStanzaValues() and
setStanzaValues() will not be used.
Arguments:
iq -- The Iq stanza object to check.
xml_string -- The XML contents to compare against.
use_values -- Indicates if the test using getStanzaValues
and setStanzaValues should be used. Defaults
to True.
"""
return self.check_stanza(Presence, pres, xml_string,
defaults=['priority'],
use_values=use_values)
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Methods for simulating stanza streams. # Methods for simulating stanza streams.
@ -302,7 +249,6 @@ class SleekTest(unittest.TestCase):
port -- The port to use when connecting to the server. port -- The port to use when connecting to the server.
Defaults to 5222. Defaults to 5222.
""" """
if mode == 'client': if mode == 'client':
self.xmpp = ClientXMPP(jid, password) self.xmpp = ClientXMPP(jid, password)
elif mode == 'component': elif mode == 'component':
@ -337,13 +283,13 @@ class SleekTest(unittest.TestCase):
if mode == 'component': if mode == 'component':
self.xmpp.socket.next_sent(timeout=1) self.xmpp.socket.next_sent(timeout=1)
def stream_make_header(self, sto='', def make_header(self, sto='',
sfrom='', sfrom='',
sid='', sid='',
stream_ns="http://etherx.jabber.org/streams", stream_ns="http://etherx.jabber.org/streams",
default_ns="jabber:client", default_ns="jabber:client",
version="1.0", version="1.0",
xml_header=True): xml_header=True):
""" """
Create a stream header to be received by the test XMPP agent. Create a stream header to be received by the test XMPP agent.
@ -374,8 +320,8 @@ class SleekTest(unittest.TestCase):
parts.append('xmlns="%s"' % default_ns) parts.append('xmlns="%s"' % default_ns)
return header % ' '.join(parts) return header % ' '.join(parts)
def stream_recv(self, data, stanza_class=StanzaBase, defaults=[], def recv(self, data, stanza_class=StanzaBase, defaults=[],
use_values=True, timeout=1): use_values=True, timeout=1):
""" """
Pass data to the dummy XMPP client as if it came from an XMPP server. Pass data to the dummy XMPP client as if it came from an XMPP server.
@ -402,7 +348,7 @@ class SleekTest(unittest.TestCase):
if recv_data is None: if recv_data is None:
return False return False
stanza = stanza_class(xml=self.parse_xml(recv_data)) stanza = stanza_class(xml=self.parse_xml(recv_data))
return self.check_stanza(stanza_class, stanza, data, return self.check(stanza_class, stanza, data,
defaults=defaults, defaults=defaults,
use_values=use_values) use_values=use_values)
else: else:
@ -410,14 +356,14 @@ class SleekTest(unittest.TestCase):
data = str(data) data = str(data)
self.xmpp.socket.recv_data(data) self.xmpp.socket.recv_data(data)
def stream_recv_header(self, sto='', def recv_header(self, sto='',
sfrom='', sfrom='',
sid='', sid='',
stream_ns="http://etherx.jabber.org/streams", stream_ns="http://etherx.jabber.org/streams",
default_ns="jabber:client", default_ns="jabber:client",
version="1.0", version="1.0",
xml_header=False, xml_header=False,
timeout=1): timeout=1):
""" """
Check that a given stream header was received. Check that a given stream header was received.
@ -433,11 +379,11 @@ class SleekTest(unittest.TestCase):
timeout -- Length of time to wait in seconds for a timeout -- Length of time to wait in seconds for a
response. response.
""" """
header = self.stream_make_header(sto, sfrom, sid, header = self.make_header(sto, sfrom, sid,
stream_ns=stream_ns, stream_ns=stream_ns,
default_ns=default_ns, default_ns=default_ns,
version=version, version=version,
xml_header=xml_header) xml_header=xml_header)
recv_header = self.xmpp.socket.next_recv(timeout) recv_header = self.xmpp.socket.next_recv(timeout)
if recv_header is None: if recv_header is None:
raise ValueError("Socket did not return data.") raise ValueError("Socket did not return data.")
@ -477,9 +423,8 @@ class SleekTest(unittest.TestCase):
"Stream headers do not match:\nDesired:\n%s\nReceived:\n%s" % ( "Stream headers do not match:\nDesired:\n%s\nReceived:\n%s" % (
'%s %s' % (xml.tag, xml.attrib), '%s %s' % (xml.tag, xml.attrib),
'%s %s' % (recv_xml.tag, recv_xml.attrib))) '%s %s' % (recv_xml.tag, recv_xml.attrib)))
#tostring(xml), tostring(recv_xml)))#recv_header))
def stream_recv_feature(self, data, use_values=True, timeout=1): def recv_feature(self, data, use_values=True, timeout=1):
""" """
""" """
if self.xmpp.socket.is_live: if self.xmpp.socket.is_live:
@ -499,39 +444,14 @@ class SleekTest(unittest.TestCase):
data = str(data) data = str(data)
self.xmpp.socket.recv_data(data) self.xmpp.socket.recv_data(data)
def send_header(self, sto='',
sfrom='',
def stream_recv_message(self, data, use_values=True, timeout=1): sid='',
""" stream_ns="http://etherx.jabber.org/streams",
""" default_ns="jabber:client",
return self.stream_recv(data, stanza_class=Message, version="1.0",
defaults=['type'], xml_header=False,
use_values=use_values, timeout=1):
timeout=timeout)
def stream_recv_iq(self, data, use_values=True, timeout=1):
"""
"""
return self.stream_recv(data, stanza_class=Iq,
use_values=use_values,
timeout=timeout)
def stream_recv_presence(self, data, use_values=True, timeout=1):
"""
"""
return self.stream_recv(data, stanza_class=Presence,
defaults=['priority'],
use_values=use_values,
timeout=timeout)
def stream_send_header(self, sto='',
sfrom='',
sid='',
stream_ns="http://etherx.jabber.org/streams",
default_ns="jabber:client",
version="1.0",
xml_header=False,
timeout=1):
""" """
Check that a given stream header was sent. Check that a given stream header was sent.
@ -547,11 +467,11 @@ class SleekTest(unittest.TestCase):
timeout -- Length of time to wait in seconds for a timeout -- Length of time to wait in seconds for a
response. response.
""" """
header = self.stream_make_header(sto, sfrom, sid, header = self.make_header(sto, sfrom, sid,
stream_ns=stream_ns, stream_ns=stream_ns,
default_ns=default_ns, default_ns=default_ns,
version=version, version=version,
xml_header=xml_header) xml_header=xml_header)
sent_header = self.xmpp.socket.next_sent(timeout) sent_header = self.xmpp.socket.next_sent(timeout)
if sent_header is None: if sent_header is None:
raise ValueError("Socket did not return data.") raise ValueError("Socket did not return data.")
@ -569,7 +489,7 @@ class SleekTest(unittest.TestCase):
"Stream headers do not match:\nDesired:\n%s\nSent:\n%s" % ( "Stream headers do not match:\nDesired:\n%s\nSent:\n%s" % (
header, sent_header)) header, sent_header))
def stream_send_feature(self, data, use_values=True, timeout=1): def send_feature(self, data, use_values=True, timeout=1):
""" """
""" """
sent_data = self.xmpp.socket.next_sent(timeout) sent_data = self.xmpp.socket.next_sent(timeout)
@ -581,13 +501,13 @@ class SleekTest(unittest.TestCase):
"Features do not match.\nDesired:\n%s\nSent:\n%s" % ( "Features do not match.\nDesired:\n%s\nSent:\n%s" % (
tostring(xml), tostring(sent_xml))) tostring(xml), tostring(sent_xml)))
def stream_send_stanza(self, stanza_class, data, defaults=None, def send(self, data, defaults=None,
use_values=True, timeout=.1): use_values=True, timeout=.1):
""" """
Check that the XMPP client sent the given stanza XML. Check that the XMPP client sent the given stanza XML.
Extracts the next sent stanza and compares it with the given Extracts the next sent stanza and compares it with the given
XML using check_stanza. XML using check.
Arguments: Arguments:
stanza_class -- The class of the sent stanza object. stanza_class -- The class of the sent stanza object.
@ -599,70 +519,15 @@ class SleekTest(unittest.TestCase):
timeout -- Time in seconds to wait for a stanza before timeout -- Time in seconds to wait for a stanza before
failing the check. failing the check.
""" """
if isintance(data, str): if isinstance(data, str):
data = stanza_class(xml=self.parse_xml(data)) xml = self.parse_xml(data)
self.fix_namespaces(xml, 'jabber:client')
data = self.xmpp._build_stanza(xml, 'jabber:client')
sent = self.xmpp.socket.next_sent(timeout) sent = self.xmpp.socket.next_sent(timeout)
self.check_stanza(stanza_class, data, sent, self.check(data, sent,
defaults=defaults, defaults=defaults,
use_values=use_values) use_values=use_values)
def stream_send_message(self, data, use_values=True, timeout=.1):
"""
Check that the XMPP client sent the given stanza XML.
Extracts the next sent stanza and compares it with the given
XML using check_message.
Arguments:
data -- The XML string of the expected Message stanza,
or an equivalent stanza object.
use_values -- Modifies the type of tests used by check_message.
timeout -- Time in seconds to wait for a stanza before
failing the check.
"""
if isinstance(data, str):
data = self.Message(xml=self.parse_xml(data))
sent = self.xmpp.socket.next_sent(timeout)
self.check_message(data, sent, use_values)
def stream_send_iq(self, data, use_values=True, timeout=.1):
"""
Check that the XMPP client sent the given stanza XML.
Extracts the next sent stanza and compares it with the given
XML using check_iq.
Arguments:
data -- The XML string of the expected Iq stanza,
or an equivalent stanza object.
use_values -- Modifies the type of tests used by check_iq.
timeout -- Time in seconds to wait for a stanza before
failing the check.
"""
if isinstance(data, str):
data = self.Iq(xml=self.parse_xml(data))
sent = self.xmpp.socket.next_sent(timeout)
self.check_iq(data, sent, use_values)
def stream_send_presence(self, data, use_values=True, timeout=.1):
"""
Check that the XMPP client sent the given stanza XML.
Extracts the next sent stanza and compares it with the given
XML using check_presence.
Arguments:
data -- The XML string of the expected Presence stanza,
or an equivalent stanza object.
use_values -- Modifies the type of tests used by check_presence.
timeout -- Time in seconds to wait for a stanza before
failing the check.
"""
if isinstance(data, str):
data = self.Presence(xml=self.parse_xml(data))
sent = self.xmpp.socket.next_sent(timeout)
self.check_presence(data, sent, use_values)
def stream_close(self): def stream_close(self):
""" """
Disconnect the dummy XMPP client. Disconnect the dummy XMPP client.

View file

@ -772,6 +772,28 @@ class XMLStream(object):
root.clear() root.clear()
logging.debug("Ending read XML loop") logging.debug("Ending read XML loop")
def _build_stanza(self, xml, default_ns=None):
"""
Create a stanza object from a given XML object.
If a specialized stanza type is not found for the XML, then
a generic StanzaBase stanza will be returned.
Arguments:
xml -- The XML object to convert into a stanza object.
default_ns -- Optional default namespace to use instead of the
stream's current default namespace.
"""
if default_ns is None:
default_ns = self.default_ns
stanza_type = StanzaBase
for stanza_class in self.__root_stanza:
if xml.tag == "{%s}%s" % (default_ns, stanza_class.name):
stanza_type = stanza_class
break
stanza = stanza_type(self, xml)
return stanza
def __spawn_event(self, xml): def __spawn_event(self, xml):
""" """
Analyze incoming XML stanzas and convert them into stanza Analyze incoming XML stanzas and convert them into stanza

View file

@ -20,9 +20,9 @@ class TestLiveStream(SleekTest):
# Use sid=None to ignore any id sent by the server since # Use sid=None to ignore any id sent by the server since
# we can't know it in advance. # we can't know it in advance.
self.stream_recv_header(sfrom='localhost', sid=None) self.recv_header(sfrom='localhost', sid=None)
self.stream_send_header(sto='localhost') self.send_header(sto='localhost')
self.stream_recv_feature(""" self.recv_feature("""
<stream:features> <stream:features>
<starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls" /> <starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls" />
<mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"> <mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl">
@ -35,15 +35,15 @@ class TestLiveStream(SleekTest):
<register xmlns="http://jabber.org/features/iq-register" /> <register xmlns="http://jabber.org/features/iq-register" />
</stream:features> </stream:features>
""") """)
self.stream_send_feature(""" self.send_feature("""
<starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls" /> <starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls" />
""") """)
self.stream_recv_feature(""" self.recv_feature("""
<proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls" /> <proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls" />
""") """)
self.stream_send_header(sto='localhost') self.send_header(sto='localhost')
self.stream_recv_header(sfrom='localhost', sid=None) self.recv_header(sfrom='localhost', sid=None)
self.stream_recv_feature(""" self.recv_feature("""
<stream:features> <stream:features>
<mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"> <mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl">
<mechanism>DIGEST-MD5</mechanism> <mechanism>DIGEST-MD5</mechanism>
@ -56,16 +56,16 @@ class TestLiveStream(SleekTest):
<register xmlns="http://jabber.org/features/iq-register" /> <register xmlns="http://jabber.org/features/iq-register" />
</stream:features> </stream:features>
""") """)
self.stream_send_feature(""" self.send_feature("""
<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl"
mechanism="PLAIN">AHVzZXIAdXNlcg==</auth> mechanism="PLAIN">AHVzZXIAdXNlcg==</auth>
""") """)
self.stream_recv_feature(""" self.recv_feature("""
<success xmlns="urn:ietf:params:xml:ns:xmpp-sasl" /> <success xmlns="urn:ietf:params:xml:ns:xmpp-sasl" />
""") """)
self.stream_send_header(sto='localhost') self.send_header(sto='localhost')
self.stream_recv_header(sfrom='localhost', sid=None) self.recv_header(sfrom='localhost', sid=None)
self.stream_recv_feature(""" self.recv_feature("""
<stream:features> <stream:features>
<bind xmlns="urn:ietf:params:xml:ns:xmpp-bind" /> <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind" />
<session xmlns="urn:ietf:params:xml:ns:xmpp-session" /> <session xmlns="urn:ietf:params:xml:ns:xmpp-session" />
@ -77,16 +77,16 @@ class TestLiveStream(SleekTest):
</stream:features> </stream:features>
""") """)
# Should really use stream_send_iq, but our Iq stanza objects # Should really use send, but our Iq stanza objects
# can't handle bind element payloads yet. # can't handle bind element payloads yet.
self.stream_send_feature(""" self.send_feature("""
<iq type="set" id="1"> <iq type="set" id="1">
<bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"> <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
<resource>test</resource> <resource>test</resource>
</bind> </bind>
</iq> </iq>
""") """)
self.stream_recv_feature(""" self.recv_feature("""
<iq type="result" id="1"> <iq type="result" id="1">
<bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"> <bind xmlns="urn:ietf:params:xml:ns:xmpp-bind">
<jid>user@localhost/test</jid> <jid>user@localhost/test</jid>

View file

@ -8,7 +8,7 @@ class TestJIDClass(SleekTest):
def testJIDFromFull(self): def testJIDFromFull(self):
"""Test using JID of the form 'user@server/resource/with/slashes'.""" """Test using JID of the form 'user@server/resource/with/slashes'."""
self.check_JID(JID('user@someserver/some/resource'), self.check_jid(JID('user@someserver/some/resource'),
'user', 'user',
'someserver', 'someserver',
'some/resource', 'some/resource',
@ -22,7 +22,7 @@ class TestJIDClass(SleekTest):
j.user = 'user' j.user = 'user'
j.domain = 'someserver' j.domain = 'someserver'
j.resource = 'some/resource' j.resource = 'some/resource'
self.check_JID(j, self.check_jid(j,
'user', 'user',
'someserver', 'someserver',
'some/resource', 'some/resource',
@ -34,15 +34,15 @@ class TestJIDClass(SleekTest):
"""Test changing JID using aliases for domain.""" """Test changing JID using aliases for domain."""
j = JID('user@someserver/resource') j = JID('user@someserver/resource')
j.server = 'anotherserver' j.server = 'anotherserver'
self.check_JID(j, domain='anotherserver') self.check_jid(j, domain='anotherserver')
j.host = 'yetanother' j.host = 'yetanother'
self.check_JID(j, domain='yetanother') self.check_jid(j, domain='yetanother')
def testJIDSetFullWithUser(self): def testJIDSetFullWithUser(self):
"""Test setting the full JID with a user portion.""" """Test setting the full JID with a user portion."""
j = JID('user@domain/resource') j = JID('user@domain/resource')
j.full = 'otheruser@otherdomain/otherresource' j.full = 'otheruser@otherdomain/otherresource'
self.check_JID(j, self.check_jid(j,
'otheruser', 'otheruser',
'otherdomain', 'otherdomain',
'otherresource', 'otherresource',
@ -57,7 +57,7 @@ class TestJIDClass(SleekTest):
""" """
j = JID('user@domain/resource') j = JID('user@domain/resource')
j.full = 'otherdomain/otherresource' j.full = 'otherdomain/otherresource'
self.check_JID(j, self.check_jid(j,
'', '',
'otherdomain', 'otherdomain',
'otherresource', 'otherresource',
@ -72,7 +72,7 @@ class TestJIDClass(SleekTest):
""" """
j = JID('user@domain/resource') j = JID('user@domain/resource')
j.full = 'otherdomain' j.full = 'otherdomain'
self.check_JID(j, self.check_jid(j,
'', '',
'otherdomain', 'otherdomain',
'', '',
@ -84,7 +84,7 @@ class TestJIDClass(SleekTest):
"""Test setting the bare JID with a user.""" """Test setting the bare JID with a user."""
j = JID('user@domain/resource') j = JID('user@domain/resource')
j.bare = 'otheruser@otherdomain' j.bare = 'otheruser@otherdomain'
self.check_JID(j, self.check_jid(j,
'otheruser', 'otheruser',
'otherdomain', 'otherdomain',
'resource', 'resource',
@ -96,7 +96,7 @@ class TestJIDClass(SleekTest):
"""Test setting the bare JID without a user.""" """Test setting the bare JID without a user."""
j = JID('user@domain/resource') j = JID('user@domain/resource')
j.bare = 'otherdomain' j.bare = 'otherdomain'
self.check_JID(j, self.check_jid(j,
'', '',
'otherdomain', 'otherdomain',
'resource', 'resource',
@ -106,7 +106,7 @@ class TestJIDClass(SleekTest):
def testJIDNoResource(self): def testJIDNoResource(self):
"""Test using JID of the form 'user@domain'.""" """Test using JID of the form 'user@domain'."""
self.check_JID(JID('user@someserver'), self.check_jid(JID('user@someserver'),
'user', 'user',
'someserver', 'someserver',
'', '',
@ -116,7 +116,7 @@ class TestJIDClass(SleekTest):
def testJIDNoUser(self): def testJIDNoUser(self):
"""Test JID of the form 'component.domain.tld'.""" """Test JID of the form 'component.domain.tld'."""
self.check_JID(JID('component.someserver'), self.check_jid(JID('component.someserver'),
'', '',
'component.someserver', 'component.someserver',
'', '',

View file

@ -27,7 +27,7 @@ class TestElementBase(SleekTest):
namespace = "test" namespace = "test"
stanza = TestStanza() stanza = TestStanza()
self.check_stanza(TestStanza, stanza, """ self.check(stanza, """
<foo xmlns="test"> <foo xmlns="test">
<bar> <bar>
<baz /> <baz />
@ -117,7 +117,7 @@ class TestElementBase(SleekTest):
'baz': ''}]} 'baz': ''}]}
stanza.setStanzaValues(values) stanza.setStanzaValues(values)
self.check_stanza(TestStanza, stanza, """ self.check(stanza, """
<foo xmlns="foo" bar="a"> <foo xmlns="foo" bar="a">
<pluginfoo baz="b" /> <pluginfoo baz="b" />
<pluginfoo2 bar="d" baz="e" /> <pluginfoo2 bar="d" baz="e" />
@ -198,7 +198,7 @@ class TestElementBase(SleekTest):
stanza['qux'] = 'overridden' stanza['qux'] = 'overridden'
stanza['foobar'] = 'plugin' stanza['foobar'] = 'plugin'
self.check_stanza(TestStanza, stanza, """ self.check(stanza, """
<foo xmlns="foo" bar="attribute!"> <foo xmlns="foo" bar="attribute!">
<baz>element!</baz> <baz>element!</baz>
<foobar foobar="plugin" /> <foobar foobar="plugin" />
@ -231,7 +231,7 @@ class TestElementBase(SleekTest):
stanza['qux'] = 'c' stanza['qux'] = 'c'
stanza['foobar']['foobar'] = 'd' stanza['foobar']['foobar'] = 'd'
self.check_stanza(TestStanza, stanza, """ self.check(stanza, """
<foo xmlns="foo" baz="b" qux="c"> <foo xmlns="foo" baz="b" qux="c">
<bar>a</bar> <bar>a</bar>
<foobar foobar="d" /> <foobar foobar="d" />
@ -243,7 +243,7 @@ class TestElementBase(SleekTest):
del stanza['qux'] del stanza['qux']
del stanza['foobar'] del stanza['foobar']
self.check_stanza(TestStanza, stanza, """ self.check(stanza, """
<foo xmlns="foo" qux="c" /> <foo xmlns="foo" qux="c" />
""") """)
@ -257,7 +257,7 @@ class TestElementBase(SleekTest):
stanza = TestStanza() stanza = TestStanza()
self.check_stanza(TestStanza, stanza, """ self.check(stanza, """
<foo xmlns="foo" /> <foo xmlns="foo" />
""") """)
@ -267,7 +267,7 @@ class TestElementBase(SleekTest):
stanza._set_attr('bar', 'a') stanza._set_attr('bar', 'a')
stanza._set_attr('baz', 'b') stanza._set_attr('baz', 'b')
self.check_stanza(TestStanza, stanza, """ self.check(stanza, """
<foo xmlns="foo" bar="a" baz="b" /> <foo xmlns="foo" bar="a" baz="b" />
""") """)
@ -277,7 +277,7 @@ class TestElementBase(SleekTest):
stanza._set_attr('bar', None) stanza._set_attr('bar', None)
stanza._del_attr('baz') stanza._del_attr('baz')
self.check_stanza(TestStanza, stanza, """ self.check(stanza, """
<foo xmlns="foo" /> <foo xmlns="foo" />
""") """)
@ -307,7 +307,7 @@ class TestElementBase(SleekTest):
"Default _get_sub_text value incorrect.") "Default _get_sub_text value incorrect.")
stanza['bar'] = 'found' stanza['bar'] = 'found'
self.check_stanza(TestStanza, stanza, """ self.check(stanza, """
<foo xmlns="foo"> <foo xmlns="foo">
<wrapper> <wrapper>
<bar>found</bar> <bar>found</bar>
@ -340,7 +340,7 @@ class TestElementBase(SleekTest):
stanza = TestStanza() stanza = TestStanza()
stanza['bar'] = 'a' stanza['bar'] = 'a'
stanza['baz'] = 'b' stanza['baz'] = 'b'
self.check_stanza(TestStanza, stanza, """ self.check(stanza, """
<foo xmlns="foo"> <foo xmlns="foo">
<wrapper> <wrapper>
<bar>a</bar> <bar>a</bar>
@ -349,7 +349,7 @@ class TestElementBase(SleekTest):
</foo> </foo>
""") """)
stanza._set_sub_text('wrapper/bar', text='', keep=True) stanza._set_sub_text('wrapper/bar', text='', keep=True)
self.check_stanza(TestStanza, stanza, """ self.check(stanza, """
<foo xmlns="foo"> <foo xmlns="foo">
<wrapper> <wrapper>
<bar /> <bar />
@ -360,7 +360,7 @@ class TestElementBase(SleekTest):
stanza['bar'] = 'a' stanza['bar'] = 'a'
stanza._set_sub_text('wrapper/bar', text='') stanza._set_sub_text('wrapper/bar', text='')
self.check_stanza(TestStanza, stanza, """ self.check(stanza, """
<foo xmlns="foo"> <foo xmlns="foo">
<wrapper> <wrapper>
<baz>b</baz> <baz>b</baz>
@ -398,7 +398,7 @@ class TestElementBase(SleekTest):
stanza['bar'] = 'a' stanza['bar'] = 'a'
stanza['baz'] = 'b' stanza['baz'] = 'b'
self.check_stanza(TestStanza, stanza, """ self.check(stanza, """
<foo xmlns="foo"> <foo xmlns="foo">
<path> <path>
<to> <to>
@ -416,7 +416,7 @@ class TestElementBase(SleekTest):
del stanza['bar'] del stanza['bar']
del stanza['baz'] del stanza['baz']
self.check_stanza(TestStanza, stanza, """ self.check(stanza, """
<foo xmlns="foo"> <foo xmlns="foo">
<path> <path>
<to> <to>
@ -432,7 +432,7 @@ class TestElementBase(SleekTest):
stanza._del_sub('path/to/only/bar', all=True) stanza._del_sub('path/to/only/bar', all=True)
self.check_stanza(TestStanza, stanza, """ self.check(stanza, """
<foo xmlns="foo"> <foo xmlns="foo">
<path> <path>
<to> <to>
@ -603,7 +603,7 @@ class TestElementBase(SleekTest):
"Incorrect empty stanza size.") "Incorrect empty stanza size.")
stanza.append(substanza1) stanza.append(substanza1)
self.check_stanza(TestStanza, stanza, """ self.check(stanza, """
<foo xmlns="foo"> <foo xmlns="foo">
<foobar qux="a" /> <foobar qux="a" />
</foo> </foo>
@ -612,7 +612,7 @@ class TestElementBase(SleekTest):
"Incorrect stanza size with 1 substanza.") "Incorrect stanza size with 1 substanza.")
stanza.append(substanza2) stanza.append(substanza2)
self.check_stanza(TestStanza, stanza, """ self.check(stanza, """
<foo xmlns="foo"> <foo xmlns="foo">
<foobar qux="a" /> <foobar qux="a" />
<foobar qux="b" /> <foobar qux="b" />
@ -623,7 +623,7 @@ class TestElementBase(SleekTest):
# Test popping substanzas # Test popping substanzas
stanza.pop(0) stanza.pop(0)
self.check_stanza(TestStanza, stanza, """ self.check(stanza, """
<foo xmlns="foo"> <foo xmlns="foo">
<foobar qux="b" /> <foobar qux="b" />
</foo> </foo>

View file

@ -7,7 +7,7 @@ class TestErrorStanzas(SleekTest):
"""Test setting initial values in error stanza.""" """Test setting initial values in error stanza."""
msg = self.Message() msg = self.Message()
msg.enable('error') msg.enable('error')
self.check_message(msg, """ self.check(msg, """
<message type="error"> <message type="error">
<error type="cancel"> <error type="cancel">
<feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" /> <feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" />
@ -20,7 +20,7 @@ class TestErrorStanzas(SleekTest):
msg = self.Message() msg = self.Message()
msg['error']['condition'] = 'item-not-found' msg['error']['condition'] = 'item-not-found'
self.check_message(msg, """ self.check(msg, """
<message type="error"> <message type="error">
<error type="cancel"> <error type="cancel">
<item-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" /> <item-not-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" />
@ -32,7 +32,7 @@ class TestErrorStanzas(SleekTest):
msg['error']['condition'] = 'resource-constraint' msg['error']['condition'] = 'resource-constraint'
self.check_message(msg, """ self.check(msg, """
<message type="error"> <message type="error">
<error type="cancel"> <error type="cancel">
<resource-constraint xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" /> <resource-constraint xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" />
@ -48,7 +48,7 @@ class TestErrorStanzas(SleekTest):
del msg['error']['condition'] del msg['error']['condition']
self.check_message(msg, """ self.check(msg, """
<message type="error"> <message type="error">
<error type="cancel"> <error type="cancel">
<text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">Error!</text> <text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">Error!</text>
@ -64,7 +64,7 @@ class TestErrorStanzas(SleekTest):
del msg['error']['text'] del msg['error']['text']
self.check_message(msg, """ self.check(msg, """
<message type="error"> <message type="error">
<error type="cancel"> <error type="cancel">
<internal-server-error xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" /> <internal-server-error xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" />

View file

@ -18,7 +18,7 @@ class TestGmail(SleekTest):
iq['gmail']['newer-than-time'] = '1140638252542' iq['gmail']['newer-than-time'] = '1140638252542'
iq['gmail']['newer-than-tid'] = '11134623426430234' iq['gmail']['newer-than-tid'] = '11134623426430234'
self.check_iq(iq, """ self.check(iq, """
<iq type="get"> <iq type="get">
<query xmlns="google:mail:notify" <query xmlns="google:mail:notify"
newer-than-time="1140638252542" newer-than-time="1140638252542"

View file

@ -11,7 +11,7 @@ class TestIqStanzas(SleekTest):
def testSetup(self): def testSetup(self):
"""Test initializing default Iq values.""" """Test initializing default Iq values."""
iq = self.Iq() iq = self.Iq()
self.check_iq(iq, """ self.check(iq, """
<iq id="0" /> <iq id="0" />
""") """)
@ -19,7 +19,7 @@ class TestIqStanzas(SleekTest):
"""Test setting Iq stanza payload.""" """Test setting Iq stanza payload."""
iq = self.Iq() iq = self.Iq()
iq.setPayload(ET.Element('{test}tester')) iq.setPayload(ET.Element('{test}tester'))
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<tester xmlns="test" /> <tester xmlns="test" />
</iq> </iq>
@ -29,7 +29,7 @@ class TestIqStanzas(SleekTest):
def testUnhandled(self): def testUnhandled(self):
"""Test behavior for Iq.unhandled.""" """Test behavior for Iq.unhandled."""
self.stream_start() self.stream_start()
self.stream_recv(""" self.recv("""
<iq id="test" type="get"> <iq id="test" type="get">
<query xmlns="test" /> <query xmlns="test" />
</iq> </iq>
@ -40,7 +40,7 @@ class TestIqStanzas(SleekTest):
iq['error']['condition'] = 'feature-not-implemented' iq['error']['condition'] = 'feature-not-implemented'
iq['error']['text'] = 'No handlers registered for this request.' iq['error']['text'] = 'No handlers registered for this request.'
self.stream_send_iq(iq, """ self.send(iq, """
<iq id="test" type="error"> <iq id="test" type="error">
<error type="cancel"> <error type="cancel">
<feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" /> <feature-not-implemented xmlns="urn:ietf:params:xml:ns:xmpp-stanzas" />
@ -56,14 +56,14 @@ class TestIqStanzas(SleekTest):
iq = self.Iq() iq = self.Iq()
iq['query'] = 'query_ns' iq['query'] = 'query_ns'
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<query xmlns="query_ns" /> <query xmlns="query_ns" />
</iq> </iq>
""") """)
iq['query'] = 'query_ns2' iq['query'] = 'query_ns2'
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<query xmlns="query_ns2" /> <query xmlns="query_ns2" />
</iq> </iq>
@ -72,7 +72,7 @@ class TestIqStanzas(SleekTest):
self.failUnless(iq['query'] == 'query_ns2', "Query namespace doesn't match") self.failUnless(iq['query'] == 'query_ns2', "Query namespace doesn't match")
del iq['query'] del iq['query']
self.check_iq(iq, """ self.check(iq, """
<iq id="0" /> <iq id="0" />
""") """)
@ -83,7 +83,7 @@ class TestIqStanzas(SleekTest):
iq['type'] = 'get' iq['type'] = 'get'
iq.reply() iq.reply()
self.check_iq(iq, """ self.check(iq, """
<iq id="0" type="result" /> <iq id="0" type="result" />
""") """)

View file

@ -33,7 +33,7 @@ class TestMessageStanzas(SleekTest):
p = ET.Element('{http://www.w3.org/1999/xhtml}p') p = ET.Element('{http://www.w3.org/1999/xhtml}p')
p.text = "This is the htmlim message" p.text = "This is the htmlim message"
msg['html']['body'] = p msg['html']['body'] = p
self.check_message(msg, """ self.check(msg, """
<message to="fritzy@netflint.net/sleekxmpp" type="chat"> <message to="fritzy@netflint.net/sleekxmpp" type="chat">
<body>this is the plaintext message</body> <body>this is the plaintext message</body>
<html xmlns="http://jabber.org/protocol/xhtml-im"> <html xmlns="http://jabber.org/protocol/xhtml-im">
@ -47,7 +47,7 @@ class TestMessageStanzas(SleekTest):
"Test message/nick/nick stanza." "Test message/nick/nick stanza."
msg = self.Message() msg = self.Message()
msg['nick']['nick'] = 'A nickname!' msg['nick']['nick'] = 'A nickname!'
self.check_message(msg, """ self.check(msg, """
<message> <message>
<nick xmlns="http://jabber.org/nick/nick">A nickname!</nick> <nick xmlns="http://jabber.org/nick/nick">A nickname!</nick>
</message> </message>

View file

@ -8,26 +8,26 @@ class TestPresenceStanzas(SleekTest):
"""Regression check presence['type'] = 'dnd' show value working""" """Regression check presence['type'] = 'dnd' show value working"""
p = self.Presence() p = self.Presence()
p['type'] = 'dnd' p['type'] = 'dnd'
self.check_presence(p, "<presence><show>dnd</show></presence>") self.check(p, "<presence><show>dnd</show></presence>")
def testPresenceType(self): def testPresenceType(self):
"""Test manipulating presence['type']""" """Test manipulating presence['type']"""
p = self.Presence() p = self.Presence()
p['type'] = 'available' p['type'] = 'available'
self.check_presence(p, "<presence />") self.check(p, "<presence />")
self.failUnless(p['type'] == 'available', self.failUnless(p['type'] == 'available',
"Incorrect presence['type'] for type 'available': %s" % p['type']) "Incorrect presence['type'] for type 'available': %s" % p['type'])
for showtype in ['away', 'chat', 'dnd', 'xa']: for showtype in ['away', 'chat', 'dnd', 'xa']:
p['type'] = showtype p['type'] = showtype
self.check_presence(p, """ self.check(p, """
<presence><show>%s</show></presence> <presence><show>%s</show></presence>
""" % showtype) """ % showtype)
self.failUnless(p['type'] == showtype, self.failUnless(p['type'] == showtype,
"Incorrect presence['type'] for type '%s'" % showtype) "Incorrect presence['type'] for type '%s'" % showtype)
p['type'] = None p['type'] = None
self.check_presence(p, "<presence />") self.check(p, "<presence />")
def testPresenceUnsolicitedOffline(self): def testPresenceUnsolicitedOffline(self):
""" """
@ -56,7 +56,7 @@ class TestPresenceStanzas(SleekTest):
"""Test presence/nick/nick stanza.""" """Test presence/nick/nick stanza."""
p = self.Presence() p = self.Presence()
p['nick']['nick'] = 'A nickname!' p['nick']['nick'] = 'A nickname!'
self.check_presence(p, """ self.check(p, """
<presence> <presence>
<nick xmlns="http://jabber.org/nick/nick">A nickname!</nick> <nick xmlns="http://jabber.org/nick/nick">A nickname!</nick>
</presence> </presence>

View file

@ -16,7 +16,7 @@ class TestRosterStanzas(SleekTest):
'name': 'Other User', 'name': 'Other User',
'subscription': 'both', 'subscription': 'both',
'groups': []}}) 'groups': []}})
self.check_iq(iq, """ self.check(iq, """
<iq> <iq>
<query xmlns="jabber:iq:roster"> <query xmlns="jabber:iq:roster">
<item jid="user@example.com" name="User" subscription="both"> <item jid="user@example.com" name="User" subscription="both">
@ -74,7 +74,7 @@ class TestRosterStanzas(SleekTest):
""" """
iq = self.Iq(ET.fromstring(xml_string)) iq = self.Iq(ET.fromstring(xml_string))
del iq['roster']['items'] del iq['roster']['items']
self.check_iq(iq, """ self.check(iq, """
<iq> <iq>
<query xmlns="jabber:iq:roster" /> <query xmlns="jabber:iq:roster" />
</iq> </iq>

View file

@ -14,7 +14,7 @@ class TestDataForms(SleekTest):
msg = self.Message() msg = self.Message()
msg['form']['instructions'] = "Instructions\nSecond batch" msg['form']['instructions'] = "Instructions\nSecond batch"
self.check_message(msg, """ self.check(msg, """
<message> <message>
<x xmlns="jabber:x:data" type="form"> <x xmlns="jabber:x:data" type="form">
<instructions>Instructions</instructions> <instructions>Instructions</instructions>
@ -35,7 +35,7 @@ class TestDataForms(SleekTest):
required=True, required=True,
value='Some text!') value='Some text!')
self.check_message(msg, """ self.check(msg, """
<message> <message>
<x xmlns="jabber:x:data" type="form"> <x xmlns="jabber:x:data" type="form">
<field var="f1" type="text-single" label="Text"> <field var="f1" type="text-single" label="Text">
@ -62,7 +62,7 @@ class TestDataForms(SleekTest):
'value': 'cool'}, 'value': 'cool'},
{'label': 'Urgh!', {'label': 'Urgh!',
'value': 'urgh'}]})] 'value': 'urgh'}]})]
self.check_message(msg, """ self.check(msg, """
<message> <message>
<x xmlns="jabber:x:data" type="form"> <x xmlns="jabber:x:data" type="form">
<field var="f1" type="text-single" label="Username"> <field var="f1" type="text-single" label="Username">
@ -99,7 +99,7 @@ class TestDataForms(SleekTest):
form.setValues({'foo': 'Foo!', form.setValues({'foo': 'Foo!',
'bar': ['a', 'b']}) 'bar': ['a', 'b']})
self.check_message(msg, """ self.check(msg, """
<message> <message>
<x xmlns="jabber:x:data" type="form"> <x xmlns="jabber:x:data" type="form">
<field var="foo" type="text-single"> <field var="foo" type="text-single">

View file

@ -14,7 +14,7 @@ class TestDisco(SleekTest):
iq['id'] = "0" iq['id'] = "0"
iq['disco_info']['node'] = '' iq['disco_info']['node'] = ''
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<query xmlns="http://jabber.org/protocol/disco#info" /> <query xmlns="http://jabber.org/protocol/disco#info" />
</iq> </iq>
@ -26,7 +26,7 @@ class TestDisco(SleekTest):
iq['id'] = "0" iq['id'] = "0"
iq['disco_info']['node'] = 'foo' iq['disco_info']['node'] = 'foo'
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<query xmlns="http://jabber.org/protocol/disco#info" node="foo" /> <query xmlns="http://jabber.org/protocol/disco#info" node="foo" />
</iq> </iq>
@ -38,7 +38,7 @@ class TestDisco(SleekTest):
iq['id'] = "0" iq['id'] = "0"
iq['disco_items']['node'] = '' iq['disco_items']['node'] = ''
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<query xmlns="http://jabber.org/protocol/disco#items" /> <query xmlns="http://jabber.org/protocol/disco#items" />
</iq> </iq>
@ -50,7 +50,7 @@ class TestDisco(SleekTest):
iq['id'] = "0" iq['id'] = "0"
iq['disco_items']['node'] = 'foo' iq['disco_items']['node'] = 'foo'
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<query xmlns="http://jabber.org/protocol/disco#items" node="foo" /> <query xmlns="http://jabber.org/protocol/disco#items" node="foo" />
</iq> </iq>
@ -63,7 +63,7 @@ class TestDisco(SleekTest):
iq['disco_info']['node'] = 'foo' iq['disco_info']['node'] = 'foo'
iq['disco_info'].addIdentity('conference', 'text', 'Chatroom') iq['disco_info'].addIdentity('conference', 'text', 'Chatroom')
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<query xmlns="http://jabber.org/protocol/disco#info" node="foo"> <query xmlns="http://jabber.org/protocol/disco#info" node="foo">
<identity category="conference" type="text" name="Chatroom" /> <identity category="conference" type="text" name="Chatroom" />
@ -79,7 +79,7 @@ class TestDisco(SleekTest):
iq['disco_info'].addFeature('foo') iq['disco_info'].addFeature('foo')
iq['disco_info'].addFeature('bar') iq['disco_info'].addFeature('bar')
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<query xmlns="http://jabber.org/protocol/disco#info" node="foo"> <query xmlns="http://jabber.org/protocol/disco#info" node="foo">
<feature var="foo" /> <feature var="foo" />
@ -97,7 +97,7 @@ class TestDisco(SleekTest):
iq['disco_items'].addItem('user@localhost', 'foo') iq['disco_items'].addItem('user@localhost', 'foo')
iq['disco_items'].addItem('user@localhost', 'bar', 'Testing') iq['disco_items'].addItem('user@localhost', 'bar', 'Testing')
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<query xmlns="http://jabber.org/protocol/disco#items" node="foo"> <query xmlns="http://jabber.org/protocol/disco#items" node="foo">
<item jid="user@localhost" /> <item jid="user@localhost" />

View file

@ -11,7 +11,7 @@ class TestAddresses(SleekTest):
"""Testing adding extended stanza address.""" """Testing adding extended stanza address."""
msg = self.Message() msg = self.Message()
msg['addresses'].addAddress(atype='to', jid='to@header1.org') msg['addresses'].addAddress(atype='to', jid='to@header1.org')
self.check_message(msg, """ self.check(msg, """
<message> <message>
<addresses xmlns="http://jabber.org/protocol/address"> <addresses xmlns="http://jabber.org/protocol/address">
<address jid="to@header1.org" type="to" /> <address jid="to@header1.org" type="to" />
@ -23,7 +23,7 @@ class TestAddresses(SleekTest):
msg['addresses'].addAddress(atype='replyto', msg['addresses'].addAddress(atype='replyto',
jid='replyto@header1.org', jid='replyto@header1.org',
desc='Reply address') desc='Reply address')
self.check_message(msg, """ self.check(msg, """
<message> <message>
<addresses xmlns="http://jabber.org/protocol/address"> <addresses xmlns="http://jabber.org/protocol/address">
<address jid="replyto@header1.org" type="replyto" desc="Reply address" /> <address jid="replyto@header1.org" type="replyto" desc="Reply address" />
@ -53,14 +53,14 @@ class TestAddresses(SleekTest):
'jid':'cc@header2.org'}, 'jid':'cc@header2.org'},
{'type':'bcc', {'type':'bcc',
'jid':'bcc@header2.org'}]) 'jid':'bcc@header2.org'}])
self.check_message(msg, xmlstring) self.check(msg, xmlstring)
msg = self.Message() msg = self.Message()
msg['addresses']['replyto'] = [{'jid':'replyto@header1.org', msg['addresses']['replyto'] = [{'jid':'replyto@header1.org',
'desc':'Reply address'}] 'desc':'Reply address'}]
msg['addresses']['cc'] = [{'jid':'cc@header2.org'}] msg['addresses']['cc'] = [{'jid':'cc@header2.org'}]
msg['addresses']['bcc'] = [{'jid':'bcc@header2.org'}] msg['addresses']['bcc'] = [{'jid':'bcc@header2.org'}]
self.check_message(msg, xmlstring) self.check(msg, xmlstring)
def testAddURI(self): def testAddURI(self):
"""Testing adding URI attribute to extended stanza address.""" """Testing adding URI attribute to extended stanza address."""
@ -69,7 +69,7 @@ class TestAddresses(SleekTest):
addr = msg['addresses'].addAddress(atype='to', addr = msg['addresses'].addAddress(atype='to',
jid='to@header1.org', jid='to@header1.org',
node='foo') node='foo')
self.check_message(msg, """ self.check(msg, """
<message> <message>
<addresses xmlns="http://jabber.org/protocol/address"> <addresses xmlns="http://jabber.org/protocol/address">
<address node="foo" jid="to@header1.org" type="to" /> <address node="foo" jid="to@header1.org" type="to" />
@ -78,7 +78,7 @@ class TestAddresses(SleekTest):
""") """)
addr['uri'] = 'mailto:to@header2.org' addr['uri'] = 'mailto:to@header2.org'
self.check_message(msg, """ self.check(msg, """
<message> <message>
<addresses xmlns="http://jabber.org/protocol/address"> <addresses xmlns="http://jabber.org/protocol/address">
<address type="to" uri="mailto:to@header2.org" /> <address type="to" uri="mailto:to@header2.org" />
@ -99,13 +99,13 @@ class TestAddresses(SleekTest):
msg = self.Message() msg = self.Message()
addr = msg['addresses'].addAddress(jid='to@header1.org', atype='to') addr = msg['addresses'].addAddress(jid='to@header1.org', atype='to')
self.check_message(msg, xmlstring % '') self.check(msg, xmlstring % '')
addr['delivered'] = True addr['delivered'] = True
self.check_message(msg, xmlstring % 'delivered="true"') self.check(msg, xmlstring % 'delivered="true"')
addr['delivered'] = False addr['delivered'] = False
self.check_message(msg, xmlstring % '') self.check(msg, xmlstring % '')
suite = unittest.TestLoader().loadTestsFromTestCase(TestAddresses) suite = unittest.TestLoader().loadTestsFromTestCase(TestAddresses)

View file

@ -16,7 +16,7 @@ class TestPubsubStanzas(SleekTest):
aff2['affiliation'] = 'publisher' aff2['affiliation'] = 'publisher'
iq['pubsub']['affiliations'].append(aff1) iq['pubsub']['affiliations'].append(aff1)
iq['pubsub']['affiliations'].append(aff2) iq['pubsub']['affiliations'].append(aff2)
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<pubsub xmlns="http://jabber.org/protocol/pubsub"> <pubsub xmlns="http://jabber.org/protocol/pubsub">
<affiliations> <affiliations>
@ -38,7 +38,7 @@ class TestPubsubStanzas(SleekTest):
sub2['subscription'] = 'subscribed' sub2['subscription'] = 'subscribed'
iq['pubsub']['subscriptions'].append(sub1) iq['pubsub']['subscriptions'].append(sub1)
iq['pubsub']['subscriptions'].append(sub2) iq['pubsub']['subscriptions'].append(sub2)
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<pubsub xmlns="http://jabber.org/protocol/pubsub"> <pubsub xmlns="http://jabber.org/protocol/pubsub">
<subscriptions> <subscriptions>
@ -55,7 +55,7 @@ class TestPubsubStanzas(SleekTest):
iq['pubsub']['subscription']['node'] = 'testnode alsdkjfas' iq['pubsub']['subscription']['node'] = 'testnode alsdkjfas'
iq['pubsub']['subscription']['jid'] = "fritzy@netflint.net/sleekxmpp" iq['pubsub']['subscription']['jid'] = "fritzy@netflint.net/sleekxmpp"
iq['pubsub']['subscription']['subscription'] = 'unconfigured' iq['pubsub']['subscription']['subscription'] = 'unconfigured'
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<pubsub xmlns="http://jabber.org/protocol/pubsub"> <pubsub xmlns="http://jabber.org/protocol/pubsub">
<subscription node="testnode alsdkjfas" jid="fritzy@netflint.net/sleekxmpp" subscription="unconfigured"> <subscription node="testnode alsdkjfas" jid="fritzy@netflint.net/sleekxmpp" subscription="unconfigured">
@ -88,7 +88,7 @@ class TestPubsubStanzas(SleekTest):
item2['payload'] = payload2 item2['payload'] = payload2
iq['pubsub']['items'].append(item) iq['pubsub']['items'].append(item)
iq['pubsub']['items'].append(item2) iq['pubsub']['items'].append(item2)
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<pubsub xmlns="http://jabber.org/protocol/pubsub"> <pubsub xmlns="http://jabber.org/protocol/pubsub">
<items node="crap"> <items node="crap">
@ -115,7 +115,7 @@ class TestPubsubStanzas(SleekTest):
iq['pubsub']['configure']['form'].addField('pubsub#title', iq['pubsub']['configure']['form'].addField('pubsub#title',
ftype='text-single', ftype='text-single',
value='This thing is awesome') value='This thing is awesome')
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<pubsub xmlns="http://jabber.org/protocol/pubsub"> <pubsub xmlns="http://jabber.org/protocol/pubsub">
<create node="mynode" /> <create node="mynode" />
@ -136,7 +136,7 @@ class TestPubsubStanzas(SleekTest):
iq['psstate']['item']= 'myitem' iq['psstate']['item']= 'myitem'
pl = ET.Element('{http://andyet.net/protocol/pubsubqueue}claimed') pl = ET.Element('{http://andyet.net/protocol/pubsubqueue}claimed')
iq['psstate']['payload'] = pl iq['psstate']['payload'] = pl
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<state xmlns="http://jabber.org/protocol/psstate" node="mynode" item="myitem"> <state xmlns="http://jabber.org/protocol/psstate" node="mynode" item="myitem">
<claimed xmlns="http://andyet.net/protocol/pubsubqueue" /> <claimed xmlns="http://andyet.net/protocol/pubsubqueue" />
@ -152,7 +152,7 @@ class TestPubsubStanzas(SleekTest):
iq['pubsub_owner']['default']['form'].addField('pubsub#title', iq['pubsub_owner']['default']['form'].addField('pubsub#title',
ftype='text-single', ftype='text-single',
value='This thing is awesome') value='This thing is awesome')
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<pubsub xmlns="http://jabber.org/protocol/pubsub#owner"> <pubsub xmlns="http://jabber.org/protocol/pubsub#owner">
<default node="mynode" type="leaf"> <default node="mynode" type="leaf">
@ -176,7 +176,7 @@ class TestPubsubStanzas(SleekTest):
form = xep_0004.Form() form = xep_0004.Form()
form.addField('pubsub#title', ftype='text-single', value='this thing is awesome') form.addField('pubsub#title', ftype='text-single', value='this thing is awesome')
iq['pubsub']['subscribe']['options']['options'] = form iq['pubsub']['subscribe']['options']['options'] = form
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<pubsub xmlns="http://jabber.org/protocol/pubsub"> <pubsub xmlns="http://jabber.org/protocol/pubsub">
<subscribe node="cheese" jid="fritzy@netflint.net/sleekxmpp"> <subscribe node="cheese" jid="fritzy@netflint.net/sleekxmpp">
@ -214,7 +214,7 @@ class TestPubsubStanzas(SleekTest):
iq['pubsub']['publish'].append(item) iq['pubsub']['publish'].append(item)
iq['pubsub']['publish'].append(item2) iq['pubsub']['publish'].append(item2)
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<pubsub xmlns="http://jabber.org/protocol/pubsub"> <pubsub xmlns="http://jabber.org/protocol/pubsub">
<publish node="thingers"> <publish node="thingers">
@ -238,7 +238,7 @@ class TestPubsubStanzas(SleekTest):
"Testing iq/pubsub_owner/delete stanzas" "Testing iq/pubsub_owner/delete stanzas"
iq = self.Iq() iq = self.Iq()
iq['pubsub_owner']['delete']['node'] = 'thingers' iq['pubsub_owner']['delete']['node'] = 'thingers'
self.check_iq(iq, """ self.check(iq, """
<iq id="0"> <iq id="0">
<pubsub xmlns="http://jabber.org/protocol/pubsub#owner"> <pubsub xmlns="http://jabber.org/protocol/pubsub#owner">
<delete node="thingers" /> <delete node="thingers" />
@ -300,7 +300,7 @@ class TestPubsubStanzas(SleekTest):
'label': 'Deliver notification only to available users'}), 'label': 'Deliver notification only to available users'}),
]) ])
self.check_iq(iq, """ self.check(iq, """
<iq to="pubsub.asdf" type="set" id="E" from="fritzy@asdf/87292ede-524d-4117-9076-d934ed3db8e7"> <iq to="pubsub.asdf" type="set" id="E" from="fritzy@asdf/87292ede-524d-4117-9076-d934ed3db8e7">
<pubsub xmlns="http://jabber.org/protocol/pubsub"> <pubsub xmlns="http://jabber.org/protocol/pubsub">
<create node="testnode2" /> <create node="testnode2" />
@ -357,7 +357,7 @@ class TestPubsubStanzas(SleekTest):
msg['pubsub_event']['items'].append(item) msg['pubsub_event']['items'].append(item)
msg['pubsub_event']['items']['node'] = 'cheese' msg['pubsub_event']['items']['node'] = 'cheese'
msg['type'] = 'normal' msg['type'] = 'normal'
self.check_message(msg, """ self.check(msg, """
<message type="normal"> <message type="normal">
<event xmlns="http://jabber.org/protocol/pubsub#event"> <event xmlns="http://jabber.org/protocol/pubsub#event">
<items node="cheese"> <items node="cheese">
@ -383,7 +383,7 @@ class TestPubsubStanzas(SleekTest):
msg['pubsub_event']['items'].append(item2) msg['pubsub_event']['items'].append(item2)
msg['pubsub_event']['items']['node'] = 'cheese' msg['pubsub_event']['items']['node'] = 'cheese'
msg['type'] = 'normal' msg['type'] = 'normal'
self.check_message(msg, """ self.check(msg, """
<message type="normal"> <message type="normal">
<event xmlns="http://jabber.org/protocol/pubsub#event"> <event xmlns="http://jabber.org/protocol/pubsub#event">
<items node="cheese"> <items node="cheese">
@ -415,7 +415,7 @@ class TestPubsubStanzas(SleekTest):
msg['pubsub_event']['items'].append(item2) msg['pubsub_event']['items'].append(item2)
msg['pubsub_event']['items']['node'] = 'cheese' msg['pubsub_event']['items']['node'] = 'cheese'
msg['type'] = 'normal' msg['type'] = 'normal'
self.check_message(msg, """ self.check(msg, """
<message type="normal"> <message type="normal">
<event xmlns="http://jabber.org/protocol/pubsub#event"> <event xmlns="http://jabber.org/protocol/pubsub#event">
<items node="cheese"> <items node="cheese">
@ -435,7 +435,7 @@ class TestPubsubStanzas(SleekTest):
msg['pubsub_event']['collection']['associate']['node'] = 'cheese' msg['pubsub_event']['collection']['associate']['node'] = 'cheese'
msg['pubsub_event']['collection']['node'] = 'cheeseburger' msg['pubsub_event']['collection']['node'] = 'cheeseburger'
msg['type'] = 'headline' msg['type'] = 'headline'
self.check_message(msg, """ self.check(msg, """
<message type="headline"> <message type="headline">
<event xmlns="http://jabber.org/protocol/pubsub#event"> <event xmlns="http://jabber.org/protocol/pubsub#event">
<collection node="cheeseburger"> <collection node="cheeseburger">
@ -450,7 +450,7 @@ class TestPubsubStanzas(SleekTest):
msg['pubsub_event']['collection']['disassociate']['node'] = 'cheese' msg['pubsub_event']['collection']['disassociate']['node'] = 'cheese'
msg['pubsub_event']['collection']['node'] = 'cheeseburger' msg['pubsub_event']['collection']['node'] = 'cheeseburger'
msg['type'] = 'headline' msg['type'] = 'headline'
self.check_message(msg, """ self.check(msg, """
<message type="headline"> <message type="headline">
<event xmlns="http://jabber.org/protocol/pubsub#event"> <event xmlns="http://jabber.org/protocol/pubsub#event">
<collection node="cheeseburger"> <collection node="cheeseburger">
@ -467,7 +467,7 @@ class TestPubsubStanzas(SleekTest):
ftype='text-single', ftype='text-single',
value='This thing is awesome') value='This thing is awesome')
msg['type'] = 'headline' msg['type'] = 'headline'
self.check_message(msg, """ self.check(msg, """
<message type="headline"> <message type="headline">
<event xmlns="http://jabber.org/protocol/pubsub#event"> <event xmlns="http://jabber.org/protocol/pubsub#event">
<configuration node="cheese"> <configuration node="cheese">
@ -485,7 +485,7 @@ class TestPubsubStanzas(SleekTest):
msg = self.Message() msg = self.Message()
msg['pubsub_event']['purge']['node'] = 'pickles' msg['pubsub_event']['purge']['node'] = 'pickles'
msg['type'] = 'headline' msg['type'] = 'headline'
self.check_message(msg, """ self.check(msg, """
<message type="headline"> <message type="headline">
<event xmlns="http://jabber.org/protocol/pubsub#event"> <event xmlns="http://jabber.org/protocol/pubsub#event">
<purge node="pickles" /> <purge node="pickles" />
@ -501,7 +501,7 @@ class TestPubsubStanzas(SleekTest):
msg['pubsub_event']['subscription']['subscription'] = 'subscribed' msg['pubsub_event']['subscription']['subscription'] = 'subscribed'
msg['pubsub_event']['subscription']['expiry'] = 'presence' msg['pubsub_event']['subscription']['expiry'] = 'presence'
msg['type'] = 'headline' msg['type'] = 'headline'
self.check_message(msg, """ self.check(msg, """
<message type="headline"> <message type="headline">
<event xmlns="http://jabber.org/protocol/pubsub#event"> <event xmlns="http://jabber.org/protocol/pubsub#event">
<subscription node="pickles" subid="aabb1122" jid="fritzy@netflint.net/test" subscription="subscribed" expiry="presence" /> <subscription node="pickles" subid="aabb1122" jid="fritzy@netflint.net/test" subscription="subscribed" expiry="presence" />

View file

@ -21,24 +21,24 @@ class TestChatStates(SleekTest):
msg = self.Message() msg = self.Message()
msg['chat_state'].active() msg['chat_state'].active()
self.check_message(msg, xmlstring % 'active', self.check(msg, xmlstring % 'active',
use_values=False) use_values=False)
msg['chat_state'].composing() msg['chat_state'].composing()
self.check_message(msg, xmlstring % 'composing', self.check(msg, xmlstring % 'composing',
use_values=False) use_values=False)
msg['chat_state'].gone() msg['chat_state'].gone()
self.check_message(msg, xmlstring % 'gone', self.check(msg, xmlstring % 'gone',
use_values=False) use_values=False)
msg['chat_state'].inactive() msg['chat_state'].inactive()
self.check_message(msg, xmlstring % 'inactive', self.check(msg, xmlstring % 'inactive',
use_values=False) use_values=False)
msg['chat_state'].paused() msg['chat_state'].paused()
self.check_message(msg, xmlstring % 'paused', self.check(msg, xmlstring % 'paused',
use_values=False) use_values=False)
suite = unittest.TestLoader().loadTestsFromTestCase(TestChatStates) suite = unittest.TestLoader().loadTestsFromTestCase(TestChatStates)

View file

@ -19,13 +19,13 @@ class TestStreamTester(SleekTest):
self.xmpp.add_event_handler('message', echo) self.xmpp.add_event_handler('message', echo)
self.stream_recv(""" self.recv("""
<message to="tester@localhost" from="user@localhost"> <message to="tester@localhost" from="user@localhost">
<body>Hi!</body> <body>Hi!</body>
</message> </message>
""") """)
self.stream_send_message(""" self.send("""
<message to="user@localhost"> <message to="user@localhost">
<body>Thanks for sending: Hi!</body> <body>Thanks for sending: Hi!</body>
</message> </message>
@ -40,13 +40,13 @@ class TestStreamTester(SleekTest):
self.xmpp.add_event_handler('message', echo) self.xmpp.add_event_handler('message', echo)
self.stream_recv(""" self.recv("""
<message to="tester.localhost" from="user@localhost"> <message to="tester.localhost" from="user@localhost">
<body>Hi!</body> <body>Hi!</body>
</message> </message>
""") """)
self.stream_send_message(""" self.send("""
<message to="user@localhost" from="tester.localhost"> <message to="user@localhost" from="tester.localhost">
<body>Thanks for sending: Hi!</body> <body>Thanks for sending: Hi!</body>
</message> </message>
@ -55,6 +55,6 @@ class TestStreamTester(SleekTest):
def testSendStreamHeader(self): def testSendStreamHeader(self):
"""Test that we can check a sent stream header.""" """Test that we can check a sent stream header."""
self.stream_start(mode='client', skip=False) self.stream_start(mode='client', skip=False)
self.stream_send_header(sto='localhost') self.send_header(sto='localhost')
suite = unittest.TestLoader().loadTestsFromTestCase(TestStreamTester) suite = unittest.TestLoader().loadTestsFromTestCase(TestStreamTester)

View file

@ -26,13 +26,13 @@ class TestStreamExceptions(SleekTest):
self.stream_start() self.stream_start()
self.xmpp.add_event_handler('message', message) self.xmpp.add_event_handler('message', message)
self.stream_recv(""" self.recv("""
<message> <message>
<body>This is going to cause an error.</body> <body>This is going to cause an error.</body>
</message> </message>
""") """)
self.stream_send_message(""" self.send("""
<message type="error"> <message type="error">
<error type="cancel"> <error type="cancel">
<feature-not-implemented <feature-not-implemented
@ -57,13 +57,13 @@ class TestStreamExceptions(SleekTest):
self.xmpp.add_event_handler('message', message, self.xmpp.add_event_handler('message', message,
threaded=True) threaded=True)
self.stream_recv(""" self.recv("""
<message> <message>
<body>This is going to cause an error.</body> <body>This is going to cause an error.</body>
</message> </message>
""") """)
self.stream_send_message(""" self.send("""
<message type="error"> <message type="error">
<error type="cancel"> <error type="cancel">
<feature-not-implemented <feature-not-implemented
@ -84,14 +84,14 @@ class TestStreamExceptions(SleekTest):
self.stream_start() self.stream_start()
self.xmpp.add_event_handler('message', message) self.xmpp.add_event_handler('message', message)
self.stream_recv(""" self.recv("""
<message> <message>
<body>This is going to cause an error.</body> <body>This is going to cause an error.</body>
</message> </message>
""") """)
if sys.version_info < (3, 0): if sys.version_info < (3, 0):
self.stream_send_message(""" self.send("""
<message type="error"> <message type="error">
<error type="cancel"> <error type="cancel">
<undefined-condition <undefined-condition

View file

@ -30,11 +30,11 @@ class TestHandlers(SleekTest):
self.xmpp.registerHandler(callback) self.xmpp.registerHandler(callback)
self.stream_recv("""<tester xmlns="test" />""") self.recv("""<tester xmlns="test" />""")
msg = self.Message() msg = self.Message()
msg['body'] = 'Success!' msg['body'] = 'Success!'
self.stream_send_message(msg) self.send(msg)
def testWaiter(self): def testWaiter(self):
"""Test using stream waiter handler.""" """Test using stream waiter handler."""
@ -55,7 +55,7 @@ class TestHandlers(SleekTest):
self.xmpp.add_event_handler('message', waiter_handler, threaded=True) self.xmpp.add_event_handler('message', waiter_handler, threaded=True)
# Send message to trigger waiter_handler # Send message to trigger waiter_handler
self.stream_recv(""" self.recv("""
<message> <message>
<body>Testing</body> <body>Testing</body>
</message> </message>
@ -66,10 +66,10 @@ class TestHandlers(SleekTest):
iq['id'] = 'test' iq['id'] = 'test'
iq['type'] = 'set' iq['type'] = 'set'
iq['query'] = 'test' iq['query'] = 'test'
self.stream_send_iq(iq) self.send(iq)
# Send the reply Iq # Send the reply Iq
self.stream_recv(""" self.recv("""
<iq id="test" type="result"> <iq id="test" type="result">
<query xmlns="test" /> <query xmlns="test" />
</iq> </iq>
@ -78,7 +78,7 @@ class TestHandlers(SleekTest):
# Check that waiter_handler received the reply # Check that waiter_handler received the reply
msg = self.Message() msg = self.Message()
msg['body'] = 'Successful: test' msg['body'] = 'Successful: test'
self.stream_send_message(msg) self.send(msg)
def testWaiterTimeout(self): def testWaiterTimeout(self):
"""Test that waiter handler is removed after timeout.""" """Test that waiter handler is removed after timeout."""
@ -93,14 +93,14 @@ class TestHandlers(SleekTest):
self.xmpp.add_event_handler('message', waiter_handler, threaded=True) self.xmpp.add_event_handler('message', waiter_handler, threaded=True)
# Start test by triggerig waiter_handler # Start test by triggerig waiter_handler
self.stream_recv("""<message><body>Start Test</body></message>""") self.recv("""<message><body>Start Test</body></message>""")
# Check that Iq was sent to trigger start of timeout period # Check that Iq was sent to trigger start of timeout period
iq = self.Iq() iq = self.Iq()
iq['id'] = 'test2' iq['id'] = 'test2'
iq['type'] = 'set' iq['type'] = 'set'
iq['query'] = 'test2' iq['query'] = 'test2'
self.stream_send_iq(iq) self.send(iq)
# Check that the waiter is no longer registered # Check that the waiter is no longer registered
waiter_exists = self.xmpp.removeHandler('IqWait_test2') waiter_exists = self.xmpp.removeHandler('IqWait_test2')

View file

@ -29,7 +29,7 @@ class TestStreamPresence(SleekTest):
self.xmpp.add_event_handler('got_offline', got_offline) self.xmpp.add_event_handler('got_offline', got_offline)
self.xmpp.add_event_handler('presence_unavailable', unavailable) self.xmpp.add_event_handler('presence_unavailable', unavailable)
self.stream_recv(""" self.recv("""
<presence type="unavailable" from="otheruser@localhost" /> <presence type="unavailable" from="otheruser@localhost" />
""") """)
@ -54,7 +54,7 @@ class TestStreamPresence(SleekTest):
# #
# We use the stream to initialize the roster to make # We use the stream to initialize the roster to make
# the test independent of the roster implementation. # the test independent of the roster implementation.
self.stream_recv(""" self.recv("""
<iq type="set"> <iq type="set">
<query xmlns="jabber:iq:roster"> <query xmlns="jabber:iq:roster">
<item jid="otheruser@localhost" <item jid="otheruser@localhost"
@ -67,12 +67,12 @@ class TestStreamPresence(SleekTest):
""") """)
# Contact comes online. # Contact comes online.
self.stream_recv(""" self.recv("""
<presence from="otheruser@localhost/foobar" /> <presence from="otheruser@localhost/foobar" />
""") """)
# Contact goes offline, should trigger got_offline. # Contact goes offline, should trigger got_offline.
self.stream_recv(""" self.recv("""
<presence from="otheruser@localhost/foobar" <presence from="otheruser@localhost/foobar"
type="unavailable" /> type="unavailable" />
""") """)
@ -98,7 +98,7 @@ class TestStreamPresence(SleekTest):
self.xmpp.add_event_handler('presence_available', presence_available) self.xmpp.add_event_handler('presence_available', presence_available)
self.xmpp.add_event_handler('got_online', got_online) self.xmpp.add_event_handler('got_online', got_online)
self.stream_recv(""" self.recv("""
<presence from="user@localhost" /> <presence from="user@localhost" />
""") """)
@ -135,15 +135,15 @@ class TestStreamPresence(SleekTest):
self.xmpp.auto_authorize = True self.xmpp.auto_authorize = True
self.xmpp.auto_subscribe = True self.xmpp.auto_subscribe = True
self.stream_recv(""" self.recv("""
<presence from="user@localhost" type="subscribe" /> <presence from="user@localhost" type="subscribe" />
""") """)
self.stream_send_presence(""" self.send("""
<presence to="user@localhost" type="subscribed" /> <presence to="user@localhost" type="subscribed" />
""") """)
self.stream_send_presence(""" self.send("""
<presence to="user@localhost" type="subscribe" /> <presence to="user@localhost" type="subscribe" />
""") """)
@ -172,11 +172,11 @@ class TestStreamPresence(SleekTest):
# With this setting we should reject all subscriptions. # With this setting we should reject all subscriptions.
self.xmpp.auto_authorize = False self.xmpp.auto_authorize = False
self.stream_recv(""" self.recv("""
<presence from="user@localhost" type="subscribe" /> <presence from="user@localhost" type="subscribe" />
""") """)
self.stream_send_presence(""" self.send("""
<presence to="user@localhost" type="unsubscribed" /> <presence to="user@localhost" type="unsubscribed" />
""") """)

View file

@ -20,12 +20,12 @@ class TestStreamRoster(SleekTest):
t = threading.Thread(name='get_roster', target=self.xmpp.get_roster) t = threading.Thread(name='get_roster', target=self.xmpp.get_roster)
t.start() t.start()
self.stream_send_iq(""" self.send("""
<iq type="get" id="1"> <iq type="get" id="1">
<query xmlns="jabber:iq:roster" /> <query xmlns="jabber:iq:roster" />
</iq> </iq>
""") """)
self.stream_recv(""" self.recv("""
<iq type="result" id="1"> <iq type="result" id="1">
<query xmlns="jabber:iq:roster"> <query xmlns="jabber:iq:roster">
<item jid="user@localhost" <item jid="user@localhost"
@ -54,7 +54,7 @@ class TestStreamRoster(SleekTest):
self.stream_start(mode='client') self.stream_start(mode='client')
self.failUnless(self.xmpp.roster == {}, "Initial roster not empty.") self.failUnless(self.xmpp.roster == {}, "Initial roster not empty.")
self.stream_recv(""" self.recv("""
<iq type="set" id="1"> <iq type="set" id="1">
<query xmlns="jabber:iq:roster"> <query xmlns="jabber:iq:roster">
<item jid="user@localhost" <item jid="user@localhost"
@ -66,7 +66,7 @@ class TestStreamRoster(SleekTest):
</query> </query>
</iq> </iq>
""") """)
self.stream_send_iq(""" self.send("""
<iq type="result" id="1"> <iq type="result" id="1">
<query xmlns="jabber:iq:roster" /> <query xmlns="jabber:iq:roster" />
</iq> </iq>