mirror of
https://github.com/bitwarden/server.git
synced 2025-07-01 08:02:49 -05:00
[AC-1637] Added unit tests for HtmlEncodingStringConverter
This commit is contained in:
89
test/Core.Test/Utilities/HtmlEncodingStringConverterTests.cs
Normal file
89
test/Core.Test/Utilities/HtmlEncodingStringConverterTests.cs
Normal file
@ -0,0 +1,89 @@
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
using Bit.Core.Utilities;
|
||||
using Xunit;
|
||||
|
||||
namespace Bit.Core.Test.Utilities;
|
||||
|
||||
public class HtmlEncodingStringConverterTests
|
||||
{
|
||||
[Fact]
|
||||
public void Serialize_WhenEncodedValueIsNotNull_SerializesHtmlEncodedString()
|
||||
{
|
||||
// Arrange
|
||||
var obj = new HtmlEncodedString
|
||||
{
|
||||
EncodedValue = "This is <b>bold</b>",
|
||||
NonEncodedValue = "This is <b>bold</b>"
|
||||
};
|
||||
|
||||
// This is necessary to prevent the serializer from double encoding the string
|
||||
var serializerOptions = new JsonSerializerOptions
|
||||
{
|
||||
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
|
||||
};
|
||||
|
||||
// Act
|
||||
var jsonString = JsonSerializer.Serialize(obj, serializerOptions);
|
||||
|
||||
// Assert
|
||||
const string expected = "{\"EncodedValue\":\"This is <b>bold</b>\",\"NonEncodedValue\":\"This is <b>bold</b>\"}";
|
||||
Assert.Equal(expected, jsonString);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Serialize_WhenEncodedValueIsNull_SerializesNull()
|
||||
{
|
||||
// Arrange
|
||||
var obj = new HtmlEncodedString
|
||||
{
|
||||
EncodedValue = null,
|
||||
NonEncodedValue = null
|
||||
};
|
||||
|
||||
// Act
|
||||
var jsonString = JsonSerializer.Serialize(obj);
|
||||
|
||||
// Assert
|
||||
const string expected = "{\"EncodedValue\":null,\"NonEncodedValue\":null}";
|
||||
Assert.Equal(expected, jsonString);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Deserialize_WhenJsonContainsHtmlEncodedString_ReturnsDecodedString()
|
||||
{
|
||||
// Arrange
|
||||
const string json = "{\"EncodedValue\":\"This is <b>bold</b>\",\"NonEncodedValue\":\"This is <b>bold</b>\"}";
|
||||
|
||||
// Act
|
||||
var obj = JsonSerializer.Deserialize<HtmlEncodedString>(json);
|
||||
|
||||
// Assert
|
||||
const string expectedEncodedValue = "This is <b>bold</b>";
|
||||
const string expectedNonEncodedValue = "This is <b>bold</b>";
|
||||
Assert.Equal(expectedEncodedValue, obj.EncodedValue);
|
||||
Assert.Equal(expectedNonEncodedValue, obj.NonEncodedValue);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Deserialize_WhenJsonContainsNull_ReturnsNull()
|
||||
{
|
||||
// Arrange
|
||||
const string json = "{\"EncodedValue\":null,\"NonEncodedValue\":null}";
|
||||
|
||||
// Act
|
||||
var obj = JsonSerializer.Deserialize<HtmlEncodedString>(json);
|
||||
|
||||
// Assert
|
||||
Assert.Null(obj.EncodedValue);
|
||||
Assert.Null(obj.NonEncodedValue);
|
||||
}
|
||||
}
|
||||
|
||||
public class HtmlEncodedString
|
||||
{
|
||||
[JsonConverter(typeof(HtmlEncodingStringConverter))]
|
||||
public string EncodedValue { get; set; }
|
||||
|
||||
public string NonEncodedValue { get; set; }
|
||||
}
|
Reference in New Issue
Block a user