public async Task NotifyWithoutHandlerTest()
        {
            var bus    = A.Fake <IServiceBus>();
            var user   = A.Fake <ClaimsPrincipal>();
            var @event = A.Fake <IEvent>();

            var service = new DefaultEventService(new IEventHandler[0]);

            await service.Notify(bus, user, @event);
        }
        public async Task NotifyTest()
        {
            var handler = A.Fake <IEventHandler>();
            var bus     = A.Fake <IServiceBus>();
            var user    = A.Fake <ClaimsPrincipal>();
            var @event  = A.Fake <IEvent>();

            var service = new DefaultEventService(new IEventHandler[] { handler });

            await service.Notify(bus, user, @event);

            A.CallTo(() => handler.Handle(A <EventHandlerContext> .Ignored, @event)).MustHaveHappened();
        }
示例#3
0
        public async Task PrepareEventWithRemoteAddressTest()
        {
            var options = new EventOptions
            {
                RaiseErrorEvents       = true,
                RaiseFailureEvents     = true,
                RaiseInformationEvents = true,
                RaiseSuccessEvents     = true
            };

            var remoteIp  = "127.0.0.1";
            var traceId   = Guid.NewGuid().ToString();
            var procId    = Process.GetCurrentProcess().Id;
            var subjectId = "123456789";
            var fooEvent  = new FooEvent("FooEvents", "FooEvent", EventTypes.Information, 1337, "Some foo message")
            {
                Foo = "bar"
            };

            var mockHttpContextAccessor = new Mock <IHttpContextAccessor>();
            var mockHttpContext         = new Mock <HttpContext>();
            var mockConnectionInfo      = new Mock <ConnectionInfo>();

            mockHttpContext.SetupGet(c => c.TraceIdentifier).Returns(traceId);
            mockConnectionInfo.SetupGet(c => c.RemoteIpAddress).Returns(System.Net.IPAddress.Parse(remoteIp));
            mockHttpContextAccessor.SetupGet(c => c.HttpContext).Returns(mockHttpContext.Object);
            mockHttpContext.SetupGet(c => c.Connection).Returns(mockConnectionInfo.Object);

            mockHttpContext.SetupGet(c => c.User).Returns(new ClaimsPrincipal(new ClaimsIdentity(new Claim[]
            {
                new Claim("sub", subjectId)
            })));

            var mockEventSink = new Mock <IEventSink>();

            var eventService = new DefaultEventService(
                options,
                mockHttpContextAccessor.Object,
                new DateTimeAccessor(),
                mockEventSink.Object);

            await eventService.RaiseAsync(fooEvent);


            /*eventOut.Should().Equals(eventIn);
             * eventOut.Context.Should().NotBeNull();
             * eventOut.Context.ProcessId.Should().Be(procId);
             * eventOut.Context.RemoteIpAddress.Should().Be(remoteIp);
             * eventOut.Context.SubjectId.Should().Be(subjectId);*/
        }
        public async Task NotifyFailedTest()
        {
            var handler = A.Fake <IEventHandler>();
            var bus     = A.Fake <IServiceBus>();
            var user    = A.Fake <ClaimsPrincipal>();
            var @event  = A.Fake <IEvent>();

            var service = new DefaultEventService(new IEventHandler[] { handler });

            A.CallTo(() => handler.Handle(A <EventHandlerContext> .Ignored, @event)).Throws <InvalidOperationException>();

            await Assert.ThrowsAsync <AggregateException>(() =>
            {
                return(service.Notify(bus, user, @event));
            });
        }