Esempio n. 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)
Esempio n. 2
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)