public void Default(string alg) { CodeActivity <IEncryption> handler = null; switch (alg) { case nameof(AesAlgorithmEncryption): handler = new AesAlgorithmEncryption(); break; case nameof(DESAlgorithmEncryption): handler = new DESAlgorithmEncryption(); break; case nameof(RC2AlgorithmEncryption): handler = new RC2AlgorithmEncryption(); break; case nameof(RijndaelAlgorithmEncryption): handler = new RijndaelAlgorithmEncryption(); break; case nameof(TripleDESAlgorithmEncryption): handler = new TripleDESAlgorithmEncryption(); break; #if NET5_0 case nameof(AesGcmAlgorithmEncryption): handler = new AesGcmAlgorithmEncryption(); break; #endif } var text = Guid.NewGuid().ToString(); var secureString = new NetworkCredential("", CryptoKey).SecurePassword; var activity = new TextEncryption() { Algorithm = new ActivityFunc <IEncryption>() { Handler = handler }, Key = new InArgument <SecureString>(_ => secureString) }; var encrypted = WorkflowTester.CompileAndInvoke(activity, GetArgs(text)); Assert.IsNotNull(encrypted); Assert.AreNotEqual(text, encrypted); activity.Action = Core.Enums.CryptoActions.Decrypt; var decrypted = WorkflowTester.CompileAndInvoke(activity, GetArgs(encrypted)); Assert.IsNotNull(decrypted); Assert.AreNotEqual(encrypted, decrypted); Assert.AreEqual(text, decrypted); }
public void Default(string alg) { CodeActivity <IEncryption> handler = null; switch (alg) { case nameof(AesAlgorithmEncryption): handler = new AesAlgorithmEncryption(); break; case nameof(DESAlgorithmEncryption): handler = new DESAlgorithmEncryption(); break; case nameof(RC2AlgorithmEncryption): handler = new RC2AlgorithmEncryption(); break; case nameof(RijndaelAlgorithmEncryption): handler = new RijndaelAlgorithmEncryption(); break; case nameof(TripleDESAlgorithmEncryption): handler = new TripleDESAlgorithmEncryption(); break; } var dt = DataTableHelper.CreateDataTable <object>(6, new[] { new object[] { "Brazil", null, DBNull.Value, 1, "Latin", "America" }, new object[] { "Canada", "", DateTime.Today, 0, "North", "America" } }); var activity = new DataTableEncryption() { Algorithm = new ActivityFunc <IEncryption>() { Handler = handler }, ParallelProcessing = false, Key = new InArgument <string>(CryptoKey) }; var encrypted = WorkflowTester.Invoke(activity, GetArgs(dt)); var row = encrypted.Rows[0]; CollectionAssert.AreNotEqual(new object[] { "Brazil", 1, "Latin", "America" }, new object[] { row["Col0"], row["Col3"], row["Col4"], row["Col5"] }); CollectionAssert.AreEqual(new object[] { DBNull.Value, DBNull.Value }, new object[] { row["Col1"], row["Col2"] }); row = encrypted.Rows[1]; CollectionAssert.AreNotEqual(new object[] { "Canada", DateTime.Today, 0, "North", "America" }, new object[] { row["Col0"], row["Col2"], row["Col3"], row["Col4"], row["Col5"] }); Assert.AreEqual("", row[1]); activity.Action = Core.Enums.CryptoActions.Decrypt; var decrypted = WorkflowTester.Invoke(activity, GetArgs(encrypted)); for (int i = 0; i < dt.Rows.Count; i++) { for (int j = 0; j < dt.Columns.Count; j++) { var dr = dt.Rows[i]; if (dr.IsNull(j)) { Assert.AreEqual(dr[j], decrypted.Rows[i][j]); } else { Assert.AreEqual(dr[j].ToString(), decrypted.Rows[i][j]); } } } }