5e2fbe800c
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
31 lines
887 B
C#
31 lines
887 B
C#
using Microsoft.AspNetCore.DataProtection;
|
|
using ROLAC.API.Services.Security;
|
|
using Xunit;
|
|
|
|
namespace ROLAC.API.Tests.Services;
|
|
|
|
public class TinProtectorTests
|
|
{
|
|
private static TinProtector Build() =>
|
|
new TinProtector(DataProtectionProvider.Create("ROLAC.Tests"));
|
|
|
|
[Fact]
|
|
public void Protect_then_Unprotect_round_trips()
|
|
{
|
|
var p = Build();
|
|
var cipher = p.Protect("123-45-6789");
|
|
Assert.NotEqual("123-45-6789", cipher);
|
|
Assert.Equal("123-45-6789", p.Unprotect(cipher));
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("123-45-6789", "6789")]
|
|
[InlineData("12-3456789", "6789")]
|
|
[InlineData("7", "7")]
|
|
public void Last4_keeps_only_trailing_digits(string raw, string expected)
|
|
=> Assert.Equal(expected, TinProtector.Last4(raw));
|
|
|
|
[Fact]
|
|
public void Last4_of_null_is_null() => Assert.Null(TinProtector.Last4(null));
|
|
}
|