Add full support for initial payloads with adhoc commands, plus test.

This commit is contained in:
Lance Stout
2012-04-30 11:07:54 -07:00
parent f53b815855
commit ad5b61de50
2 changed files with 81 additions and 5 deletions

View File

@@ -1,4 +1,5 @@
import time
import logging
import threading
from sleekxmpp.test import *
@@ -17,6 +18,59 @@ class TestAdHocCommands(SleekTest):
def tearDown(self):
self.stream_close()
def testInitialPayloadCommand(self):
"""Test a command with an initial payload."""
class TestPayload(ElementBase):
name = 'foo'
namespace = 'test'
interfaces = set(['bar'])
plugin_attrib = name
Command = self.xmpp['xep_0050'].stanza.Command
register_stanza_plugin(Command, TestPayload, iterable=True)
def handle_command(iq, session):
initial = session['payload']
logging.debug(initial)
new_payload = TestPayload()
if initial:
new_payload['bar'] = 'Received: %s' % initial[0]['bar']
else:
new_payload['bar'] = 'Failed'
logging.debug(initial)
session['payload'] = new_payload
session['next'] = None
session['has_next'] = False
return session
self.xmpp['xep_0050'].add_command('tester@localhost', 'foo',
'Do Foo', handle_command)
self.recv("""
<iq id="11" type="set" to="tester@localhost" from="foo@bar">
<command xmlns="http://jabber.org/protocol/commands"
node="foo"
action="execute">
<foo xmlns="test" bar="baz" />
</command>
</iq>
""")
self.send("""
<iq id="11" type="result" to="foo@bar">
<command xmlns="http://jabber.org/protocol/commands"
node="foo"
status="completed"
sessionid="_sessionid_">
<foo xmlns="test" bar="Received: baz" />
</command>
</iq>
""")
def testZeroStepCommand(self):
"""Test running a command with no steps."""