78 lines
2.3 KiB
C#
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 ---
|
|
}
|
|
}
|