Ejemplo n.º 1
0
        public void CouchCache_EmulateEmpty_AddsToCacheCorrectly()
        {
            var _factory = new Mock<IHttpTransportFactory>(MockBehavior.Strict);
            var _transport = new Mock<IHttpTransport>(MockBehavior.Strict);
            var _cache = new Mock<ICouchCache>(MockBehavior.Strict);
            var _response = new HttpResponse();

            _response.ETag = "1234";
            _response.StatusCode = HttpStatusCode.OK;
            _response.Data = "I am data";

            _factory.Setup(x => x.Create(new UriBuilder("http://localhost:5984/").Uri)).Returns(_transport.Object);

            _cache.Setup(x => x["/integrationtest/d1d2bac2b4e65baf10be20bf08000189"]).Returns(() => null);
            _cache.Setup(x => x.Add(It.IsAny<CouchCacheEntry>()));

            _transport.Setup(x => x.Send("/integrationtest/d1d2bac2b4e65baf10be20bf08000189", HttpVerb.Get, null, "application/json")).Returns(_response);

            var conn = new CouchConnection("http://localhost:5984/", _factory.Object);
            conn.Cache = _cache.Object;

            var resp = conn.Get("/integrationtest/d1d2bac2b4e65baf10be20bf08000189");

            Assert.AreEqual("I am data", resp.Data);
        }
Ejemplo n.º 2
0
        public void CouchCache_EmulateCacheHit_ReturnsCachedData()
        {
            var _factory = new Mock<IHttpTransportFactory>(MockBehavior.Strict);
            var _transport = new Mock<IHttpTransport>(MockBehavior.Strict);
            var _cache = new Mock<ICouchCache>(MockBehavior.Strict);
            var _response = new HttpResponse();

            _response.ETag = "1234";
            _response.StatusCode = HttpStatusCode.NotModified;
            _response.Data = "There should be no data (as its a 304)";

            _factory.Setup(x => x.Create(new UriBuilder("http://localhost:5984/").Uri)).Returns(_transport.Object);

            _cache.Setup(x => x["/integrationtest/d1d2bac2b4e65baf10be20bf08000189"])
                .Returns(new CouchCacheEntry("/integrationtest/d1d2bac2b4e65baf10be20bf08000189", "1234", "I am data"));

            _transport.Setup(x => x.CacheMatch("1234"));
            _transport.Setup(x => x.Send("/integrationtest/d1d2bac2b4e65baf10be20bf08000189", HttpVerb.Get, null, "application/json")).Returns(_response);

            var conn = new CouchConnection("http://localhost:5984/", _factory.Object);
            conn.Cache = _cache.Object;

            var resp = conn.Get("/integrationtest/d1d2bac2b4e65baf10be20bf08000189");

            Assert.AreEqual("I am data", resp.Data);
        }
Ejemplo n.º 3
0
        public IHttpResponse Send(string path, HttpVerb method, string data, string encoding)
        {
            ServicePointManager.Expect100Continue = false;

            HttpResponseMessage message;

            switch (method)
            {
                case (HttpVerb.Get):
                    {
                        message = Client.Get(path);
                        break;
                    }

                case (HttpVerb.Post):
                    {
                        message = Client.Post(path, encoding, HttpContent.Create(data));
                        break;
                    }

                case (HttpVerb.Put):
                    {
                        message = Client.Put(path, encoding, HttpContent.Create(data));
                        break;
                    }

                case (HttpVerb.Delete):
                    {
                        message = Client.Delete(path);
                        break;
                    }

                case (HttpVerb.Copy):
                    {
                        Client.DefaultHeaders.Add("Destination", data);
                        message = Client.Send(new HttpRequestMessage("COPY", path));
                        break;
                    }

                case (HttpVerb.Head):
                    {
                        message = Client.Head(path);
                        break;
                    }

                default:
                    {
                        throw new NotImplementedException("Unknown/Unsupported HTTP verb.");
                    }
            }

            var response = new HttpResponse();

            if (message.Content != null)
            {
                response.Data = message.Content.ReadAsString();
                response.ContentType = message.Content.ContentType ?? string.Empty;
            }

            response.StatusCode = message.StatusCode;

            if (message.Headers.ETag != null)
            {
                response.ETag = message.Headers.ETag.Tag;
            }

            return response;
        }