Example #1
0
        public void ForwardedForHeaderContainsMultipleEntriesRenderFirstValue()
        {
            var httpContext = Substitute.For <HttpContextBase>();

#if !ASP_NET_CORE
            httpContext.Request.ServerVariables.Returns(new NameValueCollection {
                { "REMOTE_ADDR", "192.0.0.0" }
            });
            httpContext.Request.Headers.Returns(
                new NameValueCollection {
                { ForwardedForHeader, "127.0.0.1, 192.168.1.1" }
            });
#else
            var headers = new HeaderDict();
            headers.Add(ForwardedForHeader, new StringValues("127.0.0.1, 192.168.1.1"));
            httpContext.Request.Headers.Returns(callinfo => headers);
#endif
            var renderer = new AspNetRequestIpLayoutRenderer {
                CheckForwardedForHeader = true
            };
            renderer.HttpContextAccessor = new FakeHttpContextAccessor(httpContext);

            string result = renderer.Render(new LogEventInfo());

            Assert.Equal("127.0.0.1", result);
        }
Example #2
0
        public void ForwardedForHeaderNotPresentRenderRemoteAddress()
        {
            var httpContext = Substitute.For <HttpContextBase>();

#if !ASP_NET_CORE
            httpContext.Request.ServerVariables.Returns(new NameValueCollection {
                { "REMOTE_ADDR", "192.0.0.0" }
            });
            httpContext.Request.Headers.Returns(new NameValueCollection());
#else
            var headers = new HeaderDict();
            httpContext.Request.Headers.Returns(callinfo => headers);
            httpContext.Connection.RemoteIpAddress.Returns(callinfo => IPAddress.Parse("192.0.0.0"));
#endif
            var renderer = new AspNetRequestIpLayoutRenderer {
                CheckForwardedForHeader = true
            };
            renderer.HttpContextAccessor = new FakeHttpContextAccessor(httpContext);

            string result = renderer.Render(new LogEventInfo());

            Assert.Equal("192.0.0.0", result);
        }