示例#1
0
        public async Task WriteToStreamAsync_UsesCorrectCharacterEncoding(string content, string encodingAsString, bool isDefaultEncoding)
        {
            // Arrange
            var formatter = new YamlOutputFormatter((Serializer) new SerializerBuilder()
                                                    .WithNamingConvention(CamelCaseNamingConvention.Instance)
                                                    .WithTypeInspector(inner => new CommentGatheringTypeInspector(inner))
                                                    .WithEmissionPhaseObjectGraphVisitor(args => new CommentsObjectGraphVisitor(args.InnerVisitor))
                                                    .Build());

            var expectedContent = $"\"{content}\"";
            var mediaType       = MediaTypeHeaderValue.Parse(string.Format("application/json; charset={0}", encodingAsString));
            var encoding        = CreateOrGetSupportedEncoding(formatter, encodingAsString, isDefaultEncoding);


            var body          = new MemoryStream();
            var actionContext = GetActionContext(mediaType, body);

            var outputFormatterContext = new OutputFormatterWriteContext(
                actionContext.HttpContext,
                new HttpResponseStreamWriterFactoryFake().CreateWriter,
                typeof(string),
                content)
            {
                ContentType = new StringSegment(mediaType.ToString()),
            };

            // Act
            await formatter.WriteResponseBodyAsync(outputFormatterContext, Encoding.GetEncoding(encodingAsString));

            // Assert
            var actualContent = string.Concat("\"", encoding.GetString(body.ToArray()).TrimEnd('\n'), "\"");

            Assert.Equal(expectedContent, actualContent, StringComparer.OrdinalIgnoreCase);
        }
示例#2
0
        public async Task WriteToStreamAsync_EncodingNull_ReturnsArgumentNullException(string content, string encodingAsString, bool isDefaultEncoding)
        {
            // Arrange
            var formatter = new YamlOutputFormatter((Serializer) new SerializerBuilder()
                                                    .WithNamingConvention(CamelCaseNamingConvention.Instance)
                                                    .WithTypeInspector(inner => new CommentGatheringTypeInspector(inner))
                                                    .WithEmissionPhaseObjectGraphVisitor(args => new CommentsObjectGraphVisitor(args.InnerVisitor))
                                                    .Build());

            var expectedContent = $"\"{content}\"";
            var mediaType       = MediaTypeHeaderValue.Parse(string.Format("application/json; charset={0}", encodingAsString));
            var encoding        = CreateOrGetSupportedEncoding(formatter, encodingAsString, isDefaultEncoding);


            var body          = new MemoryStream();
            var actionContext = GetActionContext(mediaType, body);

            var outputFormatterContext = new OutputFormatterWriteContext(
                actionContext.HttpContext,
                new HttpResponseStreamWriterFactoryFake().CreateWriter,
                typeof(string),
                content)
            {
                ContentType = new StringSegment(mediaType.ToString()),
            };

            // Act
            Exception caughtException = null;

            try
            {
                await formatter.WriteResponseBodyAsync(outputFormatterContext, null);
            }
            catch (Exception ex)
            {
                caughtException = ex;
            }

            // Assert
            Assert.True(caughtException is ArgumentNullException);
        }
示例#3
0
        protected static Encoding CreateOrGetSupportedEncoding(
            YamlOutputFormatter formatter,
            string encodingAsString,
            bool isDefaultEncoding)
        {
            Encoding encoding = null;

            if (isDefaultEncoding)
            {
                encoding = formatter
                           .SupportedEncodings
                           .First((e) => e.WebName.Equals(encodingAsString, StringComparison.OrdinalIgnoreCase));
            }
            else
            {
                encoding = Encoding.GetEncoding(encodingAsString);
                formatter.SupportedEncodings.Add(encoding);
            }

            return(encoding);
        }
    static OutputFormatterTest()
    {
        JsonFormatter = new JsonOutputFormatter();
        YamlFormatter = new YamlOutputFormatter();
        CsvFormatter  = new CsvOutputFormatter();

        var date          = new DateTime(2021, 11, 21);
        var sha           = "da39a3ee5e6b4b0d3255bfef95601890afd80709";
        var libYearResult = new LibYearResult
        {
            new("polyglot", "0.3.3", new DateTime(2011, 11, 01), "0.3.3", new DateTime(2011, 11, 01), 0.0, false,
                false)
        };

        s_metricsResultTestData     = new MetricsResult(date, sha, libYearResult);
        s_metricsResultListTestData = new List <MetricsResult>
        {
            s_metricsResultTestData,
            s_metricsResultTestData
        };
    }
示例#5
0
        public async Task WriteToStreamAsync_ContextNull_ReturnsArgumentNullException()
        {
            // Arrange
            var formatter = new YamlOutputFormatter((Serializer) new SerializerBuilder()
                                                    .WithNamingConvention(CamelCaseNamingConvention.Instance)
                                                    .WithTypeInspector(inner => new CommentGatheringTypeInspector(inner))
                                                    .WithEmissionPhaseObjectGraphVisitor(args => new CommentsObjectGraphVisitor(args.InnerVisitor))
                                                    .Build());

            // Act
            Exception caughtException = null;

            try
            {
                await formatter.WriteResponseBodyAsync(null, Encoding.UTF8);
            }
            catch (Exception ex)
            {
                caughtException = ex;
            }

            // Assert
            Assert.True(caughtException is ArgumentNullException);
        }