public void FormatFilter_ContextContainsFormat_ContainsProducesFilter_Matching( string format, FormatSource place, string contentType) { // Arrange var produces = new ProducesAttribute(contentType, new string[] { "application/foo", "text/bar" }); var mockObjects = new MockObjects(format, place); var resourceExecutingContext = mockObjects.CreateResourceExecutingContext(new IFilterMetadata[] { produces }); var filter = new FormatFilter(mockObjects.OptionsManager); // Act filter.OnResourceExecuting(resourceExecutingContext); // Assert Assert.Null(resourceExecutingContext.Result); }
public async Task ProducesAttribute_SetsContentType() { // Arrange var mediaType1 = MediaTypeHeaderValue.Parse("application/json"); var mediaType2 = MediaTypeHeaderValue.Parse("text/json;charset=utf-8"); var producesContentAttribute = new ProducesAttribute("application/json", "text/json;charset=utf-8"); var resultExecutingContext = CreateResultExecutingContext(new IFilterMetadata[] { producesContentAttribute }); var next = new ResultExecutionDelegate( () => Task.FromResult(CreateResultExecutedContext(resultExecutingContext))); // Act await producesContentAttribute.OnResultExecutionAsync(resultExecutingContext, next); // Assert var objectResult = resultExecutingContext.Result as ObjectResult; Assert.Equal(2, objectResult.ContentTypes.Count); ValidateMediaType(mediaType1, objectResult.ContentTypes[0]); ValidateMediaType(mediaType2, objectResult.ContentTypes[1]); }
public void FormatFilter_ContextContainsFormat_ContainsProducesFilter_Conflicting( string format, FormatSource place) { // Arrange var produces = new ProducesAttribute("application/xml", new string[] { "application/foo", "text/bar" }); var mockObjects = new MockObjects(format, place); var resourceExecutingContext = mockObjects.CreateResourceExecutingContext(new IFilterMetadata[] { produces }); mockObjects.MvcOptions.FormatterMappings.SetMediaTypeMappingForFormat( "xml", MediaTypeHeaderValue.Parse("application/xml")); var filter = new FormatFilter(mockObjects.OptionsManager, NullLoggerFactory.Instance); // Act filter.OnResourceExecuting(resourceExecutingContext); // Assert var result = Assert.IsType <NotFoundResult>(resourceExecutingContext.Result); }
public void FormatFilter_MoreSpecificThan_Produces() { // Arrange var produces = new ProducesAttribute("application/xml", new string[] { }); var mockObjects = new MockObjects("xml", FormatSource.RouteData); var resourceExecutingContext = mockObjects.CreateResourceExecutingContext(new IFilterMetadata[] { produces }); mockObjects.MvcOptions.FormatterMappings.SetMediaTypeMappingForFormat( "xml", MediaTypeHeaderValue.Parse("application/xml;version=1")); var filter = new FormatFilter(mockObjects.OptionsManager, NullLoggerFactory.Instance); // Act filter.OnResourceExecuting(resourceExecutingContext); // Assert var actionResult = resourceExecutingContext.Result; Assert.IsType <NotFoundResult>(actionResult); }
public void FormatFilter_ContextContainsFormat_ContainsProducesFilter_Conflicting( string format, FormatSource place) { // Arrange var produces = new ProducesAttribute("application/xml", new string[] { "application/foo", "text/bar" }); var mockObjects = new MockObjects(format, place); var resourceExecutingContext = mockObjects.CreateResourceExecutingContext(new IFilterMetadata[] { produces }); mockObjects.Options.FormatterMappings.SetMediaTypeMappingForFormat( "xml", MediaTypeHeaderValue.Parse("application/xml")); var filter = new FormatFilter(mockObjects.OptionsManager); // Act filter.OnResourceExecuting(resourceExecutingContext); // Assert var result = Assert.IsType<NotFoundResult>(resourceExecutingContext.Result); }
public async Task ProducesContentAttribute_FormatFilterAttribute_Active() { // Arrange var producesContentAttribute = new ProducesAttribute("application/xml"); var formatFilter = new Mock<IFormatFilter>(); formatFilter.Setup(f => f.IsActive) .Returns(true); var filters = new IFilterMetadata[] { producesContentAttribute, formatFilter.Object }; var resultExecutingContext = CreateResultExecutingContext(filters); var next = new ResultExecutionDelegate( () => Task.FromResult(CreateResultExecutedContext(resultExecutingContext))); // Act await producesContentAttribute.OnResultExecutionAsync(resultExecutingContext, next); // Assert var objectResult = Assert.IsType<ObjectResult>(resultExecutingContext.Result); Assert.Equal(0, objectResult.ContentTypes.Count); }
public async Task ProducesContentAttribute_FormatFilterAttribute_Active() { // Arrange var producesContentAttribute = new ProducesAttribute("application/xml"); var formatFilter = new Mock <IFormatFilter>(); formatFilter.Setup(f => f.IsActive) .Returns(true); var filters = new IFilter[] { producesContentAttribute, formatFilter.Object }; var resultExecutingContext = CreateResultExecutingContext(filters); var next = new ResultExecutionDelegate( () => Task.FromResult(CreateResultExecutedContext(resultExecutingContext))); // Act await producesContentAttribute.OnResultExecutionAsync(resultExecutingContext, next); // Assert var objectResult = Assert.IsType <ObjectResult>(resultExecutingContext.Result); Assert.Equal(0, objectResult.ContentTypes.Count); }
public void FormatFilter_MoreSpecificThan_Produces() { // Arrange var produces = new ProducesAttribute("application/xml", new string[] { }); var mockObjects = new MockObjects("xml", FormatSource.RouteData); var resourceExecutingContext = mockObjects.CreateResourceExecutingContext(new IFilterMetadata[] { produces }); mockObjects.Options.FormatterMappings.SetMediaTypeMappingForFormat( "xml", MediaTypeHeaderValue.Parse("application/xml;version=1")); var filter = new FormatFilter(mockObjects.OptionsManager, mockObjects.ActionContextAccessor); // Act filter.OnResourceExecuting(resourceExecutingContext); // Assert var actionResult = resourceExecutingContext.Result; Assert.IsType<HttpNotFoundResult>(actionResult); }
public static string Value(this ProducesAttribute self) { return((self.ContentTypes)[0]); }
public void ProducesAttribute_WithTypeOnly_DoesNotSetContentTypes() { // Arrange var producesAttribute = new ProducesAttribute(typeof(Person)); // Act and Assert Assert.NotNull(producesAttribute.ContentTypes); Assert.Empty(producesAttribute.ContentTypes); }
public void ProducesAttribute_WithTypeOnly_SetsTypeProperty() { // Arrange var personType = typeof(Person); var producesAttribute = new ProducesAttribute(personType); // Act and Assert Assert.NotNull(producesAttribute.Type); Assert.Same(personType, producesAttribute.Type); }