public void NoIfModifiedSinceOutputsResource()
        {
            StubRequestContext context = new StubRequestContext();
            context.IfModifiedSince = null;

            _instance.HandleRequest(context);

            AssertContentReturned(context);
        }
        public void IdenticleIfModifiedByReturns304()
        {
            StubRequestContext context = new StubRequestContext();
            context.IfModifiedSince = _lastModified;

            _instance.HandleRequest(context);

            AssertNoContentReturned(context);
        }
        public void MinimumLastModifiedValueIsHonored()
        {
            StubRequestContext context = new StubRequestContext();
            context.IfModifiedSince = _lastModified.AddDays(1);

            _instance.MinLastModified = _lastModified.AddDays(2);
            _instance.HandleRequest(context);

            AssertContentReturned(context);
        }
        public void OldIfModifiedSinceOutputsResource()
        {
            StubRequestContext context = new StubRequestContext();
            context.IfModifiedSince = _lastModified.AddDays(-1);

            _instance.HandleRequest(context);

            AssertContentReturned(context);
        }
        public void WhenVersionIsSpecifiedInRequest_ExpiresHeaderIsSetToOneYearFromNow()
        {
            var request = new StubRequestContext();
            request.QueryString["v"] = "123";
            _instance.HandleRequest(request);

            request.Expires.ShouldEqual(_now.AddYears(1));
            request.Cacheability.ShouldEqual(HttpCacheability.Public);
        }
 private static void AssertNoContentReturned(StubRequestContext context)
 {
     context.StatusCode.ShouldEqual(304);
     context.OutputStream.Length.ShouldEqual(0L);
 }
        public void WhenVersionIsNotSpecifiedInRequestAndInReleaseMode_ExpiresHeaderIsSetToSevenDaysFromNow()
        {
            var request = new StubRequestContext();
            _instance.Mode = ResourceMode.Release;
            _instance.HandleRequest(request);

            request.Expires.ShouldEqual(_now.AddDays(7));
            request.Cacheability.ShouldEqual(HttpCacheability.Public);
        }
        public void WhenVersionIsNotSpecifiedInRequestAndInDebugMode_ExpiresHeaderIsNotSet()
        {
            var request = new StubRequestContext();
            _instance.Mode = ResourceMode.Debug;
            _instance.HandleRequest(request);

            request.Expires.ShouldEqual(DateTime.MinValue);
            request.Cacheability.ShouldEqual(default(HttpCacheability));
        }
        public void WhenGZipEncodingIsAcceptedAndItIsEnabledAndItIsReleaseMode_ContentIsReturnedGZipped()
        {
            var request = new StubRequestContext();
            request.AcceptsGZip = true;
            _instance.EnableGZip = true;
            _instance.Mode = ResourceMode.Release;
            _instance.HandleRequest(request);

            request.Vary.ShouldEqual("Content-Encoding");
            request.ContentEncoding.ShouldEqual("gzip");
            request.OutputStream.Position = 0;
            var content = request.OutputStream.Decompress().ReadToEnd();
            content.ShouldEqual("Content1\r\nContent2\r\nContent3");
        }
        public void WhenDebugIsTrue_ConolidatatedResourceIsNotCached()
        {
            _instance.Mode = ResourceMode.Debug;
            var firstRequest = new StubRequestContext();
            _instance.HandleRequest(firstRequest);
            var secondRequest = new StubRequestContext();
            _instance.HandleRequest(secondRequest);

            AssertContentReturned(firstRequest);
            AssertContentReturned(secondRequest);

            AssertConsolidatedResourceWasNotCached();
        }
        public void RecentIfModifiedSinceReturns304()
        {
            StubRequestContext context = new StubRequestContext();
            context.IfModifiedSince = _lastModified.AddDays(1);

            _instance.HandleRequest(context);

            AssertNoContentReturned(context);
        }