コード例 #1
0
        public void WillDetectPublicIPv6()
        {
            var testable = new TestableIpFilter();

            testable.Mock <HttpContextBase>().Setup(x => x.Request.UserHostAddress).Returns("3780:0:c307:0:2c45:e6a3:81c7:9273");

            Assert.Equal(testable.ClassUnderTest.UserIpAddress(testable.Mock <HttpContextBase>().Object), "3780:0:c307:0:2c45:e6a3:81c7:9273");
        }
コード例 #2
0
        public void WillAllowAccessWithEmptyIpFilterList()
        {
            var testable = new TestableIpFilter();

            testable.Mock <HttpContextBase>().Setup(x => x.Request.UserHostAddress).Returns("111.111.111.111");
            testable.Mock <IRRConfiguration>().Setup(x => x.IpFilterList).Returns(new string[] { });

            Assert.True(testable.ClassUnderTest.IsAuthorizedIpAddress(testable.Mock <HttpContextBase>().Object));
        }
コード例 #3
0
        public void WillDenyAccessForPublicIPv6()
        {
            var testable = new TestableIpFilter();

            testable.Mock <HttpContextBase>().Setup(x => x.Request.UserHostAddress).Returns("4488:0:5522:0:2c45:e6a3:81c7:9273");
            testable.Mock <IRRConfiguration>().Setup(x => x.IpFilterList).Returns(new[] { "2222:0:1111:0:3333:8537:9a52:53e4" });

            Assert.False(testable.ClassUnderTest.IsAuthorizedIpAddress(testable.Mock <HttpContextBase>().Object));
        }
コード例 #4
0
        public void WillDenyAccessForPublicIP()
        {
            var testable = new TestableIpFilter();

            testable.Mock <HttpContextBase>().Setup(x => x.Request.UserHostAddress).Returns("111.111.111.111");
            testable.Mock <IRRConfiguration>().Setup(x => x.IpFilterList).Returns(new[] { "222.222.222.222" });

            Assert.False(testable.ClassUnderTest.IsAuthorizedIpAddress(testable.Mock <HttpContextBase>().Object));
        }
コード例 #5
0
        public void WillDetectPrivateIPv6WithinPrivateNetwork()
        {
            var testable = new TestableIpFilter();

            testable.Mock <HttpContextBase>().Setup(x => x.Request.UserHostAddress).Returns("fde4:8263:a63b:2838:0000:0000:0000:0000");
            testable.Mock <HttpContextBase>().Setup(x => x.Request.ServerVariables).Returns(new NameValueCollection {
            });

            Assert.Equal(testable.ClassUnderTest.UserIpAddress(testable.Mock <HttpContextBase>().Object), "fde4:8263:a63b:2838:0000:0000:0000:0000");
        }
コード例 #6
0
        public void WillDetectPublicIPWhenBehindTwoPrivateProxies()
        {
            var testable = new TestableIpFilter();

            testable.Mock <HttpContextBase>().Setup(x => x.Request.UserHostAddress).Returns("10.0.0.1");
            testable.Mock <HttpContextBase>().Setup(x => x.Request.ServerVariables).Returns(new NameValueCollection {
                { "HTTP_X_FORWARDED_FOR", "123.123.123.123, 10.0.0.2" }
            });

            Assert.Equal(testable.ClassUnderTest.UserIpAddress(testable.Mock <HttpContextBase>().Object), "123.123.123.123");
        }
コード例 #7
0
        public void WillDetectPublicIPv6WhenBehindPrivateProxy()
        {
            var testable = new TestableIpFilter();

            testable.Mock <HttpContextBase>().Setup(x => x.Request.UserHostAddress).Returns("fde4:8263:a63b:2838:0000:0000:0000:0000");
            testable.Mock <HttpContextBase>().Setup(x => x.Request.ServerVariables).Returns(new NameValueCollection {
                { "HTTP_X_FORWARDED_FOR", "3780:0:c307:0:2c45:e6a3:81c7:9273" }
            });

            Assert.Equal(testable.ClassUnderTest.UserIpAddress(testable.Mock <HttpContextBase>().Object), "3780:0:c307:0:2c45:e6a3:81c7:9273");
        }
コード例 #8
0
        public void WillDetectAnotherPublicIP()
        {
            var testable = new TestableIpFilter();

            testable.Mock <HttpContextBase>().Setup(x => x.Request.UserHostAddress).Returns("103.103.103.103");
            testable.Mock <HttpContextBase>().Setup(x => x.Request.ServerVariables).Returns(new NameValueCollection {
                { "HTTP_X_FORWARDED_FOR", "9.9.9.9" }
            });

            Assert.Equal(testable.ClassUnderTest.UserIpAddress(testable.Mock <HttpContextBase>().Object), "103.103.103.103");
        }
コード例 #9
0
        public void WillDetectPublicIPv6WhenBehindTrustedProxyWithEquivalentIP()
        {
            var testable = new TestableIpFilter();

            testable.Mock <IRRConfiguration>().Setup(x => x.ProxyList).Returns(new[] { "4488:0:5522:0:2c45:e6a3:81c7:9273" });
            testable.Mock <HttpContextBase>().Setup(x => x.Request.UserHostAddress).Returns("4488:0000:5522:0000:2c45:e6a3:81c7:9273");
            testable.Mock <HttpContextBase>().Setup(x => x.Request.ServerVariables).Returns(new NameValueCollection {
                { "HTTP_X_FORWARDED_FOR", "3780:0:c307:0:2c45:e6a3:81c7:9273" }
            });

            Assert.Equal(testable.ClassUnderTest.UserIpAddress(testable.Mock <HttpContextBase>().Object), "3780:0:c307:0:2c45:e6a3:81c7:9273");
        }
コード例 #10
0
        public void WillDetectPublicIPWhenBehindTrustedProxyWithEquivalentIP()
        {
            var testable = new TestableIpFilter();

            testable.Mock <IRRConfiguration>().Setup(x => x.ProxyList).Returns(new[] { "111.000.000.111" });
            testable.Mock <HttpContextBase>().Setup(x => x.Request.UserHostAddress).Returns("111.0.0.111");
            testable.Mock <HttpContextBase>().Setup(x => x.Request.ServerVariables).Returns(new NameValueCollection {
                { "HTTP_X_FORWARDED_FOR", "123.123.123.123" }
            });

            Assert.Equal(testable.ClassUnderTest.UserIpAddress(testable.Mock <HttpContextBase>().Object), "123.123.123.123");
        }