public void MaskDatatableAsyncTest() { DataTable dt = new DataTable(); dt.Columns.Add("A"); var r = dt.NewRow(); r["A"] = "pfdsa"; dt.Rows.Add(r); //so now we got a databable with one row and column. DataMasker dm = new DataMasker(new MockStrategy()); dm.MaskDatatableAsync(dt, "A").Wait(); //make sure it didn't mess with my dt Assert.IsNotNull(dt); Assert.AreEqual(expected: "pfdsa", actual: dt.Rows[0]["A"]); }
private async Task ApplyMask(Dictionary <string, Tuple <MaskingOptions, string> > maskingInformation, DataTable dataTable) { Console.Out.WriteLine("Combining multiple strategies into one..."); List <IMaskingStrategy> strats = new List <IMaskingStrategy>(); foreach (var item in maskingInformation) { string colName = item.Key; MaskingOptions option = item.Value.Item1; string method = item.Value.Item2; var strategy = MaskingStrategyFactory.CreateStrategyFromMaskingOption(option, method); strategy.Initialize(dataTable, colName); //'must call this here for aggregatre strategies Console.Out.WriteLine($"Applying datamask of type {option} to column {colName}"); strats.Add(strategy); } IMaskingStrategy CombinedStrategy = MaskingStrategyFactory.CombineStrategiesIntoSingleStrategy(strats); DataMasker masker = new DataMasker(CombinedStrategy); await masker.MaskDatatableAsync(dataTable, "AllCols"); Console.Out.WriteLine("Strategies executed."); }