public void TestControllerLevel()
        {
            var configuration = new HttpConfiguration(new HttpRouteCollection("/"));

            configuration.Routes.MapHttpRoute("main", "api/{controller}/{id}");
            var request   = new HttpRequestMessage(HttpMethod.Get, new Uri("http://aliostad/api/CachePolicy/1"));
            var routeData = configuration.Routes.GetRouteData(request);

            request.Properties.Add(HttpPropertyKeys.HttpRouteDataKey, (object)routeData);


            var attributeBasedCachePolicy = new AttributeBasedCacheControlPolicy(new CacheControlHeaderValue());
            var cchv = attributeBasedCachePolicy.GetCacheControl(request, configuration);

            Assert.AreEqual(TimeSpan.FromSeconds(110), cchv.MaxAge);
            Assert.AreEqual(false, cchv.Private, "Private");
        }
        public void TestRefreshPolicyFor404()
        {
            var configuration = new HttpConfiguration(new HttpRouteCollection("/"));

            configuration.Services.Replace(typeof(IHttpControllerSelector), new NotFoundControllerSelector());
            configuration.Routes.MapHttpRoute("main", "api/{controller}/{id}");
            var request   = new HttpRequestMessage(HttpMethod.Get, new Uri("http://aliostad/api/CachePolicyAction/1"));
            var routeData = configuration.Routes.GetRouteData(request);

            request.Properties.Add(HttpPropertyKeys.HttpRouteDataKey, (object)routeData);
            var headerValue = new CacheControlHeaderValue();
            var attributeBasedCachePolicy = new AttributeBasedCacheControlPolicy(headerValue);

            // act
            var cchv = attributeBasedCachePolicy.GetCacheControl(request, configuration);

            // assert
            Assert.AreEqual(headerValue, cchv);
        }
        public void TestDefaultControllerOrActionLevelPolicy()
        {
            // arrange
            var configuration = new HttpConfiguration(new HttpRouteCollection("/"));

            configuration.Routes.MapHttpRoute("main", "api/{controller}/{id}");
            var request   = new HttpRequestMessage(HttpMethod.Get, new Uri("http://aliostad/api/NoCachePolicy/1"));
            var routeData = configuration.Routes.GetRouteData(request);

            request.Properties.Add(HttpPropertyKeys.HttpRouteDataKey, (object)routeData);
            var attributeBasedCachePolicy = new AttributeBasedCacheControlPolicy(new CacheControlHeaderValue()
            {
                NoStore = true, NoCache = true
            });

            // action
            var cchv = attributeBasedCachePolicy.GetCacheControl(request, configuration);

            // assert
            Assert.AreEqual(true, cchv.NoCache, "NoCache");
            Assert.AreEqual(true, cchv.NoStore, "NoStore");
        }