public void JsonContentBuilder_Build_CustomKey(string data) { // Arrange IJsonStreamModifier sut = new JsonStreamModifier(); byte[] bytes = Encoding.UTF8.GetBytes(data); var input = new MemoryStream(bytes); var output = new MemoryStream(); // Act sut.Modify(input, output, k => "key"); using var reader = new StreamReader(output); string text = reader.ReadToEnd(); // Assert text.Should().Be("{\"key\":\"value\"}"); }
public void JsonStreamModifier_Modify_WritesAsOriginal(string data) { // Arrange IJsonStreamModifier sut = new JsonStreamModifier(); byte[] bytes = Encoding.UTF8.GetBytes(data); var input = new MemoryStream(bytes); var output = new MemoryStream(); // Act sut.Modify(input, output); using var reader = new StreamReader(output); string text = reader.ReadToEnd(); // Assert text.Should().Be(data); }
public void LongJsonContentMiddleware_Modify_TrimsValue() { // Arrange var jsonBuilder = new JsonStreamModifier(); LongJsonContentMiddleware sut = new(jsonBuilder, 10); string content = @"{""key1"":""short"",""key2"":""some long content""}"; byte[] bytes = Encoding.UTF8.GetBytes(content); MemoryStream output = new(); // Act sut.Modify(new MemoryStream(bytes), output); // Assert new StreamReader(output).ReadToEnd().Should() .NotBeEmpty() .And.BeEquivalentTo(@"{""key1"":""short"",""key2"":""some long ...""}"); }
public async Task LogContentFactory_PrepareBody_ProperlyHandlesMiddleware() { // Arrange var jsonBuilder = new JsonStreamModifier(); var middlewares = new List <IRequestContentLogMiddleware> { new LongJsonContentMiddleware(jsonBuilder, 16) }; var sut = new LogContentFactory(middlewares); string content = "{\"trimOn14\":\"123456789012345\",\"trimOn16\":\"12345678901234567\"}"; byte[] contentBytes = Encoding.UTF8.GetBytes(content); Stream stream = new MemoryStream(contentBytes); // Act string result = await sut.PrepareBody("application/json", stream); // Assert result.Should() .NotBeNullOrEmpty() .And.BeEquivalentTo( $"{Environment.NewLine}{{\"trimOn14\":\"123456789012345\",\"trimOn16\":\"1234567890...\"}}"); }