public void Formatters_ForApiController_EvaluatesLazily() { // Arrange string message = CreateMessage(); ApiController controller = CreateController(); IContentNegotiator contentNegotiator = CreateDummyContentNegotiator(); using ( HttpConfiguration earlyConfiguration = CreateConfiguration( CreateFormatter(), contentNegotiator ) ) using (HttpRequestMessage request = CreateRequest()) { controller.Configuration = earlyConfiguration; controller.Request = request; BadRequestErrorMessageResult result = CreateProductUnderTest(message, controller); MediaTypeFormatter expectedFormatter = CreateFormatter(); using ( HttpConfiguration lateConfiguration = CreateConfiguration( expectedFormatter, contentNegotiator ) ) { controller.Configuration = lateConfiguration; // Act IEnumerable <MediaTypeFormatter> formatters = result.Formatters; // Assert Assert.NotNull(formatters); MediaTypeFormatter formatter = Assert.Single(formatters); Assert.Same(expectedFormatter, formatter); } } }
public void ContentNegotiator_ForApiController_Throws_WhenServiceIsNull() { // Arrange string message = CreateMessage(); ApiController controller = CreateController(); using (HttpConfiguration configuration = CreateConfiguration(CreateFormatter(), null)) using (HttpRequestMessage request = CreateRequest()) { controller.Request = request; controller.Configuration = configuration; BadRequestErrorMessageResult result = CreateProductUnderTest(message, controller); // Act & Assert Assert.Throws <InvalidOperationException>( () => { IContentNegotiator ignore = result.ContentNegotiator; }, "The provided configuration does not have an instance of the " + "'System.Net.Http.Formatting.IContentNegotiator' service registered."); } }
public void ApiControllerBadRequest_WithString_CreatesCorrectResult() { // Arrange string expectedMessage = CreateMessage(); ApiController controller = CreateController(); // Act BadRequestErrorMessageResult result = controller.BadRequest(expectedMessage); // Assert Assert.NotNull(result); Assert.Same(expectedMessage, result.Message); using (HttpConfiguration configuration = CreateConfiguration(CreateFormatter(), CreateDummyContentNegotiator())) using (HttpRequestMessage expectedRequest = CreateRequest()) { controller.Configuration = configuration; controller.Request = expectedRequest; Assert.Same(expectedRequest, result.Request); } }
public void ContentNegotiator_ForApiController_EvaluatesLazily() { // Arrange string message = CreateMessage(); ApiController controller = CreateController(); using ( HttpConfiguration configuration = CreateConfiguration( CreateFormatter(), CreateDummyContentNegotiator() ) ) { controller.Configuration = configuration; using (HttpRequestMessage request = CreateRequest()) { controller.Request = request; BadRequestErrorMessageResult result = CreateProductUnderTest( message, controller ); IContentNegotiator expectedContentNegotiator = CreateDummyContentNegotiator(); configuration.Services.Replace( typeof(IContentNegotiator), expectedContentNegotiator ); // Act IContentNegotiator contentNegotiator = result.ContentNegotiator; // Assert Assert.Same(expectedContentNegotiator, contentNegotiator); } } }
public void ContentNegotiator_ForApiController_Throws_WhenConfigurationIsNull() { // Arrange string message = CreateMessage(); ApiController controller = CreateController(); HttpControllerContext context = new HttpControllerContext(); using (HttpRequestMessage request = CreateRequest()) { controller.ControllerContext = context; BadRequestErrorMessageResult result = CreateProductUnderTest(message, controller); // Act & Assert Assert.Throws <InvalidOperationException>( () => { IContentNegotiator ignore = result.ContentNegotiator; }, "HttpControllerContext.Configuration must not be null." ); } }
public void Formatters_ReturnsInstanceProvided() { // Arrange string message = CreateMessage(); IContentNegotiator contentNegotiator = CreateDummyContentNegotiator(); using (HttpRequestMessage request = CreateRequest()) { IEnumerable <MediaTypeFormatter> expectedFormatters = CreateFormatters(); BadRequestErrorMessageResult result = CreateProductUnderTest( message, contentNegotiator, request, expectedFormatters ); // Act IEnumerable <MediaTypeFormatter> formatters = result.Formatters; // Assert Assert.Same(expectedFormatters, formatters); } }