Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ private bool IsDefaultMask()
private object FormatMaskedValue(string val)
{
if (string.IsNullOrEmpty(val))
return val;
return PreserveLength ? val : Text;

if (ShowFirst == 0 && ShowLast == 0)
{
Expand Down
33 changes: 33 additions & 0 deletions test/Destructurama.Attributed.Tests/MaskedAttributeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,12 @@ public class CustomizedMaskedLogs
[LogMasked(PreserveLength = true)]
public string? DefaultMaskedPreserved { get; set; }

/// <summary>
/// "" results in "***"
/// </summary>
[LogMasked]
public string? DefaultMaskedNotPreservedOnEmptyString { get; set; }

/// <summary>
/// 123456789 results in "#"
/// </summary>
Expand Down Expand Up @@ -207,6 +213,33 @@ public void LogMaskedAttribute_Replaces_Value_With_DefaultStars_Mask_And_Preserv
Assert.AreEqual("*********", props["DefaultMaskedPreserved"].LiteralValue());
}

[Test]
public void LogMaskedAttribute_Replaces_Value_With_DefaultStars_Mask_And_Not_Preserve_Length_On_Empty_String()
{
// [LogMasked]
// "" -> "***"

LogEvent evt = null!;

var log = new LoggerConfiguration()
.Destructure.UsingAttributes()
.WriteTo.Sink(new DelegatingSink(e => evt = e))
.CreateLogger();

var customized = new CustomizedMaskedLogs
{
DefaultMaskedNotPreservedOnEmptyString = ""
};

log.Information("Here is {@Customized}", customized);

var sv = (StructureValue)evt.Properties["Customized"];
var props = sv.Properties.ToDictionary(p => p.Name, p => p.Value);

Assert.IsTrue(props.ContainsKey("DefaultMaskedNotPreservedOnEmptyString"));
Assert.AreEqual("***", props["DefaultMaskedNotPreservedOnEmptyString"].LiteralValue());
}

[Test]
public void LogMaskedAttribute_Replaces_Value_With_Provided_Mask()
{
Expand Down