public void Should_return_OK_when_media_type_is_accepted()
        {
            var notAcceptableMessageHandler = new NotAcceptableMessageHandler(new HttpConfiguration());

            var requestMessage = new HttpRequestMessage(HttpMethod.Get, "foo/bar");
            requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml"));

            var response = ExecuteRequest(notAcceptableMessageHandler, requestMessage);

            response.StatusCode.ShouldEqual(HttpStatusCode.OK);
        }
        public void Should_return_NotAcceptable_when_type_group_is_not_accepted()
        {
            var notAcceptableMessageHandler = new NotAcceptableMessageHandler(configuration);

            var requestMessage = new HttpRequestMessage(HttpMethod.Get, "foo/bar");
            requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("weird/*"));

            var response = ExecuteRequest(notAcceptableMessageHandler, requestMessage);

            response.StatusCode.ShouldEqual(HttpStatusCode.NotAcceptable);
        }
        public void Should_return_OK_when_type_group_is_accepted()
        {
            var customXmlFormatter = new XmlMediaTypeFormatter();
            customXmlFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/vnd.webapi.contrib+xml"));

            configuration.Formatters.Add(customXmlFormatter);

            var notAcceptableMessageHandler = new NotAcceptableMessageHandler(configuration);

            var requestMessage = new HttpRequestMessage(HttpMethod.Get, "foo/bar");
            requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/*"));

            var response = ExecuteRequest(notAcceptableMessageHandler, requestMessage);

            response.StatusCode.ShouldEqual(HttpStatusCode.OK);
        }
        public void Should_return_OK_when_one_of_the_media_types_is_all_media_types()
        {
            var config  = new HttpConfiguration();

            var customXmlFormatter = new XmlMediaTypeFormatter();
            customXmlFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/vnd.webapi.contrib+xml"));
            customXmlFormatter.AddMediaRangeMapping(new MediaTypeHeaderValue("*/*"),new MediaTypeHeaderValue("application/vnd.webapi.contrib+xml"));

            config.Formatters.Add(customXmlFormatter);

            var notAcceptableMessageHandler = new NotAcceptableMessageHandler(config);

            var requestMessage = new HttpRequestMessage(HttpMethod.Get, "foo/bar");
            requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("weird/type"));
            requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*"));

            var response = ExecuteRequest(notAcceptableMessageHandler, requestMessage);

            response.StatusCode.ShouldEqual(HttpStatusCode.OK);
        }