public async Task ExtensionResolver_Works_EnumPrefixFree(string parameter, bool enableEnumPrefix, HttpStatusCode statusCode) { // Arrange IEdmModel model = GetEdmModel(); var config = RoutingConfigurationFactory.CreateWithTypes(new[] { typeof(ParserExtenstionCustomersController) }); ODataUriResolver resolver = new ODataUriResolver(); if (enableEnumPrefix) { resolver = new StringAsEnumResolver(); } 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)); HttpClient client = new HttpClient(new HttpServer(config)); // Act HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, String.Format("http://localhost/odata/ParserExtenstionCustomers/Default.GetCustomerByGender({0})", parameter)); HttpResponseMessage response = await client.SendAsync(request); // Assert Assert.Equal(statusCode, response.StatusCode); if (statusCode == HttpStatusCode.OK) { Assert.Equal("GetCustomerByGender/Male", (response.Content as ObjectContent <string>).Value); } }
public async Task ExtensionResolver_Works_EnumPrefixFree_QueryOption(string query, bool enableEnumPrefix, HttpStatusCode statusCode, string output) { // Arrange IEdmModel model = GetEdmModel(); var config = RoutingConfigurationFactory.CreateWithTypes(new[] { typeof(ParserExtenstionCustomersController) }); ODataUriResolver resolver = new ODataUriResolver(); if (enableEnumPrefix) { resolver = new StringAsEnumResolver(); } 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)); HttpClient client = new HttpClient(new HttpServer(config)); // Act HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, String.Format("http://localhost/odata/ParserExtenstionCustomers?{0}", query)); HttpResponseMessage response = await client.SendAsync(request); // Assert Assert.Equal(statusCode, response.StatusCode); if (statusCode == HttpStatusCode.OK) { JObject content = await response.Content.ReadAsAsync <JObject>(); Assert.Equal(output, String.Join(",", content["value"].Select(e => e["Id"]))); } }
public ODataUriResolver CreateResolver(IEdmModel model) { ODataUriResolver resolver; if (UnqualifiedNameCall && EnumPrefixFree) { resolver = new UnqualifiedCallAndEnumPrefixFreeResolver(); } else if (UnqualifiedNameCall) { resolver = new UnqualifiedODataUriResolver(); } else if (EnumPrefixFree) { resolver = new StringAsEnumResolver(); } else if (AlternateKeys) { resolver = new AlternateKeysODataUriResolver(model); } else { resolver = new ODataUriResolver(); } resolver.EnableCaseInsensitive = CaseInsensitive; return(resolver); }