45 lines
1.5 KiB
C#
45 lines
1.5 KiB
C#
using System;
|
|
using System.Security;
|
|
using PSInfisicalAPI.Security;
|
|
using Xunit;
|
|
|
|
namespace PSInfisicalAPI.Tests
|
|
{
|
|
public class SecureStringUtilityTests
|
|
{
|
|
[Fact]
|
|
public void ToReadOnlySecureString_Returns_ReadOnly_Instance()
|
|
{
|
|
SecureString secure = SecureStringUtility.ToReadOnlySecureString("hello");
|
|
Assert.True(secure.IsReadOnly());
|
|
Assert.Equal(5, secure.Length);
|
|
}
|
|
|
|
[Fact]
|
|
public void ToReadOnlySecureString_Handles_Null_And_Empty()
|
|
{
|
|
SecureString fromNull = SecureStringUtility.ToReadOnlySecureString(null);
|
|
SecureString fromEmpty = SecureStringUtility.ToReadOnlySecureString(string.Empty);
|
|
Assert.True(fromNull.IsReadOnly());
|
|
Assert.True(fromEmpty.IsReadOnly());
|
|
Assert.Equal(0, fromNull.Length);
|
|
Assert.Equal(0, fromEmpty.Length);
|
|
}
|
|
|
|
[Fact]
|
|
public void UsePlainText_Roundtrips_Value()
|
|
{
|
|
SecureString secure = SecureStringUtility.ToReadOnlySecureString("RoundTripValue");
|
|
string captured = SecureStringUtility.UsePlainText(secure, plainText => plainText);
|
|
Assert.Equal("RoundTripValue", captured);
|
|
}
|
|
|
|
[Fact]
|
|
public void UsePlainText_Throws_For_Null_Action()
|
|
{
|
|
SecureString secure = SecureStringUtility.ToReadOnlySecureString("x");
|
|
Assert.Throws<ArgumentNullException>(() => SecureStringUtility.UsePlainText<string>(secure, null));
|
|
}
|
|
}
|
|
}
|