fixed html-im stanza plugin
This commit is contained in:
		| @@ -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): | ||||
|   | ||||
| @@ -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__() | ||||
|   | ||||
| @@ -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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Nathan Fritz
					Nathan Fritz