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)
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)