public void MvcHomeNotFoundReturnsProperView()
        {
            // Arrange
            var homeController = new HomeController { ControllerContext = HttpMocks.GetControllerContextMock().Object };

            // Act
            var result = homeController.NotFound();
            // Assert
            result.Should().BeViewResult().WithViewName("PageNotFound");
        }
        public void MvcHomeIndexReturnsIndexView()
        {
            // Arrange
            var homeController = new HomeController();

            // Act
            var result = homeController.Index();

            // Assert
            result.Should().BeViewResult().WithViewName("~/Features/Home/Index.cshtml");
        }
        public void MvcHomeTopNavPartialLoginDisabledForLoginScreen()
        {
            // Arrange
            var controllerContext = HttpMocks.GetControllerContextMock();
            var _parentRouteData = new RouteData();
            _parentRouteData.Values.Add("controller", "account");
            _parentRouteData.Values.Add("action", "login");
            var viewContext = new ViewContext { RouteData = _parentRouteData };
            controllerContext.Object.RouteData.DataTokens["ParentActionViewContext"] = viewContext;
            var homeController = new HomeController { ControllerContext = controllerContext.Object };

            // Act
            var result = homeController.TopNavigation();
            // Assert
            result.Should().BePartialViewResult().WithViewName("~/Features/Shared/_TopNavigation.cshtml");
            TopNavigationModel model = result.Model as TopNavigationModel;
            model.AuthenticationDisabled.Should().BeTrue();
        }
Пример #4
0
        protected void Application_Error(object sender, EventArgs e)
        {
            var httpContext = ((MvcApplication)sender).Context;
            var currentController = " ";
            var currentAction = " ";
            var currentRouteData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(httpContext));

            if (currentRouteData != null)
            {
                if (currentRouteData.Values["controller"] != null && !string.IsNullOrEmpty(currentRouteData.Values["controller"].ToString()))
                {
                    currentController = currentRouteData.Values["controller"].ToString();
                }

                if (currentRouteData.Values["action"] != null && !string.IsNullOrEmpty(currentRouteData.Values["action"].ToString()))
                {
                    currentAction = currentRouteData.Values["action"].ToString();
                }
            }

            var ex = Server.GetLastError();
            var controller = new HomeController();
            var routeData = new RouteData();
            var action = MVC.Home.ActionNames.Index;
            Log logger = new Log("MvcApp");
            var httpEx = ex as HttpException;

            if (httpEx != null)
            {
                logger.Error(string.Format(CultureInfo.InvariantCulture, "Unhandled Http {0} exception occured.", httpEx.GetHttpCode()), httpEx);

                switch (httpEx.GetHttpCode())
                {
                    case 404:
                        action = MVC.Home.ActionNames.NotFound;
                        break;

                    // others if any
                }

                httpContext.Response.StatusCode = httpEx.GetHttpCode();
            }
            else
            {
                logger.Error("Unhandled exception occured.", ex);
                httpContext.Response.StatusCode = 500;
            }

            httpContext.ClearError();
            httpContext.Response.Clear();
            httpContext.Response.TrySkipIisCustomErrors = true;

            routeData.Values["controller"] = MVC.Home.Name;
            routeData.Values["action"] = action;

            HttpContextWrapper wrapper = new HttpContextWrapper(Context);
            var rc = new RequestContext(wrapper, routeData);
            controller.ViewData.Model = new HandleErrorInfo(ex, currentController, currentAction);
            ((IController)controller).Execute(rc);
            Response.End();
        }
        public void MvcHomeWebMessagePartialReturnsProperView()
        {
            // Arrange
            var homeController = new HomeController { ControllerContext = HttpMocks.GetControllerContextMock().Object };

            // Act
            var result = homeController.ShowWebMessages();
            // Assert
            result.Should().BePartialViewResult().WithViewName("~/Features/Home/_WebMessages.cshtml").ModelAs<WebMessagesModel>();
        }
        public void MvcHomeTopNavPartialReturnsProperView()
        {
            // Arrange
            var controllerContext = HttpMocks.GetControllerContextMock();
            var parentRouteData = new RouteData();
            parentRouteData.Values.Add("controller", "home");
            parentRouteData.Values.Add("action", "index");
            var viewContext = new ViewContext { RouteData = parentRouteData };
            controllerContext.Object.RouteData.DataTokens["ParentActionViewContext"] = viewContext;
            var homeController = new HomeController { ControllerContext = controllerContext.Object };

            // Act
            var result = homeController.TopNavigation();
            // Assert
            result.Should().BePartialViewResult().WithViewName("~/Features/Shared/_TopNavigation.cshtml");
            TopNavigationModel model = result.Model as TopNavigationModel;
            model.AuthenticationDisabled.Should().BeFalse();
            model.LanguagesDisabled.Should().BeFalse();
        }