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); }
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); }
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 }; }
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); }