2014-07-17 12:19:04 +00:00
|
|
|
from slixmpp import Iq
|
2013-07-26 11:02:26 +00:00
|
|
|
import unittest
|
2014-07-17 12:19:04 +00:00
|
|
|
from slixmpp.test import SlixTest
|
|
|
|
from slixmpp.plugins.xep_0050 import Command
|
|
|
|
from slixmpp.xmlstream import register_stanza_plugin
|
2011-03-24 03:00:41 +00:00
|
|
|
|
|
|
|
|
2014-07-17 12:19:04 +00:00
|
|
|
class TestAdHocCommandStanzas(SlixTest):
|
2011-03-24 03:00:41 +00:00
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
register_stanza_plugin(Iq, Command)
|
|
|
|
|
|
|
|
def testAction(self):
|
|
|
|
"""Test using the action attribute."""
|
|
|
|
iq = self.Iq()
|
|
|
|
iq['type'] = 'set'
|
|
|
|
iq['command']['node'] = 'foo'
|
|
|
|
|
|
|
|
iq['command']['action'] = 'execute'
|
|
|
|
self.failUnless(iq['command']['action'] == 'execute')
|
|
|
|
|
|
|
|
iq['command']['action'] = 'complete'
|
|
|
|
self.failUnless(iq['command']['action'] == 'complete')
|
|
|
|
|
|
|
|
iq['command']['action'] = 'cancel'
|
|
|
|
self.failUnless(iq['command']['action'] == 'cancel')
|
|
|
|
|
|
|
|
def testSetActions(self):
|
|
|
|
"""Test setting next actions in a command stanza."""
|
|
|
|
iq = self.Iq()
|
|
|
|
iq['type'] = 'result'
|
|
|
|
iq['command']['node'] = 'foo'
|
|
|
|
iq['command']['actions'] = ['prev', 'next']
|
|
|
|
|
|
|
|
self.check(iq, """
|
|
|
|
<iq id="0" type="result">
|
|
|
|
<command xmlns="http://jabber.org/protocol/commands"
|
|
|
|
node="foo">
|
|
|
|
<actions>
|
|
|
|
<prev />
|
|
|
|
<next />
|
|
|
|
</actions>
|
|
|
|
</command>
|
|
|
|
</iq>
|
|
|
|
""")
|
|
|
|
|
|
|
|
def testGetActions(self):
|
|
|
|
"""Test retrieving next actions from a command stanza."""
|
|
|
|
iq = self.Iq()
|
|
|
|
iq['command']['node'] = 'foo'
|
|
|
|
iq['command']['actions'] = ['prev', 'next']
|
|
|
|
|
|
|
|
results = iq['command']['actions']
|
2012-06-20 01:19:44 +00:00
|
|
|
expected = set(['prev', 'next'])
|
2011-03-24 03:00:41 +00:00
|
|
|
self.assertEqual(results, expected,
|
|
|
|
"Incorrect next actions: %s" % results)
|
|
|
|
|
|
|
|
def testDelActions(self):
|
|
|
|
"""Test removing next actions from a command stanza."""
|
|
|
|
iq = self.Iq()
|
|
|
|
iq['type'] = 'result'
|
|
|
|
iq['command']['node'] = 'foo'
|
|
|
|
iq['command']['actions'] = ['prev', 'next']
|
|
|
|
|
|
|
|
del iq['command']['actions']
|
|
|
|
|
|
|
|
self.check(iq, """
|
|
|
|
<iq id="0" type="result">
|
|
|
|
<command xmlns="http://jabber.org/protocol/commands"
|
|
|
|
node="foo" />
|
|
|
|
</iq>
|
|
|
|
""")
|
|
|
|
|
|
|
|
def testAddNote(self):
|
|
|
|
"""Test adding a command note."""
|
|
|
|
iq = self.Iq()
|
|
|
|
iq['type'] = 'result'
|
|
|
|
iq['command']['node'] = 'foo'
|
|
|
|
iq['command'].add_note('Danger!', ntype='warning')
|
|
|
|
|
|
|
|
self.check(iq, """
|
|
|
|
<iq id="0" type="result">
|
|
|
|
<command xmlns="http://jabber.org/protocol/commands"
|
|
|
|
node="foo">
|
|
|
|
<note type="warning">Danger!</note>
|
|
|
|
</command>
|
|
|
|
</iq>
|
|
|
|
""")
|
|
|
|
|
|
|
|
def testNotes(self):
|
|
|
|
"""Test using command notes."""
|
|
|
|
iq = self.Iq()
|
|
|
|
iq['type'] = 'result'
|
|
|
|
iq['command']['node'] = 'foo'
|
|
|
|
|
|
|
|
notes = [('info', 'Interesting...'),
|
|
|
|
('warning', 'Danger!'),
|
|
|
|
('error', "I can't let you do that")]
|
|
|
|
iq['command']['notes'] = notes
|
|
|
|
|
|
|
|
self.failUnless(iq['command']['notes'] == notes,
|
|
|
|
"Notes don't match: %s %s" % (notes, iq['command']['notes']))
|
|
|
|
|
|
|
|
self.check(iq, """
|
|
|
|
<iq id="0" type="result">
|
|
|
|
<command xmlns="http://jabber.org/protocol/commands"
|
|
|
|
node="foo">
|
|
|
|
<note type="info">Interesting...</note>
|
|
|
|
<note type="warning">Danger!</note>
|
|
|
|
<note type="error">I can't let you do that</note>
|
|
|
|
</command>
|
|
|
|
</iq>
|
|
|
|
""")
|
|
|
|
|
|
|
|
|
|
|
|
suite = unittest.TestLoader().loadTestsFromTestCase(TestAdHocCommandStanzas)
|