Beispiel #1
0
    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)
Beispiel #2
0
    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()
Beispiel #3
0
 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'])
Beispiel #4
0
    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])
Beispiel #5
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())
Beispiel #6
0
    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])
Beispiel #7
0
 def setUp(self):
     factory = DummyFactory()
     self.streamManager = subprotocols.StreamManager(factory)