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 }));
// 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("/");
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)
{
TestServer server = StaticFilesTestServer.Create(app =>
using (var fileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)))
{
var server = StaticFilesTestServer.Create(app =>
{
app.UseDefaultFiles(new DefaultFilesOptions()
{
RequestPath = new PathString(baseUrl),
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir))
FileProvider = fileProvider
});
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(requestUrl, await response.Content.ReadAsStringAsync()); // Should not be modified
}
}
[Theory]
[InlineData("", @".", "/SubFolder/")]
@ -88,12 +91,14 @@ namespace Microsoft.AspNet.StaticFiles
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()
{
RequestPath = new PathString(baseUrl),
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir))
FileProvider = fileProvider
});
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(requestUrl + "default.html", await response.Content.ReadAsStringAsync()); // Should be modified
}
}
[Theory]
[InlineData("", @".", "/SubFolder", "")]
@ -124,17 +130,20 @@ namespace Microsoft.AspNet.StaticFiles
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),
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(requestUrl + "/" + queryString, response.Headers.GetValues("Location").FirstOrDefault());
Assert.Equal(0, (await response.Content.ReadAsByteArrayAsync()).Length);
}
}
[Theory]
[InlineData("/SubFolder", @"./", "/SubFolder/")]
@ -159,14 +168,17 @@ namespace Microsoft.AspNet.StaticFiles
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),
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
}
}
}
}

View File

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

View File

@ -26,7 +26,7 @@ namespace Microsoft.AspNet.StaticFiles
StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions() { FileProvider = null }));
// 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("/");
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
}
@ -38,14 +38,17 @@ namespace Microsoft.AspNet.StaticFiles
[InlineData("", @"./", "/xunit.xml")]
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),
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);
}
}
[Theory]
[InlineData("", @".", "/TestDocument.txt")]
@ -72,18 +75,21 @@ namespace Microsoft.AspNet.StaticFiles
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),
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("text/plain", response.Content.Headers.ContentType.ToString());
Assert.True(response.Content.Headers.ContentLength > 0);
Assert.Equal(response.Content.Headers.ContentLength, (await response.Content.ReadAsByteArrayAsync()).Length);
}
}
[Theory]
[InlineData("", @".", "/TestDocument.txt")]
@ -93,14 +99,17 @@ namespace Microsoft.AspNet.StaticFiles
[InlineData("/somedir", @"SubFolder", "/somedir/ranges.txt")]
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),
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);
}
}
[Theory]
[InlineData("", @".", "/TestDocument.txt")]
@ -110,12 +119,14 @@ namespace Microsoft.AspNet.StaticFiles
[InlineData("/somedir", @"SubFolder", "/somedir/ranges.txt")]
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),
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("text/plain", response.Content.Headers.ContentType.ToString());
@ -124,3 +135,4 @@ namespace Microsoft.AspNet.StaticFiles
}
}
}
}