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,19 +52,22 @@ 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)))
{ {
app.UseDefaultFiles(new DefaultFilesOptions() var server = StaticFilesTestServer.Create(app =>
{ {
RequestPath = new PathString(baseUrl), app.UseDefaultFiles(new DefaultFilesOptions()
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) {
RequestPath = new PathString(baseUrl),
FileProvider = fileProvider
});
app.Run(context => context.Response.WriteAsync(context.Request.Path.Value));
}); });
app.Run(context => context.Response.WriteAsync(context.Request.Path.Value));
});
var response = await server.CreateClient().GetAsync(requestUrl); var response = await server.CreateClient().GetAsync(requestUrl);
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]
@ -88,19 +91,22 @@ 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)))
{ {
app.UseDefaultFiles(new DefaultFilesOptions() var server = StaticFilesTestServer.Create(app =>
{ {
RequestPath = new PathString(baseUrl), app.UseDefaultFiles(new DefaultFilesOptions()
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) {
RequestPath = new PathString(baseUrl),
FileProvider = fileProvider
});
app.Run(context => context.Response.WriteAsync(context.Request.Path.Value));
}); });
app.Run(context => context.Response.WriteAsync(context.Request.Path.Value));
});
var response = await server.CreateClient().GetAsync(requestUrl); var response = await server.CreateClient().GetAsync(requestUrl);
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]
@ -124,16 +130,19 @@ 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)))
{ {
RequestPath = new PathString(baseUrl), var server = StaticFilesTestServer.Create(app => app.UseDefaultFiles(new DefaultFilesOptions()
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) {
})); RequestPath = new PathString(baseUrl),
HttpResponseMessage response = await server.CreateRequest(requestUrl + queryString).GetAsync(); FileProvider = fileProvider
}));
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]
@ -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)))
{ {
RequestPath = new PathString(baseUrl), var server = StaticFilesTestServer.Create(app => app.UseDefaultFiles(new DefaultFilesOptions()
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) {
})); RequestPath = new PathString(baseUrl),
HttpResponseMessage response = await server.CreateRequest(requestUrl).GetAsync(); FileProvider = fileProvder
}));
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,15 +63,18 @@ 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)))
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions() {
{ var server = StaticFilesTestServer.Create(
RequestPath = new PathString(baseUrl), app => app.UseDirectoryBrowser(new DirectoryBrowserOptions()
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) {
}), RequestPath = new PathString(baseUrl),
services => services.AddDirectoryBrowser()); FileProvider = fileProvider
HttpResponseMessage response = await server.CreateRequest(requestUrl).GetAsync(); }),
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); services => services.AddDirectoryBrowser());
var response = await server.CreateRequest(requestUrl).GetAsync();
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
}
} }
[Theory] [Theory]
@ -97,19 +100,22 @@ 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)))
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions() {
{ var server = StaticFilesTestServer.Create(
RequestPath = new PathString(baseUrl), app => app.UseDirectoryBrowser(new DirectoryBrowserOptions()
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) {
}), RequestPath = new PathString(baseUrl),
services => services.AddDirectoryBrowser()); FileProvider = fileProvider
HttpResponseMessage response = await server.CreateRequest(requestUrl).GetAsync(); }),
services => services.AddDirectoryBrowser());
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]
@ -136,19 +142,22 @@ 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)))
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions() {
{ var server = StaticFilesTestServer.Create(
RequestPath = new PathString(baseUrl), app => app.UseDirectoryBrowser(new DirectoryBrowserOptions()
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) {
}), RequestPath = new PathString(baseUrl),
services => services.AddDirectoryBrowser()); 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(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]
@ -172,16 +181,19 @@ 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)))
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions() {
{ var server = StaticFilesTestServer.Create(
RequestPath = new PathString(baseUrl), app => app.UseDirectoryBrowser(new DirectoryBrowserOptions()
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) {
}), RequestPath = new PathString(baseUrl),
services => services.AddDirectoryBrowser()); 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); Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
}
} }
[Theory] [Theory]
@ -205,20 +217,23 @@ 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)))
app => app.UseDirectoryBrowser(new DirectoryBrowserOptions() {
{ var server = StaticFilesTestServer.Create(
RequestPath = new PathString(baseUrl), app => app.UseDirectoryBrowser(new DirectoryBrowserOptions()
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) {
}), RequestPath = new PathString(baseUrl),
services => services.AddDirectoryBrowser()); 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(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(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,13 +38,16 @@ 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)))
{ {
RequestPath = new PathString(baseUrl), var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions()
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) {
})); RequestPath = new PathString(baseUrl),
HttpResponseMessage response = await server.CreateRequest(requestUrl).GetAsync(); FileProvider = fileProvider
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); }));
var response = await server.CreateRequest(requestUrl).GetAsync();
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
}
} }
[Theory] [Theory]
@ -72,17 +75,20 @@ 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)))
{ {
RequestPath = new PathString(baseUrl), var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions()
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) {
})); RequestPath = new PathString(baseUrl),
HttpResponseMessage response = await server.CreateRequest(requestUrl).GetAsync(); FileProvider = fileProvider
}));
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]
@ -93,13 +99,16 @@ 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)))
{ {
RequestPath = new PathString(baseUrl), var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions()
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) {
})); RequestPath = new PathString(baseUrl),
HttpResponseMessage response = await server.CreateRequest(requestUrl).PostAsync(); FileProvider = fileProvider
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode); }));
var response = await server.CreateRequest(requestUrl).PostAsync();
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
}
} }
[Theory] [Theory]
@ -110,17 +119,20 @@ 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)))
{ {
RequestPath = new PathString(baseUrl), var server = StaticFilesTestServer.Create(app => app.UseStaticFiles(new StaticFileOptions()
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), baseDir)) {
})); RequestPath = new PathString(baseUrl),
HttpResponseMessage response = await server.CreateRequest(requestUrl).SendAsync("HEAD"); FileProvider = fileProvider
}));
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());
Assert.True(response.Content.Headers.ContentLength > 0); Assert.True(response.Content.Headers.ContentLength > 0);
Assert.Equal(0, (await response.Content.ReadAsByteArrayAsync()).Length); Assert.Equal(0, (await response.Content.ReadAsByteArrayAsync()).Length);
}
} }
} }
} }