Files
Common-VS2019/SacsCoreUnitTests/Standard/Base/Helpers/SacsEncryptionHelper_Tester.cs
T

78 lines
2.3 KiB
C#

using System;
using System.Text;
using NUnit.Framework;
using Sarand.Net.Standard.Base.Helpers;
namespace Sacs.UnitTests.Net.Standard.Base.Helpers
{
[TestFixture]
public class SacsEncryptionHelper_Tester
{
// --- Base64 and Key Encoding ---
[TestCase("AQID", 3, true)]
[TestCase("AQID", 4, false)]
[TestCase("not base64", 0, false)]
[TestCase("", 0, true)]
[TestCase(null, 0, false)]
public void IsBase64_ValidatesContentAndDecodedLength(String value, Int32 expectedLength, Boolean expected)
{
Assert.That(SacsEncryptionHelper.IsBase64(value, expectedLength), Is.EqualTo(expected));
}
[Test]
public void EncodePlainKey_RepeatsAndTruncatesToRequestedLength()
{
String encoded = SacsEncryptionHelper.EncodePlainKey("abc", 8, Encoding.UTF8);
Assert.That(Convert.FromBase64String(encoded), Is.EqualTo(Encoding.UTF8.GetBytes("abcabcab")));
}
[TestCase(null)]
[TestCase("")]
[TestCase(" ")]
public void EncodePlainKey_RejectsMissingKey(String value)
{
Assert.That(() => SacsEncryptionHelper.EncodePlainKey(value), Throws.TypeOf<NotSupportedException>());
}
// --- Key Generation ---
[Test]
public void InitSymmetricEncryptionKey_ReturnsAes256Key()
{
String key = SacsEncryptionHelper.InitSymmetricEncryptionKey();
Assert.That(Convert.FromBase64String(key), Has.Length.EqualTo(32));
}
[Test]
public void InitSymmetricEncryptionKey_ReturnsDifferentKeys()
{
String first = SacsEncryptionHelper.InitSymmetricEncryptionKey();
String second = SacsEncryptionHelper.InitSymmetricEncryptionKey();
Assert.That(second, Is.Not.EqualTo(first));
}
// --- Encryption ---
[TestCase("")]
[TestCase("Plain ASCII text")]
[TestCase("Unicode £ € 漢字 and emoji 😀")]
public void EncryptDecrypt_RoundTripsText(String value)
{
String key = SacsEncryptionHelper.InitSymmetricEncryptionKey();
String encrypted = SacsEncryptionHelper.EncryptAuthenticated(value, key, "Tests:SacsEncryptionHelper");
String decrypted = SacsEncryptionHelper.DecryptAuthenticated(encrypted, key, "Tests:SacsEncryptionHelper");
Assert.That(encrypted, Is.Not.EqualTo(value));
Assert.That(encrypted, Does.StartWith(SacsAuthenticatedEncryption.EnvelopePrefix));
Assert.That(decrypted, Is.EqualTo(value));
}
// --- The End ---
}
}