public void GetPreconditionState_ShouldNotProcess_NotModified(string ifMatch, string ifNoneMatch) { // Arrange var actionContext = new ActionContext(); var httpContext = new DefaultHttpContext(); httpContext.Request.Method = HttpMethods.Get; var httpRequestHeaders = httpContext.Request.GetTypedHeaders(); var lastModified = DateTimeOffset.MinValue; lastModified = new DateTimeOffset(lastModified.Year, lastModified.Month, lastModified.Day, lastModified.Hour, lastModified.Minute, lastModified.Second, TimeSpan.FromSeconds(0)); var etag = new EntityTagHeaderValue("\"Etag\""); httpRequestHeaders.IfMatch = ifMatch == null ? null : new[] { new EntityTagHeaderValue(ifMatch), }; httpRequestHeaders.IfNoneMatch = ifNoneMatch == null ? null : new[] { new EntityTagHeaderValue(ifNoneMatch), }; httpRequestHeaders.IfModifiedSince = lastModified; actionContext.HttpContext = httpContext; // Act var state = FileResultExecutorBase.GetPreconditionState( httpRequestHeaders, lastModified, etag); // Assert Assert.Equal(FileResultExecutorBase.PreconditionState.NotModified, state); }
public void IfRangeValid_IgnoreRangeRequest(string ifRangeString, bool expected) { // Arrange var actionContext = new ActionContext(); var httpContext = new DefaultHttpContext(); httpContext.Request.Method = HttpMethods.Get; var httpRequestHeaders = httpContext.Request.GetTypedHeaders(); var lastModified = DateTimeOffset.MinValue; lastModified = new DateTimeOffset(lastModified.Year, lastModified.Month, lastModified.Day, lastModified.Hour, lastModified.Minute, lastModified.Second, TimeSpan.FromSeconds(0)); var etag = new EntityTagHeaderValue("\"Etag\""); httpRequestHeaders.IfRange = new RangeConditionHeaderValue(ifRangeString); httpRequestHeaders.IfModifiedSince = lastModified; actionContext.HttpContext = httpContext; // Act var ifRangeIsValid = FileResultExecutorBase.IfRangeValid( httpRequestHeaders, lastModified, etag); // Assert Assert.Equal(expected, ifRangeIsValid); }
public void GetPreconditionState_ShouldNotProcess_PreconditionFailed(string ifMatch, string ifNoneMatch) { // Arrange var actionContext = new ActionContext(); var httpContext = new DefaultHttpContext(); httpContext.Request.Method = HttpMethods.Delete; var httpRequestHeaders = httpContext.Request.GetTypedHeaders(); var lastModified = DateTimeOffset.MinValue.AddDays(1); var etag = new EntityTagHeaderValue("\"Etag\""); httpRequestHeaders.IfMatch = ifMatch == null ? null : new[] { new EntityTagHeaderValue(ifMatch), }; httpRequestHeaders.IfNoneMatch = ifNoneMatch == null ? null : new[] { new EntityTagHeaderValue(ifNoneMatch), }; httpRequestHeaders.IfUnmodifiedSince = DateTimeOffset.MinValue; httpRequestHeaders.IfModifiedSince = DateTimeOffset.MinValue.AddDays(2); actionContext.HttpContext = httpContext; // Act var state = FileResultExecutorBase.GetPreconditionState( httpRequestHeaders, lastModified, etag); // Assert Assert.Equal(FileResultExecutorBase.PreconditionState.PreconditionFailed, state); }