public void Test_Config_DataProvider() { var real = new InterceptMe("test"); var guid = Guid.NewGuid().ToString(); var provider = new Mock <AuditDataProvider>(); Audit.Core.Configuration.Setup() .UseCustomProvider(provider.Object); var x = AuditProxy.Create <IInterceptMe>(real, null); var str = x.ReturnString(guid); Assert.AreEqual(guid.ToUpper(), str); Assert.AreEqual("test", x.GetSomePropValue()); provider.Verify(p => p.InsertEvent(It.IsAny <AuditEvent>()), Times.Once); provider.Verify(p => p.InsertEvent(It.Is <AuditEvent>(ev => (string)ev.GetAuditInterceptEvent().Arguments[0].Value == guid)), Times.Once); }
public void Test_Config_DynamicDataProvider() { var logs = new List <string>(); Audit.Core.Configuration.Setup() .UseDynamicProvider(config => config.OnInsert(ev => { logs.Add(ev.EventType); })); var real = new InterceptMe("test"); var audited = AuditProxy.Create <IInterceptMe>(real); audited.GetHashCode(); audited.SomeProperty = "543"; var t = audited.SomeProperty; var str = audited.ReturnString("test"); Assert.AreEqual(3, logs.Count); Assert.Contains("InterceptMe.get_SomeProperty", logs); Assert.Contains("InterceptMe.set_SomeProperty", logs); Assert.Contains("InterceptMe.ReturnString", logs); }
public void Test_Config_Properties() { var real = new InterceptMe("test"); var guid = Guid.NewGuid().ToString(); var provider = new Mock <AuditDataProvider>(); Audit.Core.Configuration.Setup() .UseCustomProvider(provider.Object); var x = AuditProxy.Create <IInterceptMe>(real, new InterceptionSettings() { IgnoreEvents = true }); x.SomeEvent += (s, e) => { }; provider.Verify(p => p.InsertEvent(It.IsAny <AuditEvent>()), Times.Never); x = AuditProxy.Create <IInterceptMe>(real, new InterceptionSettings() { IgnoreEvents = false }); x.SomeEvent += (s, e) => { }; Assert.AreEqual("test", x.GetSomePropValue()); provider.Verify(p => p.InsertEvent(It.IsAny <AuditEvent>()), Times.Once); }
public async Task Test_Aync() { var logs = new List <AuditEvent>(); Audit.Core.Configuration.Setup() .UseDynamicProvider(config => config.OnInsert(ev => { logs.Add(ev); })); //Audit.Core.Configuration.Setup().UseFileLogProvider(@"C:\Temp\1"); var real = new InterceptMe("test"); //var audited = AuditProxy.Create<IInterceptMe>(real); var audited = AuditProxy.Create <InterceptMeBase>(real); audited.AsyncReturningVoidAsync("1000"); var res = await audited.AsyncFunctionAsync("2000"); var t1 = audited.MethodThatReturnsATask("1000"); Assert.AreEqual("InterceptMe.MethodThatReturnsATask", logs[2].EventType); t1.Start(); var s = t1.Result; var task = audited.AsyncMethodAsync("500"); task.Wait(); Assert.Throws <AggregateException>(() => { var t2 = audited.AsyncFunctionAsync("should throw"); t2.Wait(); }); var source = new CancellationTokenSource(); source.CancelAfter(TimeSpan.FromSeconds(1)); Assert.ThrowsAsync <TaskCanceledException>(async() => { await audited.AsyncMethodAsyncWithCancellation(source.Token); }); Assert.AreEqual(6, logs.Count); // Aync returning void cannot be continued Assert.AreEqual("InterceptMe.AsyncReturningVoidAsync", logs[0].EventType); Assert.True(logs[0].Duration < 1000); Assert.True(logs[0].GetAuditInterceptEvent().IsAsync); Assert.Null(logs[0].GetAuditInterceptEvent().AsyncStatus); Assert.AreEqual("ok", res); Assert.AreEqual("InterceptMe.AsyncFunctionAsync", logs[1].EventType); Assert.AreEqual("ok", logs[1].GetAuditInterceptEvent().Result.Value); Assert.True(logs[1].Duration >= 2000); Assert.AreEqual(TaskStatus.RanToCompletion.ToString(), logs[1].GetAuditInterceptEvent().AsyncStatus); // Methods that returns a task (but are not async) are not continued Assert.AreEqual("InterceptMe.MethodThatReturnsATask", logs[2].EventType); Assert.True(logs[2].Duration < 1000); Assert.False(logs[2].GetAuditInterceptEvent().IsAsync); Assert.AreEqual("InterceptMe.AsyncMethodAsync", logs[3].EventType); Assert.True(logs[3].Duration >= 500); Assert.AreEqual(TaskStatus.RanToCompletion.ToString(), logs[3].GetAuditInterceptEvent().AsyncStatus); Assert.AreEqual("InterceptMe.AsyncFunctionAsync", logs[4].EventType); Assert.NotNull(logs[4].GetAuditInterceptEvent().Exception); Assert.AreEqual(TaskStatus.Faulted.ToString(), logs[4].GetAuditInterceptEvent().AsyncStatus); Assert.AreEqual("InterceptMe.AsyncMethodAsyncWithCancellation", logs[5].EventType); Assert.True(logs[5].Duration >= 1000); Assert.AreEqual(TaskStatus.Canceled.ToString(), logs[5].GetAuditInterceptEvent().AsyncStatus); }