public void GetEntryFromRequest_WithIdInRouteDataMatchingEntryInRepository_ReturnsEntry() { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/archive/123.aspx"); var routeData = new RouteData(); routeData.Values.Add("id", "123"); var subtextContext = new Mock <ISubtextContext>(); subtextContext.SetupRequestContext(httpContext, routeData, new Blog { Id = 123 }) .Setup(c => c.Repository.GetEntry(123, true, true)).Returns(new Entry(PostType.BlogPost) { Id = 123, Title = "Testing 123" }); //act Entry entry = Cacher.GetEntryFromRequest(true, subtextContext.Object); //assert Assert.AreEqual(123, entry.Id); Assert.AreEqual("Testing 123", entry.Title); }
public void GetEntryFromRequest_WithSlugInRouteDataMatchingEntryInRepository_ReturnsEntry() { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/archive/the-slug.aspx"); var routeData = new RouteData(); routeData.Values.Add("slug", "the-slug"); var subtextContext = new Mock <ISubtextContext>(); subtextContext.SetupRequestContext(httpContext, routeData) .SetupBlog(new Blog { Id = 1, TimeZoneId = TimeZonesTest.PacificTimeZoneId /* pacific */ }) .Setup(c => c.Repository.GetEntry("the-slug", true, true)).Returns(new Entry(PostType.BlogPost) { Id = 123, EntryName = "the-slug", Title = "Testing 123" }); //act Entry entry = Cacher.GetEntryFromRequest(true, subtextContext.Object); //assert Assert.AreEqual(123, entry.Id); Assert.AreEqual("Testing 123", entry.Title); Assert.AreEqual("the-slug", entry.EntryName); }
public void RequestWithoutSubfolder_ForAshxFileInDirectory_GetsHandlerInPhysicalDirectory() { //arrange string virtualPath = string.Empty; var routeData = new RouteData { Route = new DirectoryRoute("admin", new Mock<IDependencyResolver>().Object) }; ; routeData.Values.Add("pathinfo", "foo.ashx"); var pageBuilder = new Mock<ISubtextPageBuilder>(); var httpHandler = new Mock<IHttpHandler>(); pageBuilder.Setup(b => b.CreateInstanceFromVirtualPath(It.IsAny<string>(), It.IsAny<Type>())).Returns( httpHandler.Object).Callback<string, Type>((vpath, type) => virtualPath = vpath); IRouteHandler routeHandler = new DirectoryRouteHandler(pageBuilder.Object, new Mock<IDependencyResolver>().Object); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/admin/foo.ashx"); var requestContext = new RequestContext(httpContext.Object, routeData); //act IHttpHandler handler = routeHandler.GetHttpHandler(requestContext); //assert Assert.AreEqual("~/aspx/admin/foo.ashx", virtualPath); }
public void RequestWithoutSubfolder_ForDirectoryWithoutFileAndWithouEndingSlash_AppendsDefaultFileToVirtualPath() { //arrange string virtualPath = string.Empty; var routeData = new RouteData { Route = new DirectoryRoute("admin", new Mock <IServiceLocator>().Object) }; ; routeData.Values.Add("pathinfo", "posts"); var pageBuilder = new Mock <ISubtextPageBuilder>(); var httpHandler = new Mock <IHttpHandler>(); pageBuilder.Setup(b => b.CreateInstanceFromVirtualPath(It.IsAny <string>(), It.IsAny <Type>())).Returns( httpHandler.Object).Callback <string, Type>((vpath, type) => virtualPath = vpath); IRouteHandler routeHandler = new DirectoryRouteHandler(pageBuilder.Object, new Mock <IServiceLocator>().Object); var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/admin/posts"); var requestContext = new RequestContext(httpContext.Object, routeData); //act routeHandler.GetHttpHandler(requestContext); //assert Assert.AreEqual("~/aspx/admin/posts/Default.aspx", virtualPath); }
public static StringWriter FakeSubtextContextRequest(this Mock <ISubtextContext> subtextContextMock, Blog blog, string virtualPath, string applicationPath, string subfolder) { var httpContext = new Mock <HttpContextBase>(); StringWriter writer = httpContext.FakeRequest(virtualPath, subfolder); httpContext.SetupApplicationPath(applicationPath); httpContext.Stub(h => h.Response.ContentType); var hashTable = new Hashtable(); httpContext.Setup(c => c.Items).Returns(hashTable); var urlHelper = new Mock <UrlHelper>(); var routeData = new RouteData(); routeData.Values.Add("subfolder", subfolder); subtextContextMock.Setup(c => c.HttpContext).Returns(httpContext.Object); subtextContextMock.SetupBlog(blog) .SetupUrlHelper(urlHelper) .SetupRequestContext(httpContext, routeData); return(writer); }
public void RequestWithoutSubfolder_ForAshxFileInDirectory_GetsHandlerInPhysicalDirectory() { //arrange string virtualPath = string.Empty; var routeData = new RouteData { Route = new DirectoryRoute("admin", new Mock <IServiceLocator>().Object) }; ; routeData.Values.Add("pathinfo", "foo.ashx"); var pageBuilder = new Mock <ISubtextPageBuilder>(); var httpHandler = new Mock <IHttpHandler>(); pageBuilder.Setup(b => b.CreateInstanceFromVirtualPath(It.IsAny <string>(), It.IsAny <Type>())).Returns( httpHandler.Object).Callback <string, Type>((vpath, type) => virtualPath = vpath); IRouteHandler routeHandler = new DirectoryRouteHandler(pageBuilder.Object, new Mock <IServiceLocator>().Object); var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/admin/foo.ashx"); var requestContext = new RequestContext(httpContext.Object, routeData); //act IHttpHandler handler = routeHandler.GetHttpHandler(requestContext); //assert Assert.AreEqual("~/aspx/admin/foo.ashx", virtualPath); }
public void GetRouteDataWithAnyRequest_ReturnsNull() { //arrange var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/", string.Empty /* subfolder */, "~/"); var route = new ImageRoute("{*anything}"); //act RouteData routeData = route.GetRouteData(httpContext.Object); //assert Assert.IsNull(routeData); }
public void InitializeControls_WithLocalRequestAndReferrerInQueryString_LoadsMoreResultsControl() { // arrange var page = new SubtextMasterPage(); var context = new Mock <ISubtextContext>(); page.SubtextContext = context.Object; context.Setup(c => c.Blog).Returns(new Blog { Id = 123 }); context.Setup(c => c.HttpContext.Request.UrlReferrer).Returns((Uri)null); context.Setup(c => c.HttpContext.Request.IsLocal).Returns(true); context.Setup(c => c.HttpContext.Request.Url).Returns(new Uri("http://example.com/")); var queryString = new NameValueCollection { { "referrer", "http://bing.com/?q=test" } }; context.Setup(c => c.HttpContext.Request.QueryString).Returns(queryString); var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/archive/the-slug.aspx"); var routeData = new RouteData(); routeData.Values.Add("slug", "the-slug"); context.SetupRequestContext(httpContext, routeData) .SetupBlog(new Blog { Id = 1, TimeZoneId = TimeZonesTest.PacificTimeZoneId /* pacific */ }) .Setup(c => c.Repository.GetEntry("the-slug", true, true)).Returns(new Entry(PostType.BlogPost) { Id = 123, EntryName = "the-slug", Title = "Testing 123" }); page.SetControls(new[] { "Test" }); var loader = new Mock <ISkinControlLoader>(); loader.Setup(l => l.LoadControl("MoreResults")).Returns(new UserControl()); var searchEngine = new Mock <ISearchEngineService>(); searchEngine.Setup(s => s.Search(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <int>())).Returns(new[] { new SearchEngineResult() }); page.SearchEngineService = searchEngine.Object; // act page.InitializeControls(loader.Object); // assert loader.Verify(l => l.LoadControl("Test")); }
public void GetRouteDataWithAnyRequest_ReturnsNull() { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/", string.Empty /* subfolder */, "~/"); var route = new ImageRoute("{*anything}"); //act RouteData routeData = route.GetRouteData(httpContext.Object); //assert Assert.IsNull(routeData); }
public void GetRouteDataWithRequestWithSubfolder_WhenAggregationEnabledAndBlogDoesNotHaveSubfolder_DoesNotMatch() { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/foo", string.Empty /* subfolder */, "~/"); var route = new RootRoute(true, new Mock <IServiceLocator>().Object); //act RouteData routeData = route.GetRouteData(httpContext.Object); //assert Assert.IsNull(routeData); }
public void GetEntryFromRequest_WithEntryHavingEntryNameButIdInRouteDataMatchingEntryInRepository_RedirectsToUrlWithSlug() { //arrange var repository = new Mock <ObjectProvider>(); var entry = new Entry(PostType.BlogPost) { Id = 123, EntryName = "testing-slug", Title = "Testing 123" }; repository.Setup(r => r.GetEntry(123, true, true)).Returns(entry); var urlHelper = new Mock <UrlHelper>(); urlHelper.Setup(u => u.EntryUrl(It.IsAny <Entry>())).Returns("/archive/testing-slug.aspx"); UnitTestHelper.SetupBlog(); var response = new Mock <HttpResponseBase>(); response.Setup(r => r.End()); response.SetupSet(r => r.StatusCode, 301); response.SetupSet(r => r.StatusDescription, "301 Moved Permanently"); response.SetupSet(r => r.RedirectLocation, "http://localhost/archive/testing-slug.aspx"); var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/archive/testing-slug.aspx"); httpContext.Setup(c => c.Response).Returns(response.Object); var routeData = new RouteData(); routeData.Values.Add("id", "123"); var subtextContext = new Mock <ISubtextContext>(); subtextContext.SetupRequestContext(httpContext, routeData) .SetupUrlHelper(urlHelper) .SetupRepository(repository.Object) .SetupBlog(new Blog { Host = "localhost" }); subtextContext.Setup(c => c.HttpContext).Returns(httpContext.Object); //act Entry cachedEntry = Cacher.GetEntryFromRequest(true /* allowRedirect */, subtextContext.Object); //assert response.VerifySet(r => r.StatusCode, 301); response.VerifySet(r => r.StatusDescription, "301 Moved Permanently"); response.VerifySet(r => r.RedirectLocation, "http://localhost/archive/testing-slug.aspx"); Assert.AreEqual(123, cachedEntry.Id); Assert.AreEqual("Testing 123", cachedEntry.Title); }
public void GetRouteDataWithRequestWithSubfolder_WhenAggregationDisabledAndBlogDoesNotHaveSubfolder_DoesNotMatch () { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/foo", string.Empty /* subfolder */, "~/"); var route = new STRouting.RootRoute(false, new Mock <IDependencyResolver>().Object); //act RouteData routeData = route.GetRouteData(httpContext.Object); //assert Assert.IsNull(routeData); }
public void RequestUrlWithSingleDigitMonth_ForBlogPost_DoesNotMatchPageRoute() { //arrange var routes = new RouteCollection(); var subtextRoutes = new SubtextRouteMapper(routes, new Mock<IServiceLocator>().Object); Routes.RegisterRoutes(subtextRoutes); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/archive/2008/1/10/blog-post.aspx"); //act RouteData routeData = routes.GetRouteData(httpContext.Object); //assert. Assert.IsNull(routeData); }
public void RequestWithoutSubfolderForInstallDirectory_Matches() { //arrange var routes = new RouteCollection(); var subtextRoutes = new SubtextRouteMapper(routes, new Mock<IServiceLocator>().Object); Routes.RegisterRoutes(subtextRoutes); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/install/default.aspx", ""); //act RouteData routeData = routes.GetRouteData(httpContext.Object); //assert. Assert.IsNotNull(routeData); }
public void GetRouteData_MatchingTheImplicitSubfolderRoute_ReturnsParentDirectoryRoute() { //arrange var route = new DirectoryRoute("dir", new Mock<IServiceLocator>().Object); ; var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/subfolder/dir/foo.aspx"); var blogRequest = new BlogRequest("localhost", "subfolder", new Uri("http://localhost"), false); //act RouteData routeData = route.GetRouteData(httpContext.Object, blogRequest); //assert Assert.AreEqual(route, routeData.Route); }
GetRouteDataWithRequestWithSubfolder_WhenAggregationDisabledAndSubfolderDoesNotMatchBlogSubfolder_DoesNotMatch () { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/foo", "bar" /* subfolder */, "~/"); var route = new RootRoute(false, new Mock <IServiceLocator>().Object); //act RouteData routeData = route.GetRouteData(httpContext.Object); //assert Assert.IsNull(routeData); }
public void GetRouteData_MatchingTheImplicitSubfolderRoute_ReturnsParentDirectoryRoute() { //arrange var route = new PageRoute("url", "~/aspx/Dtp.aspx", new[] { "foo" }, new Mock<ISubtextPageBuilder>().Object, new Mock<IDependencyResolver>().Object); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/subfolder/url"); var blogRequest = new BlogRequest("localhost", "subfolder", new Uri("http://localhost"), false); //act RouteData routeData = route.GetRouteData(httpContext.Object, blogRequest); //assert Assert.AreEqual(route, routeData.Route); }
GetRouteDataWithRequestWithSubfolder_WhenAggregationEnabledAndSubfolderDoesNotMatchBlogSubfolder_DoesNotMatch () { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/foo", "bar" /* subfolder */, "~/"); var route = new STRouting.RootRoute(true, new Mock <IDependencyResolver>().Object); //act RouteData routeData = route.GetRouteData(httpContext.Object); //assert Assert.IsNull(routeData); }
public void GetRouteDataWithRequestForDefaultInSubfolder_WhenAggregationEnabled_MatchesRequestAndReturnsDtp() { //arrange var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/subfolder/default.aspx", "subfolder" /* subfolder */, "~/"); var route = new STRouting.RootRoute(true, new Mock<IDependencyResolver>().Object); //act RouteData routeData = route.GetRouteData(httpContext.Object); //assert var routeHandler = routeData.RouteHandler as STRouting.PageRouteHandler; Assert.AreEqual("~/aspx/Dtp.aspx", routeHandler.VirtualPath); Assert.AreSame(route, routeData.Route); }
public void GetRouteDataWithRequestForAppRoot_WhenAggregationDisabled_MatchesAndReturnsDtp() { //arrange var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/", string.Empty /* subfolder */, "~/"); var route = new STRouting.RootRoute(false, new Mock<IServiceLocator>().Object); //act RouteData routeData = route.GetRouteData(httpContext.Object); //assert var routeHandler = routeData.RouteHandler as STRouting.PageRouteHandler; Assert.AreEqual("~/aspx/Dtp.aspx", routeHandler.VirtualPath); Assert.AreSame(route, routeData.Route); Assert.IsTrue(routeData.DataTokens.ContainsKey(STRouting.PageRoute.ControlNamesKey)); }
public void GetRouteDataWithRequestForAppRoot_WhenAggregationEnabled_MatchesAndReturnsAggDefault() { //arrange var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/", string.Empty /* subfolder */, "~/"); var route = new STRouting.RootRoute(true, new Mock<IDependencyResolver>().Object); //act RouteData routeData = route.GetRouteData(httpContext.Object); //assert var routeHandler = routeData.RouteHandler as STRouting.PageRouteHandler; Assert.AreEqual("~/aspx/AggDefault.aspx", routeHandler.VirtualPath); Assert.AreSame(route, routeData.Route); Assert.IsFalse(routeData.DataTokens.ContainsKey(STRouting.PageRoute.ControlNamesKey)); }
public void GetRouteData_MatchingTheImplicitSubfolderRoute_ReturnsParentDirectoryRoute() { //arrange var route = new PageRoute("url", "~/aspx/Dtp.aspx", new[] { "foo" }, new Mock <ISubtextPageBuilder>().Object, new Mock <IDependencyResolver>().Object); var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/subfolder/url"); var blogRequest = new BlogRequest("localhost", "subfolder", new Uri("http://localhost"), false); //act RouteData routeData = route.GetRouteData(httpContext.Object, blogRequest); //assert Assert.AreEqual(route, routeData.Route); }
public void RequestUrlWithSingleDigitMonth_ForBlogPost_DoesNotMatchPageRoute() { //arrange var routes = new RouteCollection(); var subtextRoutes = new SubtextRouteMapper(routes, new Mock <IDependencyResolver>().Object); Routes.RegisterRoutes(subtextRoutes); var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/archive/2008/1/10/blog-post.aspx"); //act RouteData routeData = routes.GetRouteData(httpContext.Object); //assert. Assert.IsNull(routeData); }
public void RequestWithSubfolderForInstallDirectory_DoesNotMatch() { //arrange var routes = new RouteCollection(); var subtextRoutes = new SubtextRouteMapper(routes, new Mock <IServiceLocator>().Object); Routes.RegisterRoutes(subtextRoutes); var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/subfolder/install/default.aspx", "subfolder"); //act RouteData routeData = routes.GetRouteData(httpContext.Object); //assert. Assert.IsNull(routeData); }
public void GetVirtualPath_WhenAggregationEnabledAndNoSubfolderInRouteData_ReturnsRoot() { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/default.aspx", string.Empty /* subfolder */, "~/"); var routeData = new RouteData(); var requestContext = new RequestContext(httpContext.Object, routeData); var route = new STRouting.RootRoute(true, new Mock <IDependencyResolver>().Object); var routeValues = new RouteValueDictionary(); //act VirtualPathData virtualPathInfo = route.GetVirtualPath(requestContext, routeValues); //assert Assert.AreEqual(string.Empty, virtualPathInfo.VirtualPath); }
public void GetRouteDataWithRequestForDefault_WhenAggregationEnabled_MatchesAndReturnsAggDefault() { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/Default.aspx", string.Empty /* subfolder */, "~/"); var route = new RootRoute(true, new Mock <IServiceLocator>().Object); //act RouteData routeData = route.GetRouteData(httpContext.Object); //assert var routeHandler = routeData.RouteHandler as PageRouteHandler; Assert.AreEqual("~/aspx/AggDefault.aspx", routeHandler.VirtualPath); Assert.AreSame(route, routeData.Route); }
public void GetVirtualPath_WhenSupplyingRouteValues_ReturnsNull() { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/subfolder/default.aspx", string.Empty /* subfolder */, "~/"); var routeData = new RouteData(); var requestContext = new RequestContext(httpContext.Object, routeData); var route = new RootRoute(true, new Mock <IServiceLocator>().Object); var routeValues = new RouteValueDictionary(new { foo = "bar" }); //act VirtualPathData virtualPathInfo = route.GetVirtualPath(requestContext, routeValues); //assert Assert.IsNull(virtualPathInfo); }
public void GetVirtualPath_WhenAggregationEnabledWithSubfolderInRouteValues_ReturnsSubfolder() { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/subfolder/default.aspx", "subfolder" /* subfolder */, "~/"); var routeData = new RouteData(); var requestContext = new RequestContext(httpContext.Object, routeData); var route = new RootRoute(true, new Mock <IServiceLocator>().Object); var routeValues = new RouteValueDictionary(new { subfolder = "subfolder" }); //act VirtualPathData virtualPathInfo = route.GetVirtualPath(requestContext, routeValues); //assert Assert.AreEqual("subfolder", virtualPathInfo.VirtualPath); }
public void RequestWithSubfolderForBlogRoot_WithBlogHavingDifferentSubfolder_DoesNotMatch() { //arrange var routes = new RouteCollection(); var subtextRoutes = new SubtextRouteMapper(routes, new Mock <IDependencyResolver>().Object); Routes.RegisterRoutes(subtextRoutes); var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/subfolder/admin/foo.aspx", "not-subfolder"); //act RouteData routeData = routes.GetRouteData(httpContext.Object); //assert. Assert.IsNull(routeData); }
public void RequestWithoutSubfolderForInstallDirectory_Matches() { //arrange var routes = new RouteCollection(); var subtextRoutes = new SubtextRouteMapper(routes, new Mock <IDependencyResolver>().Object); Routes.RegisterRoutes(subtextRoutes); var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/install/default.aspx", ""); //act RouteData routeData = routes.GetRouteData(httpContext.Object); //assert. Assert.IsNotNull(routeData); }
public void Request_ForDirectHttpHandlers_Matches(string url, string subfolder) { //arrange var routes = new RouteCollection(); var subtextRoutes = new SubtextRouteMapper(routes, new Mock <IDependencyResolver>().Object); Routes.RegisterRoutes(subtextRoutes); var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest(url, subfolder); //act RouteData routeData = routes.GetRouteData(httpContext.Object); //assert Assert.IsNotNull(routeData); }
public void GetRouteDataWithRequestForSubfolder_WhenAggregationDisabled_MatchesRequestAndReturnsDtp() { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/subfolder", "subfolder" /* subfolder */, "~/"); var route = new RootRoute(false, new Mock <IServiceLocator>().Object); //act RouteData routeData = route.GetRouteData(httpContext.Object); //assert var routeHandler = routeData.RouteHandler as PageRouteHandler; Assert.AreEqual("~/aspx/Dtp.aspx", routeHandler.VirtualPath); Assert.AreSame(route, routeData.Route); }
public void GetVirtualPath_WhenSupplyingRouteValues_AppendsValuesToQueryString() { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/subfolder/default.aspx", string.Empty /* subfolder */, "~/"); var routeData = new RouteData(); var requestContext = new RequestContext(httpContext.Object, routeData); var route = new STRouting.RootRoute(true, new Mock <IDependencyResolver>().Object); var routeValues = new RouteValueDictionary(new { foo = "bar" }); //act VirtualPathData virtualPathInfo = route.GetVirtualPath(requestContext, routeValues); //assert Assert.AreEqual(virtualPathInfo.VirtualPath, "?foo=bar"); }
public void GetRouteDataWithRequestForSubfolder_WhenAggregationEnabled_MatchesRequestAndReturnsDtp() { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/subfolder", "subfolder" /* subfolder */, "~/"); var route = new STRouting.RootRoute(true, new Mock <IDependencyResolver>().Object); //act RouteData routeData = route.GetRouteData(httpContext.Object); //assert var routeHandler = routeData.RouteHandler as STRouting.PageRouteHandler; Assert.AreEqual("~/aspx/Dtp.aspx", routeHandler.VirtualPath); Assert.AreSame(route, routeData.Route); }
public void GetRouteData_ForRequestForExportController_Matches() { //arrange var routes = new RouteCollection(); var subtextRoutes = new SubtextRouteMapper(routes, new Mock<IServiceLocator>().Object); Routes.RegisterRoutes(subtextRoutes); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/admin/export.ashx", ""); //act RouteData routeData = routes.GetRouteData(httpContext.Object); //assert. Assert.IsNotNull(routeData); Assert.AreEqual("export", routeData.Values["controller"]); Assert.AreEqual("blogml", routeData.Values["action"]); }
public void GetRouteData_ForRequestForEntryAdminController_Matches() { //arrange var routes = new RouteCollection(); var subtextRoutes = new SubtextRouteMapper(routes, new Mock<IDependencyResolver>().Object); Routes.RegisterRoutes(subtextRoutes); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/admin/comments/destroy.ashx", ""); //act RouteData routeData = routes.GetRouteData(httpContext.Object); //assert. Assert.IsNotNull(routeData); Assert.AreEqual("comment", routeData.Values["controller"]); Assert.AreEqual("destroy", routeData.Values["action"]); }
public void GetRouteData_MatchingTheImplicitSubfolderRoute_ReturnsParentDirectoryRoute() { //arrange var route = new DirectoryRoute("dir", new Mock <IServiceLocator>().Object); ; var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/subfolder/dir/foo.aspx"); var blogRequest = new BlogRequest("localhost", "subfolder", new Uri("http://localhost"), false); //act RouteData routeData = route.GetRouteData(httpContext.Object, blogRequest); //assert Assert.AreEqual(route, routeData.Route); }
public void GetRouteDataWithRequestForAppRoot_WhenAggregationEnabled_MatchesAndReturnsAggDefault() { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/", string.Empty /* subfolder */, "~/"); var route = new STRouting.RootRoute(true, new Mock <IDependencyResolver>().Object); //act RouteData routeData = route.GetRouteData(httpContext.Object); //assert var routeHandler = routeData.RouteHandler as STRouting.PageRouteHandler; Assert.AreEqual("~/aspx/AggDefault.aspx", routeHandler.VirtualPath); Assert.AreSame(route, routeData.Route); Assert.IsFalse(routeData.DataTokens.ContainsKey(STRouting.PageRoute.ControlNamesKey)); }
public void GetVirtualPath_WithoutSubolder_ReturnsUrlWithoutSubfolder() { //arrange var route = new PageRoute("archive/{slug}.aspx", "~/aspx/Dtp.aspx", null, new Mock<ISubtextPageBuilder>().Object, new Mock<IDependencyResolver>().Object); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/archive/slug.aspx"); var routeData = new RouteData(); var requestContext = new RequestContext(httpContext.Object, routeData); //act VirtualPathData virtualPath = route.GetVirtualPath(requestContext, new RouteValueDictionary(new { slug = "test-slug" })); //assert Assert.IsNotNull(virtualPath); Assert.AreEqual("archive/test-slug.aspx", virtualPath.VirtualPath); }
public void GetRouteDataWithRequestForAppRoot_WhenAggregationDisabled_MatchesAndReturnsDtp() { //arrange var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/", string.Empty /* subfolder */, "~/"); var route = new RootRoute(false, new Mock <IServiceLocator>().Object); //act RouteData routeData = route.GetRouteData(httpContext.Object); //assert var routeHandler = routeData.RouteHandler as PageRouteHandler; Assert.AreEqual("~/aspx/Dtp.aspx", routeHandler.VirtualPath); Assert.AreSame(route, routeData.Route); Assert.IsTrue(routeData.DataTokens.ContainsKey(PageRoute.ControlNamesKey)); }
public void RequestWithSubfolder_ForBlogPostWithoutSubfolder_DoesNotMatch() { //arrange var subtextRoute = new PageRoute("archive/{slug}", "~/aspx/Dtp.aspx", null, new Mock <ISubtextPageBuilder>().Object, new Mock <IDependencyResolver>().Object); var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/subfolder/archive/blog-post"); //This info is provided by the BlogRequestModule. var blogRequest = new BlogRequest("localhost", string.Empty, new Uri("http://localhost/subfolder/archive/blog-post"), true); //act RouteData routeData = subtextRoute.GetRouteData(httpContext.Object, blogRequest); //assert. Assert.IsNull(routeData); }
public void RequestWithoutSubfolder_ForBlogPostWithoutSubfolder_Matches() { //arrange var subtextRoute = new PageRoute("archive/{slug}", "~/aspx/Dtp.aspx", null, new Mock<ISubtextPageBuilder>().Object, new Mock<IDependencyResolver>().Object); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/archive/blog-post"); //This info is provided by the BlogRequestModule. var blogRequest = new BlogRequest("localhost", string.Empty, new Uri("http://localhost/archive/blog-post"), true); //act RouteData routeData = subtextRoute.GetRouteData(httpContext.Object, blogRequest); //assert. Assert.IsNotNull(routeData); Assert.AreEqual("blog-post", routeData.Values["slug"]); Assert.AreEqual(string.Empty, routeData.Values["subfolder"]); }
public void Request_ForPageRouteWithConstraints_MatchesWhenConstraintsAreSatisfied() { //arrange var route = new PageRoute("archive/{year}/{month}/{day}/{slug}.aspx", "~/aspx/Dtp.aspx", null, new Mock <ISubtextPageBuilder>().Object, new Mock <IDependencyResolver>().Object) { Constraints = new RouteValueDictionary(new { year = @"\d{4}" }) }; var httpContext = new Mock <HttpContextBase>(); httpContext.FakeRequest("~/archive/2008/01/23/slug.aspx"); var blogRequest = new BlogRequest("localhost", null, new Uri("http://localhost"), false); //act RouteData routeData = route.GetRouteData(httpContext.Object, blogRequest); //assert Assert.IsNotNull(routeData); }
public void GetVirtualPath_WithoutSubolder_ReturnsUrlWithoutSubfolder() { //arrange var route = new DirectoryRoute("admin", new Mock<IServiceLocator>().Object); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/admin/posts/foo.aspx"); var blogRequest = new BlogRequest("localhost", null, new Uri("http://localhost"), true); var routeData = new RouteData(); var requestContext = new RequestContext(httpContext.Object, routeData); //act VirtualPathData virtualPath = route.GetVirtualPath(requestContext , new RouteValueDictionary( new {pathInfo = "posts/foo.aspx"})); //assert Assert.IsNotNull(virtualPath); Assert.AreEqual("admin/posts/foo.aspx", virtualPath.VirtualPath); }
public static StringWriter FakeSubtextContextRequest(this Mock<ISubtextContext> subtextContextMock, Blog blog, string virtualPath, string applicationPath, string subfolder) { var httpContext = new Mock<HttpContextBase>(); StringWriter writer = httpContext.FakeRequest(virtualPath, subfolder); httpContext.SetupApplicationPath(applicationPath); httpContext.Stub(h => h.Response.ContentType); var hashTable = new Hashtable(); httpContext.Setup(c => c.Items).Returns(hashTable); var urlHelper = new Mock<BlogUrlHelper>(); var routeData = new RouteData(); routeData.Values.Add("subfolder", subfolder); subtextContextMock.Setup(c => c.HttpContext).Returns(httpContext.Object); subtextContextMock.SetupBlog(blog) .SetupUrlHelper(urlHelper) .SetupRequestContext(httpContext, routeData); return writer; }
public void RequestWithSubfolderForBlogRoot_WithBlogHavingDifferentSubfolder_DoesNotMatch() { //arrange var routes = new RouteCollection(); var subtextRoutes = new SubtextRouteMapper(routes, new Mock<IServiceLocator>().Object); Routes.RegisterRoutes(subtextRoutes); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/subfolder/admin/foo.aspx", "not-subfolder"); //act RouteData routeData = routes.GetRouteData(httpContext.Object); //assert. Assert.IsNull(routeData); }
public void RequestWithoutSubfolder_ForProvidersDirectory_UsesDirectoryRouteHandler() { //arrange var routes = new RouteCollection(); var subtextRoutes = new SubtextRouteMapper(routes, new Mock<IServiceLocator>().Object); Routes.RegisterRoutes(subtextRoutes); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/providers/foo.aspx"); //act RouteData routeData = routes.GetRouteData(httpContext.Object); var routeHandler = routeData.RouteHandler as DirectoryRouteHandler; //assert. Assert.IsNotNull(routeHandler); Assert.AreEqual("foo.aspx", routeData.Values["pathInfo"]); }
public void GetEntryFromRequest_WithSlugInRouteDataMatchingEntryInRepository_ReturnsEntry() { //arrange var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/archive/the-slug.aspx"); var routeData = new RouteData(); routeData.Values.Add("slug", "the-slug"); var subtextContext = new Mock<ISubtextContext>(); subtextContext.SetupRequestContext(httpContext, routeData) .SetupBlog(new Blog { Id = 1, TimeZoneId = TimeZonesTest.PacificTimeZoneId /* pacific */}) .Setup(c => c.Repository.GetEntry("the-slug", true, true)).Returns(new Entry(PostType.BlogPost) { Id = 123, EntryName = "the-slug", Title = "Testing 123" }); //act Entry entry = Cacher.GetEntryFromRequest(true, subtextContext.Object); //assert Assert.AreEqual(123, entry.Id); Assert.AreEqual("Testing 123", entry.Title); Assert.AreEqual("the-slug", entry.EntryName); }
public void RequestWithSubfolderForInstallDirectory_DoesNotMatch() { //arrange var routes = new RouteCollection(); var subtextRoutes = new SubtextRouteMapper(routes, new Mock<IDependencyResolver>().Object); Routes.RegisterRoutes(subtextRoutes); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/subfolder/install/default.aspx", "subfolder"); //act RouteData routeData = routes.GetRouteData(httpContext.Object); //assert. Assert.IsNull(routeData); }
public void Request_ForDirectHttpHandlers_Matches(string url, string subfolder) { //arrange var routes = new RouteCollection(); var subtextRoutes = new SubtextRouteMapper(routes, new Mock<IServiceLocator>().Object); Routes.RegisterRoutes(subtextRoutes); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest(url, subfolder); //act RouteData routeData = routes.GetRouteData(httpContext.Object); //assert Assert.IsNotNull(routeData); }
public void GetRouteDataWithRequestWithSubfolder_WhenAggregationEnabledAndSubfolderDoesNotMatchBlogSubfolder_DoesNotMatch() { //arrange var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/foo", "bar" /* subfolder */, "~/"); var route = new STRouting.RootRoute(true, new Mock<IDependencyResolver>().Object); //act RouteData routeData = route.GetRouteData(httpContext.Object); //assert Assert.IsNull(routeData); }
public void RequestWithoutSubfolder_ForDirectoryWithoutFile_AppendsDefaultFileToVirtualPath() { //arrange string virtualPath = string.Empty; var routeData = new RouteData(); routeData.Route = new DirectoryRoute("admin", new Mock<IDependencyResolver>().Object); routeData.Values.Add("pathinfo", "posts"); var pageBuilder = new Mock<ISubtextPageBuilder>(); var httpHandler = new Mock<IHttpHandler>(); pageBuilder.Setup(b => b.CreateInstanceFromVirtualPath(It.IsAny<string>(), It.IsAny<Type>())).Returns( httpHandler.Object).Callback<string, Type>((vpath, type) => virtualPath = vpath); IRouteHandler routeHandler = new DirectoryRouteHandler(pageBuilder.Object, new Mock<IDependencyResolver>().Object); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/admin/posts/"); var requestContext = new RequestContext(httpContext.Object, routeData); //act routeHandler.GetHttpHandler(requestContext); //assert Assert.AreEqual("~/aspx/admin/posts/Default.aspx", virtualPath); }
public void RequestWithSubfolderForBlogRoot_WithAggregateEnabled_Matches() { //arrange var routes = new RouteCollection(); var subtextRoutes = new SubtextRouteMapper(routes, new Mock<IServiceLocator>().Object); Routes.RegisterRoutes(subtextRoutes); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/subfolder/admin/foo.aspx", "subfolder"); //act RouteData routeData = routes.GetRouteData(httpContext.Object); var routeHandler = routeData.RouteHandler as DirectoryRouteHandler; //assert. Assert.IsNotNull(routeHandler); Assert.AreEqual("foo.aspx", routeData.Values["pathInfo"]); }
public void RequestWithSubfolder_ForAdminDirectory_UsesDirectoryRouteHandler() { //arrange var routes = new RouteCollection(); var subtextRoutes = new SubtextRouteMapper(routes, new Mock<IDependencyResolver>().Object); Routes.RegisterRoutes(subtextRoutes); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/subfolder/admin/foo.aspx", "subfolder"); //act RouteData routeData = routes.GetRouteData(httpContext.Object); var routeHandler = routeData.RouteHandler as DirectoryRouteHandler; //assert. Assert.IsNotNull(routeHandler); Assert.AreEqual("foo.aspx", routeData.Values["pathInfo"]); }
public void RequestWithSubfolderForCommentApiController_WithBlogHavingSubfolder_Matches() { //arrange var routes = new RouteCollection(); var subtextRoutes = new SubtextRouteMapper(routes, new Mock<IServiceLocator>().Object); Routes.RegisterRoutes(subtextRoutes); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/subfolder/comments/123.aspx", "subfolder"); //act RouteData routeData = routes.GetRouteData(httpContext.Object); //assert. Assert.IsNotNull(routeData); Assert.AreEqual("CommentApi", routeData.Values["controller"]); Assert.AreEqual("Create", routeData.Values["action"]); Assert.AreEqual(routeData.RouteHandler.GetType(), typeof(MvcRouteHandler)); }
public void Request_ForBlogPost_ContainsControlsForBlogPost() { //arrange var routes = new RouteCollection(); var subtextRoutes = new SubtextRouteMapper(routes, new Mock<IServiceLocator>().Object); Routes.RegisterRoutes(subtextRoutes); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/archive/2008/12/10/blog-post.aspx"); //act RouteData routeData = routes.GetRouteData(httpContext.Object); var controls = routeData.DataTokens["controls"] as IEnumerable<string>; //assert. Assert.IsTrue(controls.Contains("viewpost")); Assert.IsTrue(controls.Contains("comments")); Assert.IsTrue(controls.Contains("postcomment")); Assert.AreEqual("blog-post", routeData.Values["slug"]); }
public void InitializeControls_WithReferrer_LoadsMoreResultsControl() { // arrange var page = new SubtextMasterPage(); var context = new Mock<ISubtextContext>(); context.Setup(c => c.Blog).Returns(new Blog {Id = 123}); context.Setup(c => c.HttpContext.Request.UrlReferrer).Returns(new Uri("http://bing.com/?q=test")); context.Setup(c => c.HttpContext.Request.IsLocal).Returns(false); context.Setup(c => c.HttpContext.Request.Url).Returns(new Uri("http://example.com/")); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/archive/the-slug.aspx"); var routeData = new RouteData(); routeData.Values.Add("slug", "the-slug"); context.SetupRequestContext(httpContext, routeData) .SetupBlog(new Blog { Id = 1, TimeZoneId = TimeZonesTest.PacificTimeZoneId /* pacific */}) .Setup(c => c.Repository.GetEntry("the-slug", true, true)).Returns(new Entry(PostType.BlogPost) { Id = 123, EntryName = "the-slug", Title = "Testing 123" }); page.SubtextContext = context.Object; page.SetControls(new[] { "Test" }); var searchEngine = new Mock<ISearchEngineService>(); searchEngine.Setup(s => s.Search(It.IsAny<string>(), It.IsAny<int>(), It.IsAny<int>())).Returns(new[]{new SearchEngineResult()}); page.SearchEngineService = searchEngine.Object; var loader = new Mock<ISkinControlLoader>(); loader.Setup(l => l.LoadControl("MoreResults")).Returns(new UserControl()); // act page.InitializeControls(loader.Object); // assert loader.Verify(l => l.LoadControl("Test")); }
public void GetVirtualPath_WhenAggregationEnabledWithSubfolderInRouteValues_ReturnsSubfolder() { //arrange var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/subfolder/default.aspx", "subfolder" /* subfolder */, "~/"); var routeData = new RouteData(); var requestContext = new RequestContext(httpContext.Object, routeData); var route = new STRouting.RootRoute(true, new Mock<IDependencyResolver>().Object); var routeValues = new RouteValueDictionary(new { subfolder = "subfolder" }); //act VirtualPathData virtualPathInfo = route.GetVirtualPath(requestContext, routeValues); //assert Assert.AreEqual("subfolder", virtualPathInfo.VirtualPath); }
public void GetVirtualPath_WhenSupplyingRouteValues_AppendsValuesToQueryString() { //arrange var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/subfolder/default.aspx", string.Empty /* subfolder */, "~/"); var routeData = new RouteData(); var requestContext = new RequestContext(httpContext.Object, routeData); var route = new STRouting.RootRoute(true, new Mock<IDependencyResolver>().Object); var routeValues = new RouteValueDictionary(new { foo = "bar" }); //act VirtualPathData virtualPathInfo = route.GetVirtualPath(requestContext, routeValues); //assert Assert.AreEqual(virtualPathInfo.VirtualPath, "?foo=bar"); }
public void RequestWithSubfolderForAggregatorBug_WithBlogHavingSubfolder_Matches() { //arrange var routes = new RouteCollection(); var subtextRoutes = new SubtextRouteMapper(routes, new Mock<IDependencyResolver>().Object); Routes.RegisterRoutes(subtextRoutes); var httpContext = new Mock<HttpContextBase>(); httpContext.FakeRequest("~/subfolder/aggbug/123.aspx", "subfolder"); //act RouteData routeData = routes.GetRouteData(httpContext.Object); //assert. Assert.IsNotNull(routeData); Assert.AreEqual("Statistics", routeData.Values["controller"]); Assert.AreEqual("RecordAggregatorView", routeData.Values["action"]); Assert.AreEqual(routeData.RouteHandler.GetType(), typeof(MvcRouteHandler)); }