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