public void SelectsSuperItemBasedOnParameter_5LMT() { // arrange var configuration = new HttpConfiguration(); configuration.Services.Replace(typeof(IHttpActionSelector), new MediaTypeBasedActionSelector()); configuration.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); configuration.AddFiveLevelsOfMediaType(); var server = new InMemoryServer(configuration); var client = new HttpClient(server); var request = new HttpRequestMessage(HttpMethod.Get, "http://lhasa/api/Item/1"); var headerValue = new MediaTypeWithQualityHeaderValue("application/json"); headerValue.Parameters.Add(new NameValueHeaderValue("domain-model", "SuperItem")); request.Headers.Accept.Add(headerValue); // act var response = client.SendAsync(request).Result; var content = response.Content.ReadAsStringAsync().Result; var mediaType = response.Content.Headers.ContentType.ExtractFiveLevelsOfMediaType(); // assert Assert.Equal("SuperItem", mediaType.DomainModel); }
private static HttpResponseMessage GetResponse(HttpConfiguration configuration, HttpResponseMessage initialResponse) { configuration.AddFiveLevelsOfMediaType(); var handler = new DummyMessageHandler() { Response = initialResponse }; var httpServer = new HttpServer(configuration, handler); var invoker = new HttpMessageInvoker(httpServer); return invoker.SendAsync(new HttpRequestMessage(HttpMethod.Get, "http://localhost/api/ddd"), CancellationToken.None).Result; }
public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings() { ContractResolver = new CamelCasePropertyNamesContractResolver() }; config.AddFiveLevelsOfMediaType(); config.Filters.Add(new ConcurrencyAwareFilterAttribute()); config.Filters.Add(new ConcurrencyExceptionFilterAttribute()); }
public void FiveLevelsAddsParams() { // set up var httpConfiguration = new HttpConfiguration(); httpConfiguration.AddFiveLevelsOfMediaType(); var response = new HttpResponseMessage(HttpStatusCode.Created); response.Content = new ObjectContent<Person>(new Person(), httpConfiguration.Formatters[0]); // run var result = GetResponse(httpConfiguration, response); var dictionary = result.Content.Headers.ContentType.Parameters.ToDictionary(x => x.Name, y => y.Value); // assert Assert.Equal(true.ToString(), dictionary[FiveLevelsOfMediaTypeParameters.IsText]); Assert.Equal("Person", dictionary[FiveLevelsOfMediaTypeParameters.DomainModel]); Assert.Equal(Assembly.GetExecutingAssembly() .GetName().Version.ToString(), dictionary[FiveLevelsOfMediaTypeParameters.Version]); Assert.Equal("application/json", HttpUtility.UrlDecode(dictionary[FiveLevelsOfMediaTypeParameters.Format])); Assert.Equal("application/json", HttpUtility.UrlDecode(dictionary[FiveLevelsOfMediaTypeParameters.Schema])); }