public void Enable_sanitization_should_add_payment_filter_test()
        {
            var log = new TraceLog();

            PopulateDefaults(log);
            log.EnableSanitization();
            Assert.True(log.Filters.Exists(f => f is PaymentDataFilter));
        }
        public async Task Enable_sanitization_should_enable_payment_filter_test()
        {
            var waitHandle = new ManualResetEvent(false);
            var nullSink   = new Mock <ILogSink>();

            nullSink
            .Setup(s => s.WriteAsync(It.IsAny <ILog>(), It.IsAny <byte[]>()))
            .Returns(() =>
            {
                waitHandle.Set();
                return(Task.CompletedTask);
            });
            ILog updatedLog    = null;
            var  mockFormatter = new Mock <ILogFormatter>();

            mockFormatter
            .Setup(f => f.Format(It.IsAny <ILog>()))
            .Returns <ILog>(l =>
            {
                updatedLog = l;
                return(new byte[] { });
            });

            var mockConfigurationProvider = new Mock <IConfigurationProvider>();

            mockConfigurationProvider.Setup(x => x.GetGlobalConfigurationAsync <bool>(It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(false);

            var log = new TraceLog();

            PopulateDefaults(log);
            log.SetValue("txt_with_card", "<card>4111111111111111</card>");
            log.EnableSanitization();

            var writer = new LogWriter(mockFormatter.Object, nullSink.Object);
            await writer.WriteAsync(log);

            waitHandle.WaitOne();
            Assert.NotNull(updatedLog);
            var cardText = updatedLog.GetFields().SingleOrDefault(x => x.Key.Equals("txt_with_card")).Value;

            Assert.NotNull(cardText);
            Assert.Equal("<card>411111******1111</card>", cardText);
        }