public void FileExistsReturnsTrueForExistingPath_VPPRegistrationChanging() { AppDomainUtils.RunInSeparateAppDomain(() => { // Arrange AppDomainUtils.SetAppData(); new HostingEnvironment(); // Expect null beforeProvider since hosting environment hasn't been initialized VirtualPathProvider beforeProvider = HostingEnvironment.VirtualPathProvider; string testPath = "/Path.txt"; VirtualPathProvider afterProvider = CreatePathProvider(testPath); Mock <VirtualPathProvider> mockProvider = Mock.Get(afterProvider); TestableBuildManagerViewEngine engine = new TestableBuildManagerViewEngine(); // Act VirtualPathProvider beforeEngineProvider = engine.VirtualPathProvider; HostingEnvironment.RegisterVirtualPathProvider(afterProvider); bool result = engine.FileExists(testPath); VirtualPathProvider afterEngineProvider = engine.VirtualPathProvider; // Assert Assert.True(result); Assert.Equal(beforeProvider, beforeEngineProvider); Assert.Equal(afterProvider, afterEngineProvider); mockProvider.Verify(); mockProvider.Verify(c => c.FileExists(It.IsAny <String>()), Times.Once()); }); }
public static void SetupVirtualPathInAppDomain(string vpath, string contents) { var file = new Mock <VirtualFile>(vpath); file.Setup(f => f.Open()).Returns(new MemoryStream(ASCIIEncoding.Default.GetBytes(contents))); var vpp = new Mock <VirtualPathProvider>(); vpp.Setup(p => p.FileExists(vpath)).Returns(true); vpp.Setup(p => p.GetFile(vpath)).Returns(file.Object); AppDomainUtils.SetAppData(); var env = new HostingEnvironment(); var register = typeof(HostingEnvironment).GetMethod("RegisterVirtualPathProviderInternal", BindingFlags.Static | BindingFlags.NonPublic); register.Invoke(null, new object[] { vpp.Object }); }
public void FileExistsTest() { AppDomainUtils.RunInSeparateAppDomain(() => { var env = new HostingEnvironment(); AppDomainUtils.SetAppData(); var vpp = new Mock <VirtualPathProvider>(); var vpath1 = "/website1/default.cshtml"; var vpath2 = "/website2/default.cshtml"; vpp.Setup(p => p.FileExists(vpath1)).Returns(true).Verifiable(); vpp.Setup(p => p.FileExists(vpath2)).Returns(false).Verifiable(); var register = typeof(HostingEnvironment).GetMethod("RegisterVirtualPathProviderInternal", BindingFlags.Static | BindingFlags.NonPublic); register.Invoke(null, new object[] { vpp.Object }); var initPage = new Mock <StartPage>().Object; Assert.IsTrue(initPage.FileExists(vpath1)); Assert.IsFalse(initPage.FileExists(vpath2)); vpp.Verify(); }); }