Example #1
0
        public void SelectAction_Returns_ExpectedMethodOnDerivedType(string method, string[] methodsInController,
                                                                     string expectedSelectedAction)
        {
            // Arrange
            var keys = new[] { new KeyValuePair <string, object>("ID", 42) };
            CustomersModelWithInheritance model = new CustomersModelWithInheritance();
            var specialOrdersProperty           = model.SpecialCustomer.FindProperty("SpecialOrders") as IEdmNavigationProperty;

            ODataPath odataPath = new ODataPath(
                new EntitySetSegment(model.Customers),
                new KeySegment(keys, model.Customer, model.Customers),
                new TypeSegment(model.SpecialCustomer, model.Customers),
                new NavigationPropertyLinkSegment(specialOrdersProperty, model.Orders));

            var request   = RequestFactory.Create(new HttpMethod(method), "http://localhost/");
            var actionMap = SelectActionHelper.CreateActionMap(methodsInController);

            // Act
            string selectedAction = SelectActionHelper.SelectAction(new RefRoutingConvention(), odataPath, request, actionMap);

            // Assert
            Assert.Equal(expectedSelectedAction, selectedAction);
            if (expectedSelectedAction == null)
            {
                Assert.Empty(SelectActionHelper.GetRouteData(request).Values);
            }
            else
            {
                Assert.Equal(3, SelectActionHelper.GetRouteData(request).Values.Count);
                Assert.Equal(42, SelectActionHelper.GetRouteData(request).Values["key"]);
                Assert.Equal(42, SelectActionHelper.GetRouteData(request).Values["keyID"]);
                Assert.Equal(specialOrdersProperty.Name, SelectActionHelper.GetRouteData(request).Values["navigationProperty"]);
                Assert.Equal(2, SelectActionHelper.GetRoutingConventionsStore(request)[ODataRouteConstants.KeyCount]);
            }
        }
Example #2
0
        public void SelectAction_OnEntitySetPath_OpenEntityType_ReturnsTheActionName(string url)
        {
            // Arrange
            CustomersModelWithInheritance model = new CustomersModelWithInheritance();
            ODataPath odataPath = new DefaultODataPathHandler().Parse(model.Model, "http://localhost/", url);
            var       request   = RequestFactory.Create(HttpMethod.Get, "http://localhost/");
            var       actionMap = SelectActionHelper.CreateActionMap("GetDynamicProperty");

            // Act
            string selectedAction = SelectActionHelper.SelectAction(_routingConvention, odataPath, request, actionMap);

            // Assert
            Assert.NotNull(selectedAction);
            Assert.Equal("GetDynamicProperty", selectedAction);

            var routeData = SelectActionHelper.GetRouteData(request);
            var routingConventionsStore = SelectActionHelper.GetRoutingConventionsStore(request);

            Assert.Equal(4, routeData.Values.Count);
            Assert.Equal(7, routeData.Values["key"]);
            Assert.Equal(7, routeData.Values["keyID"]);
            Assert.Equal(1, routingConventionsStore[ODataRouteConstants.KeyCount]);
            Assert.Equal("DynamicPropertyA", routeData.Values["dynamicProperty"]);
            Assert.Equal("DynamicPropertyA", (routeData.Values[ODataParameterValue.ParameterValuePrefix + "dynamicProperty"] as ODataParameterValue).Value);
        }
Example #3
0
        public void SelectAction_UpdatesRouteData_ForSingletonFunctionWithParameters()
        {
            // Arrange
            FunctionRoutingConvention     functionConvention = new FunctionRoutingConvention();
            CustomersModelWithInheritance model = new CustomersModelWithInheritance();
            ODataPath odataPath = new DefaultODataPathHandler().Parse(model.Model, _serviceRoot, "VipCustomer/NS.IsUpgradedWithParam(city='any')");
            var       request   = RequestFactory.Create(HttpMethod.Get, "http://localhost/");
            var       actionMap = SelectActionHelper.CreateActionMap("IsUpgradedWithParam");

            // Act
            string selectedAction = SelectActionHelper.SelectAction(functionConvention, odataPath, request, actionMap);

            // Assert
            Assert.Equal("IsUpgradedWithParam", selectedAction);
            Assert.Single(SelectActionHelper.GetRouteData(request).Values);
            Assert.Equal("any", SelectActionHelper.GetRouteData(request).Values["city"]);
            Assert.Equal(1, SelectActionHelper.GetRoutingConventionsStore(request)[ODataRouteConstants.KeyCount]);
        }
Example #4
0
        public void SelectAction_ReturnsFunctionName_ForEntityFunctionOnEntity()
        {
            // Arrange
            FunctionRoutingConvention     functionConvention = new FunctionRoutingConvention();
            CustomersModelWithInheritance model = new CustomersModelWithInheritance();
            ODataPath odataPath = new DefaultODataPathHandler().Parse(model.Model, _serviceRoot, "Customers(1)/NS.IsUpgraded");
            var       request   = RequestFactory.Create(HttpMethod.Get, "http://localhost/");
            var       actionMap = SelectActionHelper.CreateActionMap("IsUpgraded");

            // Act
            string selectedAction = SelectActionHelper.SelectAction(functionConvention, odataPath, request, actionMap);

            // Assert
            Assert.Equal("IsUpgraded", selectedAction);
            Assert.Equal(2, SelectActionHelper.GetRouteData(request).Values.Count);
            Assert.Equal(1, SelectActionHelper.GetRouteData(request).Values["key"]);
            Assert.Equal(1, SelectActionHelper.GetRouteData(request).Values["keyID"]);
            Assert.Equal(1, SelectActionHelper.GetRoutingConventionsStore(request)[ODataRouteConstants.KeyCount]);
        }
        public void SelectAction_OnEnumCollection_ReturnsTheActionName(string httpMethod, string prefix)
        {
            // Arrange
            IEdmModel model     = ODataCountTest.GetEdmModel();
            ODataPath odataPath = new DefaultODataPathHandler().Parse(model, _serviceRoot, "DollarCountEntities(7)/EnumCollectionProp");
            var       request   = RequestFactory.Create(new HttpMethod(httpMethod), "http://localhost/");
            var       actionMap = SelectActionHelper.CreateActionMap(prefix + "EnumCollectionProp");

            // Act
            string selectedAction = SelectActionHelper.SelectAction(new PropertyRoutingConvention(), odataPath, request, actionMap);

            // Assert
            Assert.NotNull(selectedAction);
            Assert.Equal(prefix + "EnumCollectionProp", selectedAction);
            Assert.Equal(2, SelectActionHelper.GetRouteData(request).Values.Count);
            Assert.Equal(7, SelectActionHelper.GetRouteData(request).Values["key"]);
            Assert.Equal(7, SelectActionHelper.GetRouteData(request).Values["keyID"]);
            Assert.Equal(1, SelectActionHelper.GetRoutingConventionsStore(request)[ODataRouteConstants.KeyCount]);
        }
        public void SelectAction_OnComplexCollection_ReturnsTheActionName(string httpMethod, string prefix)
        {
            // Arrange
            CustomersModelWithInheritance model = new CustomersModelWithInheritance();
            ODataPath odataPath = new DefaultODataPathHandler().Parse(model.Model, _serviceRoot, "Customers(7)/OtherAccounts");
            var       request   = RequestFactory.Create(new HttpMethod(httpMethod), "http://localhost/");
            var       actionMap = SelectActionHelper.CreateActionMap(prefix + "OtherAccountsFromCustomer");

            // Act
            string selectedAction = SelectActionHelper.SelectAction(new PropertyRoutingConvention(), odataPath, request, actionMap);

            // Assert
            Assert.NotNull(selectedAction);
            Assert.Equal(prefix + "OtherAccountsFromCustomer", selectedAction);
            Assert.Equal(2, SelectActionHelper.GetRouteData(request).Values.Count);
            Assert.Equal(7, SelectActionHelper.GetRouteData(request).Values["key"]);
            Assert.Equal(7, SelectActionHelper.GetRouteData(request).Values["keyID"]);
            Assert.Equal(1, SelectActionHelper.GetRoutingConventionsStore(request)[ODataRouteConstants.KeyCount]);
        }
Example #7
0
        public void SelectAction_ReturnsFunctionName_DollarCount()
        {
            // Arrange
            var       model     = new CustomersModelWithInheritance();
            var       handler   = new DefaultODataPathHandler();
            ODataPath odataPath = handler.Parse(model.Model, _serviceRoot, "Customers(1)/NS.GetOrders(parameter=5)/$count");
            var       request   = RequestFactory.Create(HttpMethod.Get, "http://localhost/");
            var       actionMap = SelectActionHelper.CreateActionMap("GetOrders");

            // Act
            string selectedAction = SelectActionHelper.SelectAction(new FunctionRoutingConvention(), odataPath, request, actionMap);

            // Assert
            Assert.Equal("GetOrders", selectedAction);
            Assert.Equal(3, SelectActionHelper.GetRouteData(request).Values.Count);
            Assert.Equal(1, SelectActionHelper.GetRouteData(request).Values["key"]);
            Assert.Equal(1, SelectActionHelper.GetRouteData(request).Values["keyID"]);
            Assert.Equal(5, SelectActionHelper.GetRouteData(request).Values["parameter"]);
            Assert.Equal(2, SelectActionHelper.GetRoutingConventionsStore(request)[ODataRouteConstants.KeyCount]);
        }
Example #8
0
        public void SelectAction_Returns_DollarCount(string method, string[] methodsInController,
                                                     string expectedSelectedAction)
        {
            // Arrange
            var keys = new[] { new KeyValuePair <string, object>("ID", 42) };
            CustomersModelWithInheritance model = new CustomersModelWithInheritance();
            var       ordersProperty            = model.Customer.FindProperty("Orders") as IEdmNavigationProperty;
            ODataPath odataPath = new ODataPath(new EntitySetSegment(model.Customers), new KeySegment(keys, model.Customer, model.Customers),
                                                new NavigationPropertySegment(ordersProperty, model.Orders), CountSegment.Instance);

            var request   = RequestFactory.Create(new HttpMethod(method), "http://localhost/");
            var actionMap = SelectActionHelper.CreateActionMap(methodsInController);

            // Act
            string selectedAction = SelectActionHelper.SelectAction(new NavigationRoutingConvention(), odataPath, request, actionMap);

            // Assert
            Assert.Equal(expectedSelectedAction, selectedAction);
            Assert.Equal(2, SelectActionHelper.GetRouteData(request).Values.Count);
            Assert.Equal(42, SelectActionHelper.GetRouteData(request).Values["key"]);
            Assert.Equal(42, SelectActionHelper.GetRouteData(request).Values["keyID"]);
            Assert.Equal(1, SelectActionHelper.GetRoutingConventionsStore(request)[ODataRouteConstants.KeyCount]);
        }