Adding some tests for the MapPath extension method
And looks like I pushed the MapPath extension change too soon. I had to fix an issue in the path for forward and backward slash.
For example if an application tries to do MapPath("/resource") then this code does not work cross plat unless the directory separator characters are fixed appropriately.
Fixed it and also added some test coverage.
This commit is contained in:
parent
f35bfcd271
commit
0dbbd2f655
|
|
@ -40,6 +40,8 @@ namespace Microsoft.AspNet.Hosting
|
||||||
return hostingEnvironment.WebRootPath;
|
return hostingEnvironment.WebRootPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// On windows replace / with \.
|
||||||
|
virtualPath = virtualPath.Replace('/', Path.DirectorySeparatorChar);
|
||||||
return Path.Combine(hostingEnvironment.WebRootPath, virtualPath);
|
return Path.Combine(hostingEnvironment.WebRootPath, virtualPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -131,6 +131,32 @@ namespace Microsoft.AspNet.Hosting
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Theory]
|
||||||
|
[InlineData(null, "")]
|
||||||
|
[InlineData("", "")]
|
||||||
|
[InlineData("/", "/")]
|
||||||
|
[InlineData(@"\", @"\")]
|
||||||
|
[InlineData("sub", "sub")]
|
||||||
|
[InlineData("sub/sub2/sub3", @"sub/sub2/sub3")]
|
||||||
|
[InlineData(@"sub/sub2\sub3\", @"sub/sub2/sub3/")]
|
||||||
|
public void MapPath_Facts(string virtualPath, string expectedSuffix)
|
||||||
|
{
|
||||||
|
var context = new HostingContext
|
||||||
|
{
|
||||||
|
ServerFactory = this
|
||||||
|
};
|
||||||
|
|
||||||
|
var engine = new HostingEngine();
|
||||||
|
|
||||||
|
using (engine.Start(context))
|
||||||
|
{
|
||||||
|
var env = context.ApplicationServices.GetRequiredService<IHostingEnvironment>();
|
||||||
|
var mappedPath = env.MapPath(virtualPath);
|
||||||
|
expectedSuffix = expectedSuffix.Replace('/', Path.DirectorySeparatorChar);
|
||||||
|
Assert.Equal(Path.Combine(env.WebRootPath, expectedSuffix), mappedPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void Initialize(IApplicationBuilder builder)
|
public void Initialize(IApplicationBuilder builder)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue