def test_sendNotConnected(self): """ Test send when there is no established XML stream. The data should be cached until an XML stream has been established and initialized. """ factory = xmlstream.XmlStreamFactory(xmlstream.Authenticator()) sm = subprotocols.StreamManager(factory) handler = DummyXMPPHandler() sm.addHandler(handler) xs = factory.buildProtocol(None) xs.transport = proto_helpers.StringTransport() sm.send("<presence/>") self.assertEquals(b"", xs.transport.value()) self.assertEquals("<presence/>", sm._packetQueue[0]) xs.connectionMade() self.assertEquals(b"", xs.transport.value()) self.assertEquals("<presence/>", sm._packetQueue[0]) xs.dataReceived(b"<stream:stream xmlns='jabber:client' " b"xmlns:stream='http://etherx.jabber.org/streams' " b"from='example.com' id='12345'>") xs.dispatch(xs, "//event/stream/authd") self.assertEquals(b"<presence/>", xs.transport.value()) self.assertFalse(sm._packetQueue)
def setUp(self): factory = xmlstream.XmlStreamFactory(xmlstream.Authenticator()) self.clock = task.Clock() self.streamManager = subprotocols.StreamManager(factory, self.clock) self.xmlstream = factory.buildProtocol(None) self.transport = proto_helpers.StringTransport() self.xmlstream.transport = self.transport self.request = IQGetStanza()
def test_basic(self): """ Test correct initialization and setup of factory observers. """ factory = DummyFactory() sm = subprotocols.StreamManager(factory) self.assertIdentical(None, sm.xmlstream) self.assertEquals([], sm.handlers) self.assertEquals(sm._connected, sm.factory.callbacks['//event/stream/connected']) self.assertEquals(sm._authd, sm.factory.callbacks['//event/stream/authd']) self.assertEquals(sm._disconnected, sm.factory.callbacks['//event/stream/end']) self.assertEquals(sm.initializationFailed, sm.factory.callbacks['//event/xmpp/initfailed'])
def test_sendNotInitialized(self): """ Test send when the stream is connected but not yet initialized. The data should be cached until the XML stream has been initialized. """ factory = xmlstream.XmlStreamFactory(xmlstream.Authenticator()) sm = subprotocols.StreamManager(factory) xs = factory.buildProtocol(None) xs.transport = proto_helpers.StringTransport() xs.connectionMade() xs.dataReceived(b"<stream:stream xmlns='jabber:client' " b"xmlns:stream='http://etherx.jabber.org/streams' " b"from='example.com' id='12345'>") sm.send("<presence/>") self.assertEquals(b"", xs.transport.value()) self.assertEquals("<presence/>", sm._packetQueue[0])
def test_sendInitialized(self): """ Test send when the stream has been initialized. The data should be sent directly over the XML stream. """ factory = xmlstream.XmlStreamFactory(xmlstream.Authenticator()) sm = subprotocols.StreamManager(factory) xs = factory.buildProtocol(None) xs.transport = proto_helpers.StringTransport() xs.connectionMade() xs.dataReceived(b"<stream:stream xmlns='jabber:client' " b"xmlns:stream='http://etherx.jabber.org/streams' " b"from='example.com' id='12345'>") xs.dispatch(xs, "//event/stream/authd") sm.send("<presence/>") self.assertEquals(b"<presence/>", xs.transport.value())
def test_sendDisconnected(self): """ Test send after XML stream disconnection. The data should be cached until a new XML stream has been established and initialized. """ factory = xmlstream.XmlStreamFactory(xmlstream.Authenticator()) sm = subprotocols.StreamManager(factory) handler = DummyXMPPHandler() sm.addHandler(handler) xs = factory.buildProtocol(None) xs.connectionMade() xs.transport = proto_helpers.StringTransport() xs.connectionLost(None) sm.send("<presence/>") self.assertEquals(b"", xs.transport.value()) self.assertEquals("<presence/>", sm._packetQueue[0])
def setUp(self): factory = DummyFactory() self.streamManager = subprotocols.StreamManager(factory)