public void SendRequestRaisesOnReceived()
        {
            var context = new Mock <HttpContextBase>();
            var request = new Mock <HttpRequestBase>();

            request.Setup(m => m.Path).Returns("/foo/send");
            var form = new NameValueCollection();

            form["data"] = "some data";
            request.Setup(m => m.Form).Returns(form);
            context.Setup(m => m.Request).Returns(request.Object);
            var  json        = new Mock <IJsonStringifier>();
            var  heartBeat   = new Mock <ITransportHeartBeat>();
            var  transport   = new LongPollingTransport(context.Object, json.Object, heartBeat.Object);
            var  connection  = new Mock <IConnection>();
            bool eventRaised = false;

            transport.Received += data =>
            {
                eventRaised = true;
                Assert.Equal(data, "some data");
            };

            transport.ProcessRequest(connection.Object);
            Assert.True(eventRaised);
        }
        public void ConnectRequestRaisesConnectEvent()
        {
            var context = new Mock <HttpContextBase>();
            var request = new Mock <HttpRequestBase>();

            request.Setup(m => m.Path).Returns("/foo/connect");
            var qs = new NameValueCollection();

            qs["connectionId"] = "1";
            request.Setup(m => m.QueryString).Returns(qs);
            context.Setup(m => m.Request).Returns(request.Object);
            var  json        = new Mock <IJsonSerializer>();
            var  heartBeat   = new Mock <ITransportHeartBeat>();
            var  transport   = new LongPollingTransport(context.Object, json.Object, heartBeat.Object);
            var  connection  = new Mock <IConnection>();
            bool eventRaised = false;

            transport.Connected += () =>
            {
                eventRaised = true;
            };

            transport.ProcessRequest(connection.Object);
            Assert.True(eventRaised);
        }
        public void ConnectRequestAddsConnectionToHeartBeat()
        {
            var context = new Mock <HttpContextBase>();
            var request = new Mock <HttpRequestBase>();

            request.Setup(m => m.Path).Returns("/foo/connect");
            request.Setup(m => m["clientId"]).Returns("1");
            context.Setup(m => m.Request).Returns(request.Object);
            var json       = new Mock <IJsonStringifier>();
            var heartBeat  = new Mock <ITransportHeartBeat>();
            var transport  = new LongPollingTransport(context.Object, json.Object, heartBeat.Object);
            var connection = new Mock <IConnection>();

            transport.ProcessRequest(connection.Object);
            heartBeat.Verify(m => m.AddConnection(transport), Times.Once());
        }
        public void ConnectRequestAddsConnectionToHeartBeat()
        {
            var context = new Mock <HttpContextBase>();
            var request = new Mock <HttpRequestBase>();

            request.Setup(m => m.Path).Returns("/foo/connect");
            var qs = new NameValueCollection();

            qs["connectionId"] = "1";
            request.Setup(m => m.QueryString).Returns(qs);
            context.Setup(m => m.Request).Returns(request.Object);
            var json       = new Mock <IJsonSerializer>();
            var heartBeat  = new Mock <ITransportHeartBeat>();
            var transport  = new LongPollingTransport(context.Object, json.Object, heartBeat.Object);
            var connection = new Mock <IConnection>();

            transport.ProcessRequest(connection.Object);
            heartBeat.Verify(m => m.AddConnection(transport), Times.Once());
        }
        public void ProcessRequestReturnsNullIfRequestWithMalformedMessageId()
        {
            var context  = new Mock <HttpContextBase>();
            var request  = new Mock <HttpRequestBase>();
            var response = new Mock <HttpResponseBase>();

            request.Setup(m => m.Path).Returns("/foo");
            request.Setup(m => m["clientId"]).Returns("1");
            request.Setup(m => m["messageId"]).Returns("fff");
            context.Setup(m => m.Response).Returns(response.Object);
            context.Setup(m => m.Request).Returns(request.Object);
            var json       = new Mock <IJsonStringifier>();
            var heartBeat  = new Mock <ITransportHeartBeat>();
            var transport  = new LongPollingTransport(context.Object, json.Object, heartBeat.Object);
            var connection = new Mock <IConnection>();

            var func = transport.ProcessRequest(connection.Object);

            Assert.Null(func);
        }
        public void ConnectRequestRaisesConnectEvent()
        {
            var context = new Mock <HttpContextBase>();
            var request = new Mock <HttpRequestBase>();

            request.Setup(m => m.Path).Returns("/foo/connect");
            request.Setup(m => m["clientId"]).Returns("1");
            context.Setup(m => m.Request).Returns(request.Object);
            var  json        = new Mock <IJsonStringifier>();
            var  heartBeat   = new Mock <ITransportHeartBeat>();
            var  transport   = new LongPollingTransport(context.Object, json.Object, heartBeat.Object);
            var  connection  = new Mock <IConnection>();
            bool eventRaised = false;

            transport.Connected += () =>
            {
                eventRaised = true;
            };

            transport.ProcessRequest(connection.Object);
            Assert.True(eventRaised);
        }
        public void ProcessRequestReturnsNullIfRequestWithMalformedMessageId()
        {
            var context  = new Mock <HttpContextBase>();
            var request  = new Mock <HttpRequestBase>();
            var response = new Mock <HttpResponseBase>();

            request.Setup(m => m.Path).Returns("/foo");
            var qs = new NameValueCollection();

            qs["connectionId"] = "1";
            qs["messageId"]    = "fff";
            request.Setup(m => m.QueryString).Returns(qs);
            context.Setup(m => m.Response).Returns(response.Object);
            context.Setup(m => m.Request).Returns(request.Object);
            var json       = new Mock <IJsonSerializer>();
            var heartBeat  = new Mock <ITransportHeartBeat>();
            var transport  = new LongPollingTransport(context.Object, json.Object, heartBeat.Object);
            var connection = new Mock <IConnection>();

            var func = transport.ProcessRequest(connection.Object);

            Assert.Null(func);
        }