using System.Net.Http.Headers; using System.Text; using Elsa.Http.ContentWriters; using Xunit; namespace Elsa.Http.UnitTests.ContentWriters; /// /// Tests for the class. /// public class RawStringContentTests { /// /// Tests that the content type is set exactly as provided without appending charset information. /// [Fact] public void ContentType_ShouldNotAppendCharset() { // Arrange const string contentType = "text/xml"; const string content = "test"; // Act var rawContent = new RawStringContent(content, Encoding.UTF8, contentType); // Assert Assert.Equal(contentType, rawContent.Headers.ContentType?.MediaType); Assert.Null(rawContent.Headers.ContentType?.CharSet); } /// /// Tests that the content type with parameters is preserved exactly as provided. /// [Fact] public void ContentType_WithParameters_ShouldPreserveParameters() { // Arrange const string contentType = "application/json; custom-param=value"; var expectedMediaType = new MediaTypeHeaderValue(contentType); const string content = "{\"test\": \"value\"}"; // Act var rawContent = new RawStringContent(content, Encoding.UTF8, contentType); // Assert Assert.Equal(expectedMediaType.MediaType, rawContent.Headers.ContentType?.MediaType); Assert.Equal(expectedMediaType.Parameters.Count(), rawContent.Headers.ContentType?.Parameters.Count()); var expectedParam = expectedMediaType.Parameters.First(); var actualParam = rawContent.Headers.ContentType?.Parameters.First(); Assert.Equal(expectedParam.Name, actualParam?.Name); Assert.Equal(expectedParam.Value, actualParam?.Value); } }