def execute(self, jid, password, host, callback, extra_handlers=[], errback=None): jid.resource = randomResource() factory = client.DeferredClientFactory(jid, password) for handler in extra_handlers: handler.setHandlerParent(factory.streamManager) d = client.clientCreator(factory) def disconnect(result): factory.streamManager.xmlstream.sendFooter() factory.streamManager.xmlstream.transport.connector.disconnect() return result def defaultErrBack(error_stanza): log.error(error_stanza.getErrorMessage()) log.error("StanzaError: %s" % error_stanza.value.stanza.toXml()) d.addCallback(callback) d.addCallback(disconnect) if errback: d.addErrback(errback) else: d.addErrback(defaultErrBack) zr = getUtility(IZopeReactor) zr.reactor.callFromThread(zr.reactor.connectTCP, host, 5222, factory) return d
def test_call(self): """ The factory is passed to an SRVConnector and a connection initiated. """ d1 = defer.Deferred() factory = client.DeferredClientFactory(JID('*****@*****.**'), 'secret') def cb(connector): self.assertEqual('xmpp-client', connector.service) self.assertIsInstance(connector.domain, bytes) self.assertEqual(b'example.org', connector.domain) self.assertEqual(factory, connector.factory) def connect(connector): d1.callback(connector) d1.addCallback(cb) self.patch(client.SRVConnector, 'connect', connect) d2 = client.clientCreator(factory) self.assertEqual(factory.deferred, d2) return d1
def setUp(self): self.factory = client.DeferredClientFactory(JID('*****@*****.**'), 'secret')