Beispiel #1
0
    public void FormatFilter_ExplicitContentType_SetOnResponse_TakesPrecedence()
    {
        // Arrange
        var mediaType   = MediaTypeHeaderValue.Parse("application/foo");
        var mockObjects = new MockObjects("json", FormatSource.QueryData);
        var response    = new Mock <HttpResponse>();

        response.Setup(r => r.ContentType).Returns("application/foo");
        var httpContext = new Mock <HttpContext>();

        httpContext.Setup(c => c.Response).Returns(response.Object);
        httpContext.Setup(c => c.Request.Query["format"]).Returns("json");
        var actionContext          = new ActionContext(httpContext.Object, new RouteData(), new ActionDescriptor());
        var resultExecutingContext = new ResultExecutingContext(
            actionContext,
            new IFilterMetadata[] { },
            new ObjectResult("Hello!"),
            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.Empty(result.ContentTypes);
    }
Beispiel #2
0
    public void FormatFilter_ContextContainsFormat_Custom(
        string format,
        FormatSource place,
        string contentType)
    {
        // Arrange
        var mediaType = new StringSegment(contentType);

        var mockObjects              = new MockObjects(format, place);
        var resultExecutingContext   = mockObjects.CreateResultExecutingContext();
        var resourceExecutingContext = mockObjects.CreateResourceExecutingContext(new IFilterMetadata[] { });

        mockObjects.MvcOptions.FormatterMappings.SetMediaTypeMappingForFormat(
            format,
            MediaTypeHeaderValue.Parse(contentType));

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

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

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

        Assert.Single(objectResult.ContentTypes);
        MediaTypeAssert.Equal(mediaType, objectResult.ContentTypes[0]);
    }
Beispiel #3
0
    public void FormatFilter_ContextContainsFormat_DefaultFormat(string format, FormatSource place)
    {
        // Arrange
        var mediaType   = new StringSegment("application/json");
        var mockObjects = new MockObjects(format, place);

        var resultExecutingContext   = mockObjects.CreateResultExecutingContext();
        var resourceExecutingContext = mockObjects.CreateResourceExecutingContext(new IFilterMetadata[] { });

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

        // Act
        filter.OnResourceExecuting(resourceExecutingContext);

        // Assert
        Assert.Null(resourceExecutingContext.Result);

        // Act
        filter.OnResultExecuting(resultExecutingContext);

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

        Assert.Single(objectResult.ContentTypes);
        MediaTypeAssert.Equal(mediaType, objectResult.ContentTypes[0]);
    }
        private bool ModFilter(object item)
        {
            TroveModViewModel mod = item as TroveModViewModel;
            var ic = StringComparison.OrdinalIgnoreCase;

            bool search = true, types = true, subtypes = true, format = true;

            try
            {
                search = string.IsNullOrEmpty(SearchFilter) || mod.DataObject.Name?.IndexOf(SearchFilter, ic) >= 0 || mod.DataObject.Author?.IndexOf(SearchFilter, ic) >= 0 ||
                         mod.DataObject.Type?.IndexOf(SearchFilter, ic) >= 0 || mod.DataObject.SubType?.IndexOf(SearchFilter, ic) >= 0;

                types = string.IsNullOrEmpty(TypeFilter) || TypeFilter.Equals(Strings.GetMoreModsViewModel_AllTypes, ic) ||
                        mod.DataObject.Type == null || mod.DataObject.Type.Equals(TypeFilter, ic);

                subtypes = string.IsNullOrEmpty(SubTypeFilter) || SubTypeFilter.Equals(Strings.GetMoreModsViewModel_AllSubTypes, ic) ||
                           mod.DataObject.SubType == null || mod.DataObject.SubType.Equals(SubTypeFilter, ic);

                format = string.IsNullOrEmpty(FormatFilter) || FormatFilter.Equals(Strings.GetMoreModsViewModel_AllFormats, ic) ||
                         mod.DataObject.Downloads.Any(d => d.Format.Equals(FormatFilter, ic));
            }
            catch (Exception ex)
            {
                log.Error("Mod filter error", ex);
                if (log.IsDebugEnabled)
                {
                    log.DebugFormat("Mod Name: [{0}], Author: [{1}], Type: [{2}], SubType: [{3}], SearchFilter: [{4}], TypeFilter: [{5}], SubTypeFilter: [{6}], FormatFilter: [{7}]",
                                    mod?.DataObject?.Name, mod?.DataObject?.Author, mod?.DataObject?.Type, mod?.DataObject?.SubType, SearchFilter, TypeFilter, SubTypeFilter, FormatFilter);
                }
            }
            return(search && types && subtypes && format);
        }
Beispiel #5
0
        public void FormatFilter_InvalidProperty()
        {
            var filter = new FormatFilter("tmp", "${lvl}_error_${message}");

            var data = new EventData()
                       .Add("lvl", "Debug")
                       .Add("Message", "theMessage");

            var result = filter.Filter(data);

            Assert.AreEqual(result.Value, "Debug_error_${message}");
            Assert.AreEqual(result.Key, "tmp");
        }
Beispiel #6
0
    public void FormatFilter_ContextDoesntContainFormat()
    {
        // Arrange
        var mockObjects = new MockObjects();
        var resourceExecutingContext = mockObjects.CreateResourceExecutingContext(new IFilterMetadata[] { });

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

        // Act
        filter.OnResourceExecuting(resourceExecutingContext);

        // Assert
        Assert.Null(resourceExecutingContext.Result);
    }
Beispiel #7
0
    public void FormatFilter_GetFormat_UsesInvariantCulture()
    {
        // Arrange
        var mockObjects = new MockObjects();
        var context     = mockObjects.CreateResultExecutingContext();

        context.RouteData.Values["format"] = new DateTimeOffset(2018, 10, 31, 7, 37, 38, TimeSpan.FromHours(-7));
        var expected        = "10/31/2018 07:37:38 -07:00";
        var filterAttribute = new FormatFilterAttribute();
        var filter          = new FormatFilter(mockObjects.OptionsManager, NullLoggerFactory.Instance);

        // Act
        var format = filter.GetFormat(context);

        // Assert
        Assert.Equal(expected, filter.GetFormat(context));
    }
Beispiel #8
0
    public void FormatFilter_GetFormat(
        string input,
        FormatSource place,
        string expected)
    {
        // Arrange
        var mockObjects     = new MockObjects(input, place);
        var context         = mockObjects.CreateResultExecutingContext();
        var filterAttribute = new FormatFilterAttribute();
        var filter          = new FormatFilter(mockObjects.OptionsManager, NullLoggerFactory.Instance);

        // Act
        var format = filter.GetFormat(context);

        // Assert
        Assert.Equal(expected, filter.GetFormat(context));
    }
Beispiel #9
0
    public void FormatFilter_ContextContainsFormat_InRouteAndQueryData()
    {
        // If the format is present in both route and query data, the one in route data wins

        // Arrange
        var mediaType   = new StringSegment("application/json");
        var mockObjects = new MockObjects("json", FormatSource.RouteData);
        var httpContext = new Mock <HttpContext>();

        httpContext.Setup(c => c.Response).Returns(new Mock <HttpResponse>().Object);

        // Query contains xml
        httpContext.Setup(c => c.Request.Query.ContainsKey("format")).Returns(true);
        httpContext.Setup(c => c.Request.Query["format"]).Returns("xml");

        // RouteData contains json
        var data = new RouteData();

        data.Values.Add("format", "json");

        var ac = new ActionContext(httpContext.Object, data, new ActionDescriptor());

        var resultExecutingContext = new ResultExecutingContext(
            ac,
            new IFilterMetadata[] { },
            new ObjectResult("Hello!"),
            controller: new object());

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

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

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

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

        Assert.Single(objectResult.ContentTypes);
        MediaTypeAssert.Equal(mediaType, objectResult.ContentTypes[0]);
    }
Beispiel #10
0
    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, NullLoggerFactory.Instance);

        // Act
        filter.OnResourceExecuting(resourceExecutingContext);

        // Assert
        Assert.Null(resourceExecutingContext.Result);
    }
Beispiel #11
0
    public void FormatFilter_ContextContainsNonExistingFormat(
        string format,
        FormatSource place)
    {
        // Arrange
        var mockObjects = new MockObjects(format, place);
        var resourceExecutingContext = mockObjects.CreateResourceExecutingContext(new IFilterMetadata[] { });

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

        // Act
        filter.OnResourceExecuting(resourceExecutingContext);

        // Assert
        var actionResult = resourceExecutingContext.Result;

        Assert.IsType <NotFoundResult>(actionResult);
    }
Beispiel #12
0
    public void FormatFilter_LessSpecificThan_Produces()
    {
        // Arrange
        var produces    = new ProducesAttribute("application/xml;version=1", 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"));

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

        // Act
        filter.OnResourceExecuting(resourceExecutingContext);

        // Assert
        Assert.Null(resourceExecutingContext.Result);
    }
Beispiel #13
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 #14
0
        private void TryExportAllFormats(string inputImage, string outputImage, string outputExtension, FormatFilter filter = FormatFilter.All)
        {
            var model = new Models(1);

            model.AddImageFromFile(inputImage);
            model.Apply();
            var tex = (TextureArray2D)model.Pipelines[0].Image;

            var    eFmt      = ExportDescription.GetExportFormat(outputExtension);
            string errors    = "";
            int    numErrors = 0;

            foreach (var format in eFmt.Formats)
            {
                if (format.IsCompressed())
                {
                    if ((FormatFilter.Compressed & filter) == 0)
                    {
                        continue;
                    }
                }
                else if ((FormatFilter.Uncompressed & filter) == 0)
                {
                    continue;
                }

                try
                {
                    var desc = new ExportDescription(tex, outputImage, outputExtension);
                    desc.FileFormat = format;
                    model.Export.Export(desc);
                }
                catch (Exception e)
                {
                    errors += $"{format}: {e.Message}\n";
                    ++numErrors;
                }
            }

            if (errors.Length > 0)
            {
                throw new Exception($"export failed for {numErrors}/{eFmt.Formats.Count} formats:\n" + errors);
            }
        }