summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sleekxmpp/basexmpp.py2
-rw-r--r--sleekxmpp/stanza/htmlim.py12
-rw-r--r--tests/test_messagestanzas.py19
3 files changed, 26 insertions, 7 deletions
diff --git a/sleekxmpp/basexmpp.py b/sleekxmpp/basexmpp.py
index 764f8c55..1ed9b3ca 100644
--- a/sleekxmpp/basexmpp.py
+++ b/sleekxmpp/basexmpp.py
@@ -202,7 +202,7 @@ class basexmpp(object):
message['body'] = mbody
message['subject'] = msubject
if mnick is not None: message['nick'] = mnick
- if mhtml is not None: message['html'] = mhtml
+ if mhtml is not None: message['html']['html'] = mhtml
return message
def makePresence(self, pshow=None, pstatus=None, ppriority=None, pto=None, ptype=None, pfrom=None):
diff --git a/sleekxmpp/stanza/htmlim.py b/sleekxmpp/stanza/htmlim.py
index d2ccfd6a..f9ee985f 100644
--- a/sleekxmpp/stanza/htmlim.py
+++ b/sleekxmpp/stanza/htmlim.py
@@ -11,24 +11,24 @@ class HTMLIM(ElementBase):
namespace = 'http://jabber.org/protocol/xhtml-im'
name = 'html'
plugin_attrib = 'html'
- interfaces = set(('html'))
+ interfaces = set(('html',))
plugin_attrib_map = set()
plugin_xml_map = set()
def setHtml(self, html):
- if issinstance(html, str):
+ if isinstance(html, str):
html = ET.XML(html)
- if html.find('{http://www.w3.org/1999/xhtml}body') is None:
+ if html.tag != '{http://www.w3.org/1999/xhtml}body':
body = ET.Element('{http://www.w3.org/1999/xhtml}body')
body.append(html)
+ self.xml.append(body)
else:
- body = html
- self.xml.append(html)
+ self.xml.append(html)
def getHtml(self):
html = self.xml.find('{http://www.w3.org/1999/xhtml}body')
if html is None: return ''
- return __str__(html)
+ return html
def delHtml(self):
return self.__del__()
diff --git a/tests/test_messagestanzas.py b/tests/test_messagestanzas.py
index 4de482f3..08488ce3 100644
--- a/tests/test_messagestanzas.py
+++ b/tests/test_messagestanzas.py
@@ -1,9 +1,13 @@
import unittest
+from xml.etree import cElementTree as ET
class testmessagestanzas(unittest.TestCase):
def setUp(self):
import sleekxmpp.stanza.message as m
+ from sleekxmpp.basexmpp import stanzaPlugin
+ from sleekxmpp.stanza.htmlim import HTMLIM
+ stanzaPlugin(m.Message, HTMLIM)
self.m = m
def testGroupchatReplyRegression(self):
@@ -21,5 +25,20 @@ class testmessagestanzas(unittest.TestCase):
msg = self.m.Message()
msg.attrib.attrib.attrib['to'] = 'usr@server.tld'
self.failUnless(str(msg['to']) == 'usr@server.tld')
+
+ def testHTMLPlugin(self):
+ "Test message/html/html stanza"
+ msgtxt = """<message to="fritzy@netflint.net/sleekxmpp" type="chat"><body>this is the plaintext message</body><html xmlns="http://jabber.org/protocol/xhtml-im"><body xmlns="http://www.w3.org/1999/xhtml"><p>This is the htmlim message</p></body></html></message>"""
+ msg = self.m.Message()
+ msg['to'] = "fritzy@netflint.net/sleekxmpp"
+ msg['body'] = "this is the plaintext message"
+ msg['type'] = 'chat'
+ p = ET.Element('{http://www.w3.org/1999/xhtml}p')
+ p.text = "This is the htmlim message"
+ msg['html']['html'] = p
+ msg2 = self.m.Message()
+ values = msg.getValues()
+ msg2.setValues(values)
+ self.failUnless(msgtxt == str(msg) == str(msg2))
suite = unittest.TestLoader().loadTestsFromTestCase(testmessagestanzas)