public void Has_V2_Mapping() { var selector = new VersionedControllerSelector(new HttpConfiguration()); var mappings = selector.GetControllerMapping(); Assert.IsNotNull(mappings.Keys.Where(key => key.StartsWith("v2"))); }
public void Selects_Default_Controller_When_No_Header_Present() { var config = new HttpConfiguration(); config.Routes.MapHttpRoute( "Default", "api/{controller}/{action}", new { controller = "Students", action = "Get" } ); var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/api/"); var routeData = config.Routes.GetRouteData(request); request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData; var selector = new VersionedControllerSelector(config); var descriptor = selector.SelectController(request); Assert.AreEqual(descriptor.ControllerType, typeof(StudentsController)); }
public void Selects_v1_Controller_When_V1_Accept_Specified() { var config = new HttpConfiguration(); config.Routes.MapHttpRoute( "Default", "api/{controller}/{action}", new { controller = "Students", action = "Get" } ); var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/api/"); var routeData = config.Routes.GetRouteData(request); request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData; request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/api.v1+json")); var selector = new VersionedControllerSelector(config); var descriptor = selector.SelectController(request); Assert.AreEqual(typeof(Controllers.v1.StudentsController), descriptor.ControllerType); }
public void Throws_http_415_for_unknown_version_in_accept_header() { var config = new HttpConfiguration(); config.Routes.MapHttpRoute( "Default", "api/{controller}/{action}", new { controller = "Students", action = "Get" } ); var request = new HttpRequestMessage(HttpMethod.Get, "http://localhost/api/"); var routeData = config.Routes.GetRouteData(request); request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData; request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/api.v11+json")); var selector = new VersionedControllerSelector(config); var exceptional = false; try { selector.SelectController(request); } catch (HttpResponseException ex) { exceptional = true; Assert.AreEqual(HttpStatusCode.UnsupportedMediaType, ex.Response.StatusCode); } Assert.IsTrue(exceptional, "Expected http 415 exception. None caught."); }