コード例 #1
0
    def DoHandshake(self, resource_prefix, resource, username,
                    initial_stream_domain, auth_domain, auth_stream_domain):
        self.Reset()
        handshake_task = (xmppserver.HandshakeTask(self, resource_prefix,
                                                   True))
        stream_xml = xmppserver.ParseXml('<stream:stream xmlns:stream="foo"/>')
        stream_xml.setAttribute('to', initial_stream_domain)
        self.assertEqual(self.data_received, 0)
        handshake_task.FeedStanza(stream_xml)
        self.assertEqual(self.data_received, 2)

        if auth_domain:
            username_domain = '%s@%s' % (username, auth_domain)
        else:
            username_domain = username
        auth_string = base64.b64encode('\0%s\0bar' % username_domain)
        auth_xml = xmppserver.ParseXml('<auth>%s</auth>' % auth_string)
        handshake_task.FeedStanza(auth_xml)
        self.assertEqual(self.data_received, 3)

        stream_xml = xmppserver.ParseXml('<stream:stream xmlns:stream="foo"/>')
        stream_xml.setAttribute('to', auth_stream_domain)
        handshake_task.FeedStanza(stream_xml)
        self.assertEqual(self.data_received, 5)

        bind_xml = xmppserver.ParseXml(
            '<iq type="set"><bind><resource>%s</resource></bind></iq>' %
            resource)
        handshake_task.FeedStanza(bind_xml)
        self.assertEqual(self.data_received, 6)

        self.assertFalse(self.handshake_done)

        session_xml = xmppserver.ParseXml(
            '<iq type="set"><session></session></iq>')
        handshake_task.FeedStanza(session_xml)
        self.assertEqual(self.data_received, 7)

        self.assertTrue(self.handshake_done)

        self.assertEqual(self.jid.username, username)
        self.assertEqual(
            self.jid.domain, auth_stream_domain or auth_domain
            or initial_stream_domain)
        self.assertEqual(self.jid.resource,
                         '%s.%s' % (resource_prefix, resource))

        handshake_task.FeedStanza('<ignored/>')
        self.assertEqual(self.data_received, 7)
コード例 #2
0
 def testCloneXml(self):
     xml = xmppserver.ParseXml('<foo/>')
     xml_clone = xmppserver.CloneXml(xml)
     xml_clone.setAttribute('bar', 'baz')
     self.assertEqual(xml, xml)
     self.assertEqual(xml_clone, xml_clone)
     self.assertNotEqual(xml, xml_clone)
コード例 #3
0
 def testCloneXmlUnlink(self):
     xml_text = '<foo/>'
     xml = xmppserver.ParseXml(xml_text)
     xml_clone = xmppserver.CloneXml(xml)
     xml.unlink()
     self.assertEqual(xml.parentNode, None)
     self.assertNotEqual(xml_clone.parentNode, None)
     self.assertEqual(xml_clone.toxml(), xml_text)
コード例 #4
0
    def DoHandshakeUnauthenticated(self, resource_prefix, resource, username,
                                   initial_stream_domain):
        self.Reset()
        handshake_task = (xmppserver.HandshakeTask(self, resource_prefix,
                                                   False))
        stream_xml = xmppserver.ParseXml('<stream:stream xmlns:stream="foo"/>')
        stream_xml.setAttribute('to', initial_stream_domain)
        self.assertEqual(self.data_received, 0)
        handshake_task.FeedStanza(stream_xml)
        self.assertEqual(self.data_received, 2)

        self.assertFalse(self.handshake_done)

        auth_string = base64.b64encode('\0%s\0bar' % username)
        auth_xml = xmppserver.ParseXml('<auth>%s</auth>' % auth_string)
        handshake_task.FeedStanza(auth_xml)
        self.assertEqual(self.data_received, 3)

        self.assertTrue(self.handshake_done)

        self.assertEqual(self.jid, None)

        handshake_task.FeedStanza('<ignored/>')
        self.assertEqual(self.data_received, 3)
コード例 #5
0
 def testParseXml(self):
     xml_text = """<foo xmlns=""><bar xmlns=""><baz/></bar></foo>"""
     xml = xmppserver.ParseXml(xml_text)
     self.assertEqual(xml.toxml(), xml_text)