public void When_Enrich_Log_Event_With_IpEnricher_And_Log_More_Than_Once_Should_Read_ClientIp_Value_From_HttpContext_Items()
        {
            //Arrange
            _contextAccessor.HttpContext.Connection.RemoteIpAddress = IPAddress.Loopback;
            var ipEnricher = new ClientIpEnricher(_contextAccessor);

            LogEvent evt = null;
            var      log = new LoggerConfiguration()
                           .Enrich.With(ipEnricher)
                           .WriteTo.Sink(new DelegatingSink(e => evt = e))
                           .CreateLogger();

            // Act
            log.Information(@"Has an IP property");
            log.Information(@"Has an other IP property");

            // Assert
            Assert.NotNull(evt);
            Assert.True(evt.Properties.ContainsKey("ClientIp"));
            Assert.Equal(IPAddress.Loopback.ToString(), evt.Properties["ClientIp"].LiteralValue());
        }
        public void When_Enrich_Log_Event_With_IpEnricher_Should_Contain_ClientIp_Property()
        {
            // Arrange
            _contextAccessor.HttpContext.Connection.RemoteIpAddress = IPAddress.Parse("::1");

            var ipEnricher = new ClientIpEnricher(_contextAccessor);

            LogEvent evt = null;
            var      log = new LoggerConfiguration()
                           .Enrich.With(ipEnricher)
                           .WriteTo.Sink(new DelegatingSink(e => evt = e))
                           .CreateLogger();

            // Act
            log.Information(@"Has an IP property");

            // Assert
            Assert.NotNull(evt);
            Assert.True(evt.Properties.ContainsKey("ClientIp"));
            Assert.Equal("::1", evt.Properties["ClientIp"].LiteralValue());
        }
        public void When_Enrich_Log_Event_With_IpEnricher_AndRequest_Contain_ForwardHeader_Should_Read_ClientIp_Value_From_Header_Value()
        {
            //Arrange
            _contextAccessor.HttpContext.Connection.RemoteIpAddress = IPAddress.Loopback;
            _contextAccessor.HttpContext.Request.Headers.Add("X-forwarded-for", IPAddress.Broadcast.ToString());

            var ipEnricher = new ClientIpEnricher(_contextAccessor);

            LogEvent evt = null;
            var      log = new LoggerConfiguration()
                           .Enrich.With(ipEnricher)
                           .WriteTo.Sink(new DelegatingSink(e => evt = e))
                           .CreateLogger();

            // Act
            log.Information(@"Has an IP property");

            // Assert
            Assert.NotNull(evt);
            Assert.True(evt.Properties.ContainsKey("ClientIp"));
            Assert.Equal(IPAddress.Broadcast.ToString(), evt.Properties["ClientIp"].LiteralValue());
        }