using Microsoft.VisualStudio.TestTools.UnitTesting; using System.Security.Cryptography; using System; namespace Strata.Base.Internal.Tests.Security { [TestClass] public class SecurityUtilsTests { [TestMethod] public void EncryptValue_WithValidInput_EncryptsAndDecryptsCorrectly() { // Arrange string originalValue = "test value"; string key = "testkey12345678"; // AES requires at least a 128-bit (16-byte) key // Act string encryptedValue = SecurityUtils.EncryptValue(originalValue, key); string decryptedValue = SecurityUtils.DecryptValue(encryptedValue, key); // Assert Assert.AreEqual(originalValue, decryptedValue); } [TestMethod] public void DecryptValue_WithWrongKey_ThrowsException() { // Arrange string originalValue = "test value"; string correctKey = "testkey12345678"; // AES requires at least a 128-bit (16-byte) key string wrongKey = "wrongkey12345678"; // Act string encryptedValue = SecurityUtils.EncryptValue(originalValue, correctKey); // Assert Assert.ThrowsException(() => SecurityUtils.DecryptValue(encryptedValue, wrongKey)); } [TestMethod] public void EncryptValue_WithEmptyString_ReturnsEmptyString() { // Arrange string originalValue = ""; string key = "testkey12345678"; // Act string encryptedValue = SecurityUtils.EncryptValue(originalValue, key); // Assert Assert.AreEqual("", encryptedValue); } [TestMethod] public void DecryptValue_WithEmptyString_ReturnsEmptyString() { // Arrange string encryptedValue = ""; string key = "testkey12345678"; // Act string decryptedValue = SecurityUtils.DecryptValue(encryptedValue, key); // Assert Assert.AreEqual("", decryptedValue); } [TestMethod] public void EncryptValue_WithNullString_ReturnsNull() { // Arrange var originalValue = null as string; string key = "testkey12345678"; // Act string encryptedValue = SecurityUtils.EncryptValue(originalValue, key); // Assert Assert.IsNull(encryptedValue); } [TestMethod] public void DecryptValue_WithNullString_ReturnsNull() { // Arrange var encryptedValue = null as string; string key = "testkey12345678"; // Act string decryptedValue = SecurityUtils.DecryptValue(encryptedValue, key); // Assert Assert.IsNull(decryptedValue); } [TestMethod] public void DecryptValue_WithInvalidBase64_ThrowsException() { // Arrange string invalidBase64 = "Not a valid base64 string"; string key = "testkey12345678"; // Assert Assert.ThrowsException(() => SecurityUtils.DecryptValue(invalidBase64, key)); } } }