blob: acc9b9de77f578d1992bc3bf7ebf45b9935f811f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Formatting;
using System.Net.Http.Headers;
using Moq;
using Xunit;
namespace System.Web.Http.ContentNegotiation
{
public class DefaultContentNegotiatorTests : ContentNegotiationTestBase
{
[Fact]
public void Custom_ContentNegotiator_Used_In_Response()
{
// Arrange
configuration.Formatters.Clear();
MediaTypeWithQualityHeaderValue requestContentType = new MediaTypeWithQualityHeaderValue("application/xml");
MediaTypeHeaderValue responseContentType = null;
Mock<IContentNegotiator> selector = new Mock<IContentNegotiator>();
selector.Setup(s => s.Negotiate(It.IsAny<Type>(), It.IsAny<HttpRequestMessage>(), It.IsAny<IEnumerable<MediaTypeFormatter>>()))
.Returns(new ContentNegotiationResult(new XmlMediaTypeFormatter(), null));
configuration.Services.Replace(typeof(IContentNegotiator), selector.Object);
// Act
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, baseUri);
request.Headers.Accept.Add(requestContentType);
HttpResponseMessage response = httpClient.SendAsync(request).Result;
response.EnsureSuccessStatusCode();
responseContentType = response.Content.Headers.ContentType;
// Assert
selector.Verify(s => s.Negotiate(It.IsAny<Type>(), It.IsAny<HttpRequestMessage>(), It.IsAny<IEnumerable<MediaTypeFormatter>>()), Times.AtLeastOnce());
}
}
}
|