示例#1
0
    def test_iq_reply_handlers(self):
        parent = self

        class Handlers(XMPPFeatureHandler):
            # pylint: disable=W0232,R0201,R0903
            @iq_get_stanza_handler(
                XMLPayload, "{http://pyxmpp.jajcus.net/xmlns/test}payload")
            def handler1(self, stanza):
                return parent.reply_iq_get(stanza)

            @iq_set_stanza_handler(
                XMLPayload, "{http://pyxmpp.jajcus.net/xmlns/test}payload")
            def handler2(self, stanza):
                return parent.reply_iq_set(stanza)

        self.proc.setup_stanza_handlers([Handlers()], "post-auth")
        self.process_stanzas(ALL_STANZAS)
        self.assertEqual(self.handlers_called,
                         ["reply_iq_get", "reply_iq_set"])
        self.assertEqual(len(self.stanzas_sent), 2)
        stanza1 = self.stanzas_sent[0]
        self.assertTrue(
            xml_elements_equal(stanza1.as_xml(), ElementTree.XML(IQ2), True))
        stanza2 = self.stanzas_sent[1]
        self.assertTrue(
            xml_elements_equal(stanza2.as_xml(), ElementTree.XML(IQ4), True))
示例#2
0
 def test_serialize1(self):
     for xml in (STANZA0, STANZA1, STANZA2, STANZA3, STANZA4, STANZA5):
         stanza = Stanza(ElementTree.XML(xml))
         element1 = ElementTree.XML(re.sub(r" xmlns='jabber:[^'\":]*'",
                                                                 "", xml))
         element2 = ElementTree.XML(stanza.serialize())
         self.assertTrue(xml_elements_equal(element1, element2, True))
示例#3
0
 def test_serialize2(self):
     stanza = Stanza("presence", from_jid = JID('[email protected]/d'),
                         to_jid = JID('[email protected]/h'), stanza_id = '666',
                         stanza_type = 'unavailable')
     xml = stanza.serialize()
     self.assertTrue(xml_elements_equal(ElementTree.XML(xml),
         ElementTree.XML(STANZA3.replace(" xmlns='jabber:client'",""))))
示例#4
0
 def test_stanza_get_custom_payload(self):
     stanza6 = Stanza(ElementTree.XML(STANZA6))
     payload = stanza6.get_payload(TestPayload)
     self.assertIsInstance(payload, TestPayload)
     self.assertIsNone(payload.data) # pylint: disable=E1103
     self.assertTrue(xml_elements_equal(ElementTree.XML(STANZA6)[0],
                                                         payload.as_xml()))
示例#5
0
文件: stanza.py 项目: zeeying/pyxmpp2
 def test_stanza_get_custom_payload(self):
     stanza6 = Stanza(ElementTree.XML(STANZA6))
     payload = stanza6.get_payload(TestPayload)
     self.assertIsInstance(payload, TestPayload)
     self.assertIsNone(payload.data)  # pylint: disable=E1103
     self.assertTrue(
         xml_elements_equal(ElementTree.XML(STANZA6)[0], payload.as_xml()))
示例#6
0
文件: stanza.py 项目: zeeying/pyxmpp2
 def test_stanza_as_xml(self):
     # STANZA1 and STANZA2 won't match as have no namespace
     for xml in (STANZA0, STANZA3, STANZA4, STANZA5):
         stanza = Stanza(ElementTree.XML(xml))
         self.assertTrue(
             xml_elements_equal(stanza.as_xml(), ElementTree.XML(xml),
                                True))
示例#7
0
文件: stanza.py 项目: zeeying/pyxmpp2
 def test_serialize1(self):
     for xml in (STANZA0, STANZA1, STANZA2, STANZA3, STANZA4, STANZA5):
         stanza = Stanza(ElementTree.XML(xml))
         element1 = ElementTree.XML(
             re.sub(r" xmlns='jabber:[^'\":]*'", "", xml))
         element2 = ElementTree.XML(stanza.serialize())
         self.assertTrue(xml_elements_equal(element1, element2, True))
示例#8
0
    def test_emit_stanza(self):
        serializer = XMPPSerializer("jabber:client")
        output = serializer.emit_head("from", "to")

        stanza = ElementTree.XML("<message xmlns='jabber:client'>"
                                    "<body>Body</body>"
                                    "<sub xmlns='http://example.org/ns'>"
                                        "<sub1 />"
                                    "<sub2 xmlns='http://example.org/ns2' />"
                                "</sub>"
                            "</message>")
        output += serializer.emit_stanza(stanza)
        output += serializer.emit_tail()
        xml = ElementTree.XML(output)
        self.assertEqual(len(xml), 1)
        self.assertEqual(len(xml[0]), 2)
        self.assertTrue(xml_elements_equal(xml[0], stanza))

        # no prefix for stanza elements
        self.assertTrue("<message><body>" in output)

        # no prefix for stanza child
        self.assertTrue("<sub " in output)

        # ...and its same-namespace child
        self.assertTrue("<sub1/" in output or "<sub1 " in output)

        # prefix for other namespace child
        self.assertTrue("<sub2" in output)
示例#9
0
    def test_emit_stanza(self):
        serializer = XMPPSerializer("jabber:client")
        output = serializer.emit_head("from", "to")

        stanza = ElementTree.XML("<message xmlns='jabber:client'>"
                                 "<body>Body</body>"
                                 "<sub xmlns='http://example.org/ns'>"
                                 "<sub1 />"
                                 "<sub2 xmlns='http://example.org/ns2' />"
                                 "</sub>"
                                 "</message>")
        output += serializer.emit_stanza(stanza)
        output += serializer.emit_tail()
        xml = ElementTree.XML(output)
        self.assertEqual(len(xml), 1)
        self.assertEqual(len(xml[0]), 2)
        self.assertTrue(xml_elements_equal(xml[0], stanza))

        # no prefix for stanza elements
        self.assertTrue("<message><body>" in output)

        # no prefix for stanza child
        self.assertTrue("<sub " in output)

        # ...and its same-namespace child
        self.assertTrue("<sub1/" in output or "<sub1 " in output)

        # prefix for other namespace child
        self.assertTrue("<sub2" in output)
示例#10
0
 def match(self, event, node):
     if self.event != event:
         return False
     if event == "end":
         return True
     if not xml_elements_equal(self.xml, node):
         return False
     return True
示例#11
0
文件: stanza.py 项目: zeeying/pyxmpp2
 def test_stanza_build(self):
     stanza = Stanza("presence",
                     from_jid=JID('[email protected]/d'),
                     to_jid=JID('[email protected]/h'),
                     stanza_id='666',
                     stanza_type='unavailable')
     self.assertTrue(
         xml_elements_equal(stanza.as_xml(), ElementTree.XML(STANZA3)))
示例#12
0
 def match(self, event, node):
     if self.event != event:
         return False
     if event == "end":
         return True
     if not xml_elements_equal(self.xml, node):
         return False
     return True
示例#13
0
文件: stanza.py 项目: zeeying/pyxmpp2
 def test_stanza_payload(self):
     stanza5 = Stanza(ElementTree.XML(STANZA5))
     payload = stanza5.get_all_payload()
     self.assertEqual(len(payload), 1)
     payload = payload[0]
     self.assertIsInstance(payload, StanzaPayload)
     self.assertIsInstance(payload, XMLPayload)
     self.assertEqual(payload.xml_element_name, "{jabber:iq:version}query")
     self.assertTrue(
         xml_elements_equal(ElementTree.XML(STANZA5)[0], payload.element))
示例#14
0
 def test_stanza_set_custom_payload(self):
     stanza7 = Stanza("iq", from_jid = JID('[email protected]/d'),
                         to_jid = JID('[email protected]/h'), stanza_id = '666',
                         stanza_type='get')
     payload = TestPayload(data = u"Test")
     stanza7.set_payload(payload)
     payload1 = stanza7.get_payload(TestPayload)
     self.assertTrue(payload1 is payload)
     self.assertTrue(xml_elements_equal(ElementTree.XML(STANZA7),
                                                 stanza7.as_xml(), True))
示例#15
0
 def test_stanza_payload(self):
     stanza5 = Stanza(ElementTree.XML(STANZA5))
     payload = stanza5.get_all_payload()
     self.assertEqual(len(payload), 1)
     payload = payload[0]
     self.assertIsInstance(payload, StanzaPayload)
     self.assertIsInstance(payload, XMLPayload)
     self.assertEqual(payload.xml_element_name, "{jabber:iq:version}query")
     self.assertTrue(xml_elements_equal(
                         ElementTree.XML(STANZA5)[0], payload.element))
示例#16
0
文件: stanza.py 项目: zeeying/pyxmpp2
 def test_serialize2(self):
     stanza = Stanza("presence",
                     from_jid=JID('[email protected]/d'),
                     to_jid=JID('[email protected]/h'),
                     stanza_id='666',
                     stanza_type='unavailable')
     xml = stanza.serialize()
     self.assertTrue(
         xml_elements_equal(
             ElementTree.XML(xml),
             ElementTree.XML(STANZA3.replace(" xmlns='jabber:client'",
                                             ""))))
示例#17
0
文件: stanza.py 项目: zeeying/pyxmpp2
 def test_stanza_set_custom_payload(self):
     stanza7 = Stanza("iq",
                      from_jid=JID('[email protected]/d'),
                      to_jid=JID('[email protected]/h'),
                      stanza_id='666',
                      stanza_type='get')
     payload = TestPayload(data=u"Test")
     stanza7.set_payload(payload)
     payload1 = stanza7.get_payload(TestPayload)
     self.assertTrue(payload1 is payload)
     self.assertTrue(
         xml_elements_equal(ElementTree.XML(STANZA7), stanza7.as_xml(),
                            True))
示例#18
0
 def test_iq_reply_handlers(self):
     parent = self
     class Handlers(XMPPFeatureHandler):
         # pylint: disable=W0232,R0201,R0903
         @iq_get_stanza_handler(XMLPayload,
                             "{http://pyxmpp.jajcus.net/xmlns/test}payload")
         def handler1(self, stanza):
             return parent.reply_iq_get(stanza)
         @iq_set_stanza_handler(XMLPayload,
                             "{http://pyxmpp.jajcus.net/xmlns/test}payload")
         def handler2(self, stanza):
             return parent.reply_iq_set(stanza)
     self.proc.setup_stanza_handlers([Handlers()], "post-auth")
     self.process_stanzas(ALL_STANZAS)
     self.assertEqual(self.handlers_called, ["reply_iq_get",
                                                 "reply_iq_set"])
     self.assertEqual(len(self.stanzas_sent), 2)
     stanza1 = self.stanzas_sent[0]
     self.assertTrue(xml_elements_equal(stanza1.as_xml(),
                                                 ElementTree.XML(IQ2), True))
     stanza2 = self.stanzas_sent[1]
     self.assertTrue(xml_elements_equal(stanza2.as_xml(),
                                                 ElementTree.XML(IQ4), True))
示例#19
0
 def do_test(self, chunk_length):
     while 1:
         data = self.file.read(chunk_length)
         if not data:
             self.reader.feed('')
             break
         self.chunk_end += len(data)
         self.reader.feed(data)
         if not data:
             self.event("end", None)
             break
         self.chunk_start = self.chunk_end
     root1 = self.whole_stream.getroot()
     self.assertIsNotNone(root1)
     root2 = whole_stream.getroot()
     if not xml_elements_equal(root1, root2, True):
         self.fail("Whole stream invalid. Got: %r, Expected: %r"
                                 % (ElementTree.tostring(root1),
                                             ElementTree.tostring(root2)))
示例#20
0
 def do_test(self, chunk_length):
     while 1:
         data = self.file.read(chunk_length)
         if not data:
             self.reader.feed('')
             break
         self.chunk_end += len(data)
         self.reader.feed(data)
         if not data:
             self.event("end", None)
             break
         self.chunk_start = self.chunk_end
     root1 = self.whole_stream.getroot()
     self.assertIsNotNone(root1)
     root2 = whole_stream.getroot()
     if not xml_elements_equal(root1, root2, True):
         self.fail(
             "Whole stream invalid. Got: %r, Expected: %r" %
             (ElementTree.tostring(root1), ElementTree.tostring(root2)))
示例#21
0
 def test_stanza_as_xml(self):
     # STANZA1 and STANZA2 won't match as have no namespace
     for xml in (STANZA0, STANZA3, STANZA4, STANZA5):
         stanza = Stanza(ElementTree.XML(xml))
         self.assertTrue(xml_elements_equal(stanza.as_xml(),
                                             ElementTree.XML(xml), True))
示例#22
0
 def test_stanza_build(self):
     stanza = Stanza("presence", from_jid = JID('[email protected]/d'),
                         to_jid = JID('[email protected]/h'), stanza_id = '666',
                         stanza_type = 'unavailable')
     self.assertTrue(xml_elements_equal(stanza.as_xml(),
                                                 ElementTree.XML(STANZA3)))