Пример #1
0
        public void SelectAction_ReturnsTheActionName_ForSingletonActionBoundToEntity()
        {
            // Arrange
            ActionRoutingConvention actionConvention = new ActionRoutingConvention();
            HttpContext             context          = CreateHttpContext("Post");

            IEdmModel model = new CustomersModelWithInheritance().Model;
            //IODataPathHandler pathHandler = context.RequestServices.GetRequiredService<IODataPathHandler>();
            IODataPathHandler pathHandler = new DefaultODataPathHandler(context.RequestServices);
            ODataPath         odataPath   = pathHandler.Parse(model, _serviceRoot, "VipCustomer/NS.upgrade");

            context.ODataFeature().Path = odataPath;

            ControllerActionDescriptor descriptor = new ControllerActionDescriptor();

            descriptor.ControllerName = "VipCustomer";
            descriptor.ActionName     = "upgrade";

            RouteContext routeContext = new RouteContext(context);
            IEnumerable <ControllerActionDescriptor> actionDescriptors = new[] { descriptor };

            // Act
            ActionDescriptor actionDescriptor = actionConvention.SelectAction(routeContext, actionDescriptors);

            // Assert
            Assert.Same(descriptor, actionDescriptor);
            Assert.Empty(routeContext.RouteData.Values);
        }
Пример #2
0
        public void SelectAction_ReturnsTheActionDescriptor_ForEntitySetActionBoundToEntitySet()
        {
            // Arrange
            ActionRoutingConvention actionConvention = new ActionRoutingConvention();

            HttpContext context = CreateHttpContext("Post");
            HttpRequest request = context.Request;

            IEdmModel         model       = ODataRoutingModel.GetModel(null);
            IODataPathHandler pathHandler = context.RequestServices.GetRequiredService <IODataPathHandler>();
            ODataPath         odataPath   = pathHandler.Parse(model, _serviceRoot, "RoutingCustomers/Default.GetVIPs");

            context.ODataFeature().Path = odataPath;

            ControllerActionDescriptor descriptor = new ControllerActionDescriptor();

            descriptor.ControllerName = "RoutingCustomers";
            descriptor.ActionName     = "GetVIPs";

            RouteContext routeContext = new RouteContext(context);
            IEnumerable <ControllerActionDescriptor> actionDescriptors = new [] { descriptor };

            // Act
            ActionDescriptor actionDescriptor = actionConvention.SelectAction(routeContext, actionDescriptors);

            // Assert
            Assert.Same(descriptor, actionDescriptor);
            Assert.Empty(routeContext.RouteData.Values);
        }
Пример #3
0
        public void SelectAction_ReturnsNull_IfActionIsMissing()
        {
            string[] paths =
            {
                "RoutingCustomers(1)/Default.GetRelatedRoutingCustomers",
                "RoutingCustomers/Default.GetProducts"
            };

            foreach (string path in paths)
            {
                // Arrange
                HttpContext context = CreateHttpContext("Post");

                IEdmModel         model       = ODataRoutingModel.GetModel(null);
                IODataPathHandler pathHandler = context.RequestServices.GetRequiredService <IODataPathHandler>();
                ODataPath         odataPath   = pathHandler.Parse(model, _serviceRoot, path);
                context.ODataFeature().Path   = odataPath;

                RouteContext routeContext = new RouteContext(context);
                IEnumerable <ControllerActionDescriptor> actionDescriptors = Enumerable.Empty <ControllerActionDescriptor>();

                // Act
                ActionDescriptor selectedAction = new ActionRoutingConvention().SelectAction(routeContext, actionDescriptors);

                // Assert
                Assert.Null(selectedAction);
                Assert.Empty(routeContext.RouteData.Values);
            }
        }
Пример #4
0
        public void SelectAction_ReturnsNull_RequestMethodIsNotPost(string requestMethod)
        {
            // Arrange
            HttpContext context = CreateHttpContext(requestMethod);
            HttpRequest request = context.Request;

            request.ODataFeature().Path = new ODataPath();

            RouteContext routeContext = new RouteContext(context);
            IEnumerable <ControllerActionDescriptor> actionDescriptors = Enumerable.Empty <ControllerActionDescriptor>();

            // Act
            ActionDescriptor actionDescriptor = new ActionRoutingConvention().SelectAction(routeContext, actionDescriptors);

            // Assert
            Assert.Null(actionDescriptor);
        }