From 482987bd23f083af54d1935cc1f7b6239a910743 Mon Sep 17 00:00:00 2001 From: Pavel Krymets Date: Wed, 13 Jul 2016 10:11:41 -0700 Subject: [PATCH] Add tests for If-Unmodified-Since header --- .../CacheHeaderTests.cs | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/test/Microsoft.AspNetCore.StaticFiles.Tests/CacheHeaderTests.cs b/test/Microsoft.AspNetCore.StaticFiles.Tests/CacheHeaderTests.cs index dc8d643330..bb83365fcb 100644 --- a/test/Microsoft.AspNetCore.StaticFiles.Tests/CacheHeaderTests.cs +++ b/test/Microsoft.AspNetCore.StaticFiles.Tests/CacheHeaderTests.cs @@ -365,6 +365,53 @@ namespace Microsoft.AspNetCore.StaticFiles Assert.Equal(HttpStatusCode.OK, res2.StatusCode); } + [Theory] + [MemberData(nameof(SupportedMethods))] + public async Task InvalidIfUnmodifiedSinceDateFormatGivesNormalGet(HttpMethod method) + { + TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer()); + + HttpResponseMessage res = await server + .CreateRequest("/SubFolder/extra.xml") + .AddHeader("If-Unmodified-Since", "bad-date") + .SendAsync(method.Method); + + Assert.Equal(HttpStatusCode.OK, res.StatusCode); + } + + [Theory] + [MemberData(nameof(SupportedMethods))] + public async Task FutureIfUnmodifiedSinceDateFormatGivesNormalGet(HttpMethod method) + { + TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer()); + + HttpResponseMessage res = await server + .CreateRequest("/SubFolder/extra.xml") + .And(req => req.Headers.IfUnmodifiedSince = DateTimeOffset.Now.AddYears(1)) + .SendAsync(method.Method); + + Assert.Equal(HttpStatusCode.OK, res.StatusCode); + } + + [Theory] + [MemberData(nameof(SupportedMethods))] + public async Task IfUnmodifiedSinceDateLessThanLastModifiedShouldReturn412(HttpMethod method) + { + TestServer server = StaticFilesTestServer.Create(app => app.UseFileServer()); + + HttpResponseMessage res1 = await server + .CreateRequest("/SubFolder/extra.xml") + .SendAsync(method.Method); + + HttpResponseMessage res2 = await server + .CreateRequest("/SubFolder/extra.xml") + .And(req => req.Headers.IfUnmodifiedSince = DateTimeOffset.MinValue) + .SendAsync(method.Method); + + Assert.Equal(HttpStatusCode.PreconditionFailed, res2.StatusCode); + } + + public static IEnumerable SupportedMethods => new[] { new [] { HttpMethod.Get },