Dispose FileWatcher in tests

This commit is contained in:
Brennan 2015-11-30 14:32:04 -08:00
parent dcb520f567
commit a7a6a90f1d
3 changed files with 157 additions and 118 deletions

View File

@ -24,7 +24,7 @@ namespace Microsoft.AspNet.StaticFiles
StaticFilesTestServer.Create(app => app.UseDefaultFiles(new DefaultFilesOptions() { FileProvider = null })); StaticFilesTestServer.Create(app => app.UseDefaultFiles(new DefaultFilesOptions() { FileProvider = null }));
// PathString(null) is OK. // PathString(null) is OK.
TestServer server = StaticFilesTestServer.Create(app => app.UseDefaultFiles((string)null)); var server = StaticFilesTestServer.Create(app => app.UseDefaultFiles((string)null));
var response = await server.CreateClient().GetAsync("/"); var response = await server.CreateClient().GetAsync("/");
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
} }
@ -52,12 +52,14 @@ namespace Microsoft.AspNet.StaticFiles
public async Task NoMatch_PassesThrough(string baseUrl, string baseDir, string requestUrl) public async Task NoMatch_PassesThrough(string baseUrl, string baseDir, string requestUrl)
{ {
TestServer server = StaticFilesTestServer.Create(app => using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)))
{
var server = StaticFilesTestServer.Create(app =>
{ {
app.UseDefaultFiles(new DefaultFilesOptions() app.UseDefaultFiles(new DefaultFilesOptions()
{ {
RequestPath = new PathString(baseUrl), RequestPath = new PathString(baseUrl),
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) FileProvider = fileProvider
}); });
app.Run(context => context.Response.WriteAsync(context.Request.Path.Value)); app.Run(context => context.Response.WriteAsync(context.Request.Path.Value));
}); });
@ -66,6 +68,7 @@ namespace Microsoft.AspNet.StaticFiles
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.Equal(requestUrl, await response.Content.ReadAsStringAsync()); // Should not be modified Assert.Equal(requestUrl, await response.Content.ReadAsStringAsync()); // Should not be modified
} }
}
[Theory] [Theory]
[InlineData("", @".", "/SubFolder/")] [InlineData("", @".", "/SubFolder/")]
@ -88,12 +91,14 @@ namespace Microsoft.AspNet.StaticFiles
public async Task FoundDirectoryWithDefaultFile_PathModified(string baseUrl, string baseDir, string requestUrl) public async Task FoundDirectoryWithDefaultFile_PathModified(string baseUrl, string baseDir, string requestUrl)
{ {
TestServer server = StaticFilesTestServer.Create(app => using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)))
{
var server = StaticFilesTestServer.Create(app =>
{ {
app.UseDefaultFiles(new DefaultFilesOptions() app.UseDefaultFiles(new DefaultFilesOptions()
{ {
RequestPath = new PathString(baseUrl), RequestPath = new PathString(baseUrl),
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) FileProvider = fileProvider
}); });
app.Run(context => context.Response.WriteAsync(context.Request.Path.Value)); app.Run(context => context.Response.WriteAsync(context.Request.Path.Value));
}); });
@ -102,6 +107,7 @@ namespace Microsoft.AspNet.StaticFiles
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.Equal(requestUrl + "default.html", await response.Content.ReadAsStringAsync()); // Should be modified Assert.Equal(requestUrl + "default.html", await response.Content.ReadAsStringAsync()); // Should be modified
} }
}
[Theory] [Theory]
[InlineData("", @".", "/SubFolder", "")] [InlineData("", @".", "/SubFolder", "")]
@ -124,17 +130,20 @@ namespace Microsoft.AspNet.StaticFiles
public async Task NearMatch_RedirectAddSlash(string baseUrl, string baseDir, string requestUrl, string queryString) public async Task NearMatch_RedirectAddSlash(string baseUrl, string baseDir, string requestUrl, string queryString)
{ {
TestServer server = StaticFilesTestServer.Create(app => app.UseDefaultFiles(new DefaultFilesOptions() using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)))
{
var server = StaticFilesTestServer.Create(app => app.UseDefaultFiles(new DefaultFilesOptions()
{ {
RequestPath = new PathString(baseUrl), RequestPath = new PathString(baseUrl),
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) FileProvider = fileProvider
})); }));
HttpResponseMessage response = await server.CreateRequest(requestUrl + queryString).GetAsync(); var response = await server.CreateRequest(requestUrl + queryString).GetAsync();
Assert.Equal(HttpStatusCode.Moved, response.StatusCode); Assert.Equal(HttpStatusCode.Moved, response.StatusCode);
Assert.Equal(requestUrl + "/" + queryString, response.Headers.GetValues("Location").FirstOrDefault()); Assert.Equal(requestUrl + "/" + queryString, response.Headers.GetValues("Location").FirstOrDefault());
Assert.Equal(0, (await response.Content.ReadAsByteArrayAsync()).Length); Assert.Equal(0, (await response.Content.ReadAsByteArrayAsync()).Length);
} }
}
[Theory] [Theory]
[InlineData("/SubFolder", @"./", "/SubFolder/")] [InlineData("/SubFolder", @"./", "/SubFolder/")]
@ -159,14 +168,17 @@ namespace Microsoft.AspNet.StaticFiles
public async Task PostDirectory_PassesThrough(string baseUrl, string baseDir, string requestUrl) public async Task PostDirectory_PassesThrough(string baseUrl, string baseDir, string requestUrl)
{ {
TestServer server = StaticFilesTestServer.Create(app => app.UseDefaultFiles(new DefaultFilesOptions() using (var fileProvder = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)))
{
var server = StaticFilesTestServer.Create(app => app.UseDefaultFiles(new DefaultFilesOptions()
{ {
RequestPath = new PathString(baseUrl), RequestPath = new PathString(baseUrl),
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) FileProvider = fileProvder
})); }));
HttpResponseMessage response = await server.CreateRequest(requestUrl).GetAsync(); var response = await server.CreateRequest(requestUrl).GetAsync();
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); // Passed through Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); // Passed through
} }
} }
}
} }

View File

@ -32,7 +32,7 @@ namespace Microsoft.AspNet.StaticFiles
services => services.AddDirectoryBrowser()); services => services.AddDirectoryBrowser());
// PathString(null) is OK. // PathString(null) is OK.
TestServer server = StaticFilesTestServer.Create( var server = StaticFilesTestServer.Create(
app => app.UseDirectoryBrowser((string)null), app => app.UseDirectoryBrowser((string)null),
services => services.AddDirectoryBrowser()); services => services.AddDirectoryBrowser());
@ -63,16 +63,19 @@ namespace Microsoft.AspNet.StaticFiles
public async Task NoMatch_PassesThrough(string baseUrl, string baseDir, string requestUrl) public async Task NoMatch_PassesThrough(string baseUrl, string baseDir, string requestUrl)
{ {
TestServer server = StaticFilesTestServer.Create( using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)))
{
var server = StaticFilesTestServer.Create(
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions() app => app.UseDirectoryBrowser(new DirectoryBrowserOptions()
{ {
RequestPath = new PathString(baseUrl), RequestPath = new PathString(baseUrl),
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) FileProvider = fileProvider
}), }),
services => services.AddDirectoryBrowser()); services => services.AddDirectoryBrowser());
HttpResponseMessage response = await server.CreateRequest(requestUrl).GetAsync(); var response = await server.CreateRequest(requestUrl).GetAsync();
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
} }
}
[Theory] [Theory]
[InlineData("", @".", "/")] [InlineData("", @".", "/")]
@ -97,20 +100,23 @@ namespace Microsoft.AspNet.StaticFiles
public async Task FoundDirectory_Served(string baseUrl, string baseDir, string requestUrl) public async Task FoundDirectory_Served(string baseUrl, string baseDir, string requestUrl)
{ {
TestServer server = StaticFilesTestServer.Create( using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)))
{
var server = StaticFilesTestServer.Create(
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions() app => app.UseDirectoryBrowser(new DirectoryBrowserOptions()
{ {
RequestPath = new PathString(baseUrl), RequestPath = new PathString(baseUrl),
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) FileProvider = fileProvider
}), }),
services => services.AddDirectoryBrowser()); services => services.AddDirectoryBrowser());
HttpResponseMessage response = await server.CreateRequest(requestUrl).GetAsync(); var response = await server.CreateRequest(requestUrl).GetAsync();
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.Equal("text/html; charset=utf-8", response.Content.Headers.ContentType.ToString()); Assert.Equal("text/html; charset=utf-8", response.Content.Headers.ContentType.ToString());
Assert.True(response.Content.Headers.ContentLength > 0); Assert.True(response.Content.Headers.ContentLength > 0);
Assert.Equal(response.Content.Headers.ContentLength, (await response.Content.ReadAsByteArrayAsync()).Length); Assert.Equal(response.Content.Headers.ContentLength, (await response.Content.ReadAsByteArrayAsync()).Length);
} }
}
[Theory] [Theory]
[InlineData("", @".", "/SubFolder", "")] [InlineData("", @".", "/SubFolder", "")]
@ -136,20 +142,23 @@ namespace Microsoft.AspNet.StaticFiles
public async Task NearMatch_RedirectAddSlash(string baseUrl, string baseDir, string requestUrl, string queryString) public async Task NearMatch_RedirectAddSlash(string baseUrl, string baseDir, string requestUrl, string queryString)
{ {
TestServer server = StaticFilesTestServer.Create( using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)))
{
var server = StaticFilesTestServer.Create(
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions() app => app.UseDirectoryBrowser(new DirectoryBrowserOptions()
{ {
RequestPath = new PathString(baseUrl), RequestPath = new PathString(baseUrl),
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) FileProvider = fileProvider
}), }),
services => services.AddDirectoryBrowser()); services => services.AddDirectoryBrowser());
HttpResponseMessage response = await server.CreateRequest(requestUrl + queryString).GetAsync(); var response = await server.CreateRequest(requestUrl + queryString).GetAsync();
Assert.Equal(HttpStatusCode.Moved, response.StatusCode); Assert.Equal(HttpStatusCode.Moved, response.StatusCode);
Assert.Equal(requestUrl + "/" + queryString, response.Headers.GetValues("Location").FirstOrDefault()); Assert.Equal(requestUrl + "/" + queryString, response.Headers.GetValues("Location").FirstOrDefault());
Assert.Equal(0, (await response.Content.ReadAsByteArrayAsync()).Length); Assert.Equal(0, (await response.Content.ReadAsByteArrayAsync()).Length);
} }
}
[Theory] [Theory]
[InlineData("", @".", "/")] [InlineData("", @".", "/")]
@ -172,17 +181,20 @@ namespace Microsoft.AspNet.StaticFiles
public async Task PostDirectory_PassesThrough(string baseUrl, string baseDir, string requestUrl) public async Task PostDirectory_PassesThrough(string baseUrl, string baseDir, string requestUrl)
{ {
TestServer server = StaticFilesTestServer.Create( using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)))
{
var server = StaticFilesTestServer.Create(
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions() app => app.UseDirectoryBrowser(new DirectoryBrowserOptions()
{ {
RequestPath = new PathString(baseUrl), RequestPath = new PathString(baseUrl),
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) FileProvider = fileProvider
}), }),
services => services.AddDirectoryBrowser()); services => services.AddDirectoryBrowser());
HttpResponseMessage response = await server.CreateRequest(requestUrl).PostAsync(); var response = await server.CreateRequest(requestUrl).PostAsync();
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
} }
}
[Theory] [Theory]
[InlineData("", @".", "/")] [InlineData("", @".", "/")]
@ -205,15 +217,17 @@ namespace Microsoft.AspNet.StaticFiles
public async Task HeadDirectory_HeadersButNotBodyServed(string baseUrl, string baseDir, string requestUrl) public async Task HeadDirectory_HeadersButNotBodyServed(string baseUrl, string baseDir, string requestUrl)
{ {
TestServer server = StaticFilesTestServer.Create( using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)))
{
var server = StaticFilesTestServer.Create(
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions() app => app.UseDirectoryBrowser(new DirectoryBrowserOptions()
{ {
RequestPath = new PathString(baseUrl), RequestPath = new PathString(baseUrl),
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) FileProvider = fileProvider
}), }),
services => services.AddDirectoryBrowser()); services => services.AddDirectoryBrowser());
HttpResponseMessage response = await server.CreateRequest(requestUrl).SendAsync("HEAD"); var response = await server.CreateRequest(requestUrl).SendAsync("HEAD");
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.Equal("text/html; charset=utf-8", response.Content.Headers.ContentType.ToString()); Assert.Equal("text/html; charset=utf-8", response.Content.Headers.ContentType.ToString());
@ -221,4 +235,5 @@ namespace Microsoft.AspNet.StaticFiles
Assert.Equal(0, (await response.Content.ReadAsByteArrayAsync()).Length); Assert.Equal(0, (await response.Content.ReadAsByteArrayAsync()).Length);
} }
} }
}
} }

View File

@ -26,7 +26,7 @@ namespace Microsoft.AspNet.StaticFiles
StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions() { FileProvider = null })); StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions() { FileProvider = null }));
// PathString(null) is OK. // PathString(null) is OK.
TestServer server = StaticFilesTestServer.Create(app => app.UseStaticFiles((string)null)); var server = StaticFilesTestServer.Create(app => app.UseStaticFiles((string)null));
var response = await server.CreateClient().GetAsync("/"); var response = await server.CreateClient().GetAsync("/");
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
} }
@ -38,14 +38,17 @@ namespace Microsoft.AspNet.StaticFiles
[InlineData("", @"./", "/xunit.xml")] [InlineData("", @"./", "/xunit.xml")]
public async Task NoMatch_PassesThrough(string baseUrl, string baseDir, string requestUrl) public async Task NoMatch_PassesThrough(string baseUrl, string baseDir, string requestUrl)
{ {
TestServer server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions() using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)))
{
var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions()
{ {
RequestPath = new PathString(baseUrl), RequestPath = new PathString(baseUrl),
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) FileProvider = fileProvider
})); }));
HttpResponseMessage response = await server.CreateRequest(requestUrl).GetAsync(); var response = await server.CreateRequest(requestUrl).GetAsync();
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
} }
}
[Theory] [Theory]
[InlineData("", @".", "/TestDocument.txt")] [InlineData("", @".", "/TestDocument.txt")]
@ -72,18 +75,21 @@ namespace Microsoft.AspNet.StaticFiles
public async Task FoundFile_Served(string baseUrl, string baseDir, string requestUrl) public async Task FoundFile_Served(string baseUrl, string baseDir, string requestUrl)
{ {
TestServer server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions() using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)))
{
var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions()
{ {
RequestPath = new PathString(baseUrl), RequestPath = new PathString(baseUrl),
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) FileProvider = fileProvider
})); }));
HttpResponseMessage response = await server.CreateRequest(requestUrl).GetAsync(); var response = await server.CreateRequest(requestUrl).GetAsync();
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.Equal("text/plain", response.Content.Headers.ContentType.ToString()); Assert.Equal("text/plain", response.Content.Headers.ContentType.ToString());
Assert.True(response.Content.Headers.ContentLength > 0); Assert.True(response.Content.Headers.ContentLength > 0);
Assert.Equal(response.Content.Headers.ContentLength, (await response.Content.ReadAsByteArrayAsync()).Length); Assert.Equal(response.Content.Headers.ContentLength, (await response.Content.ReadAsByteArrayAsync()).Length);
} }
}
[Theory] [Theory]
[InlineData("", @".", "/TestDocument.txt")] [InlineData("", @".", "/TestDocument.txt")]
@ -93,14 +99,17 @@ namespace Microsoft.AspNet.StaticFiles
[InlineData("/somedir", @"SubFolder", "/somedir/ranges.txt")] [InlineData("/somedir", @"SubFolder", "/somedir/ranges.txt")]
public async Task PostFile_PassesThrough(string baseUrl, string baseDir, string requestUrl) public async Task PostFile_PassesThrough(string baseUrl, string baseDir, string requestUrl)
{ {
TestServer server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions() using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)))
{
var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions()
{ {
RequestPath = new PathString(baseUrl), RequestPath = new PathString(baseUrl),
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) FileProvider = fileProvider
})); }));
HttpResponseMessage response = await server.CreateRequest(requestUrl).PostAsync(); var response = await server.CreateRequest(requestUrl).PostAsync();
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
} }
}
[Theory] [Theory]
[InlineData("", @".", "/TestDocument.txt")] [InlineData("", @".", "/TestDocument.txt")]
@ -110,12 +119,14 @@ namespace Microsoft.AspNet.StaticFiles
[InlineData("/somedir", @"SubFolder", "/somedir/ranges.txt")] [InlineData("/somedir", @"SubFolder", "/somedir/ranges.txt")]
public async Task HeadFile_HeadersButNotBodyServed(string baseUrl, string baseDir, string requestUrl) public async Task HeadFile_HeadersButNotBodyServed(string baseUrl, string baseDir, string requestUrl)
{ {
TestServer server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions() using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)))
{
var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions()
{ {
RequestPath = new PathString(baseUrl), RequestPath = new PathString(baseUrl),
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) FileProvider = fileProvider
})); }));
HttpResponseMessage response = await server.CreateRequest(requestUrl).SendAsync("HEAD"); var response = await server.CreateRequest(requestUrl).SendAsync("HEAD");
Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.Equal("text/plain", response.Content.Headers.ContentType.ToString()); Assert.Equal("text/plain", response.Content.Headers.ContentType.ToString());
@ -123,4 +134,5 @@ namespace Microsoft.AspNet.StaticFiles
Assert.Equal(0, (await response.Content.ReadAsByteArrayAsync()).Length); Assert.Equal(0, (await response.Content.ReadAsByteArrayAsync()).Length);
} }
} }
}
} }