private static ODataQueryOptions GetQueryOptions(string queryOption) { string uri = "Http://localhost/RoutingCustomers?" + queryOption; ODataUriResolver resolver = new ODataUriResolver { EnableCaseInsensitive = true }; var configuration = RoutingConfigurationFactory.CreateWithRootContainer("OData", b => b.AddService(ServiceLifetime.Singleton, sp => resolver)); var request = RequestFactory.Create(HttpMethod.Get, uri, configuration, "OData"); IEdmModel model = ODataRoutingModel.GetModel(); IEdmEntitySet entityset = model.EntityContainer.FindEntitySet("RoutingCustomers"); IEdmEntityType entityType = model.SchemaElements.OfType <IEdmEntityType>().Single(e => e.Name == "RoutingCustomer"); ODataPath path = new ODataPath(new[] { new EntitySetSegment(entityset) }); ODataQueryContext context = new ODataQueryContext(model, entityType, path); return(new ODataQueryOptions(context, request)); }
private static ODataQueryOptions GetQueryOptions(string queryOption) { string uri = "Http://localhost/RoutingCustomers?" + queryOption; HttpConfiguration configuration = new HttpConfiguration(); configuration.EnableCaseInsensitive(true); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, uri); request.SetConfiguration(configuration); IEdmModel model = ODataRoutingModel.GetModel(); IEdmEntitySet entityset = model.EntityContainer.FindEntitySet("RoutingCustomers"); IEdmEntityType entityType = model.SchemaElements.OfType <IEdmEntityType>().Single(e => e.Name == "RoutingCustomer"); ODataPath path = new ODataPath(new[] { new EntitySetPathSegment(entityset) }); ODataQueryContext context = new ODataQueryContext(model, entityType, path); return(new ODataQueryOptions(context, request)); }
private static HttpConfiguration GetConfiguration(bool caseInsensitive, bool unqualifiedNameCall) { IEdmModel model = ODataRoutingModel.GetModel(); HttpConfiguration config = RoutingConfigurationFactory.CreateWithTypes(new[] { typeof(MetadataController), typeof(ProductsController), typeof(RoutingCustomersController), }); ODataUriResolver resolver = new ODataUriResolver(); if (unqualifiedNameCall) { resolver = new UnqualifiedODataUriResolver(); if (caseInsensitive) { resolver = new UnqualifiedCaseInsensitiveResolver(); } } else { if (caseInsensitive) { resolver = new CaseInsensitiveResolver(); } } config.Count().Filter().OrderBy().Expand().MaxTop(null).Select(); config.MapODataServiceRoute("odata", "odata", builder => builder.AddService(ServiceLifetime.Singleton, sp => model) .AddService <IEnumerable <IODataRoutingConvention> >(ServiceLifetime.Singleton, sp => ODataRoutingConventions.CreateDefaultWithAttributeRouting("odata", config)) .AddService(ServiceLifetime.Singleton, sp => resolver)); return(config); }
public void SelectAction_ReturnsTheActionName_ForEntitySetActionBoundToEntitySet() { // Arrange ActionRoutingConvention actionConvention = new ActionRoutingConvention(); IEdmModel model = ODataRoutingModel.GetModel(); ODataPath odataPath = new DefaultODataPathHandler().Parse(model, _serviceRoot, "RoutingCustomers/Default.GetVIPs"); HttpRequestContext requestContext = new HttpRequestContext(); HttpControllerContext controllerContext = new HttpControllerContext { Request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/"), RequestContext = requestContext, RouteData = new HttpRouteData(new HttpRoute()) }; controllerContext.Request.SetRequestContext(requestContext); ILookup <string, HttpActionDescriptor> actionMap = new HttpActionDescriptor[1].ToLookup(desc => "GetVIPs"); // Act string action = actionConvention.SelectAction(odataPath, controllerContext, actionMap); // Assert Assert.Equal("GetVIPs", action); Assert.Equal(0, controllerContext.Request.GetRouteData().Values.Count); }