Beispiel #1
0
    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);
    }
Beispiel #2
0
    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);
    }
Beispiel #3
0
    public void FormatFilter_ExplicitContentType_SetOnObjectResult_TakesPrecedence()
    {
        // Arrange
        var mediaType   = new StringSegment("application/foo");
        var mockObjects = new MockObjects("json", FormatSource.QueryData);
        var httpContext = new Mock <HttpContext>();

        httpContext.Setup(c => c.Response).Returns(new Mock <HttpResponse>().Object);
        httpContext.Setup(c => c.Request.Query["format"]).Returns("json");
        var actionContext = new ActionContext(httpContext.Object, new RouteData(), new ActionDescriptor());
        var objectResult  = new ObjectResult("Hello!");

        objectResult.ContentTypes.Add(new MediaTypeHeaderValue("application/foo"));
        var resultExecutingContext = new ResultExecutingContext(
            actionContext,
            new IFilterMetadata[] { },
            objectResult,
            controller: new object());

        var resourceExecutingContext = new ResourceExecutingContext(
            actionContext,
            new IFilterMetadata[] { },
            new List <IValueProviderFactory>());

        var filter = new FormatFilter(mockObjects.OptionsManager, NullLoggerFactory.Instance);

        // Act
        filter.OnResourceExecuting(resourceExecutingContext);
        filter.OnResultExecuting(resultExecutingContext);

        // Assert
        var result = Assert.IsType <ObjectResult>(resultExecutingContext.Result);

        Assert.Single(result.ContentTypes);
        MediaTypeAssert.Equal(mediaType, result.ContentTypes[0]);
    }