Bläddra i källkod

Add tests for IsInNetwork

David 4 år sedan
förälder
incheckning
c2af50c51d

+ 63 - 0
tests/Jellyfin.Networking.Tests/NetworkManagerTests.cs

@@ -0,0 +1,63 @@
+using System.Net;
+using Jellyfin.Networking.Configuration;
+using Jellyfin.Networking.Manager;
+using Microsoft.Extensions.Logging.Abstractions;
+using Xunit;
+
+namespace Jellyfin.Networking.Tests
+{
+    public class NetworkManagerTests
+    {
+        /// <summary>
+        /// Checks that the given IP address is in the specified network(s).
+        /// </summary>
+        /// <param name="network">Network address(es).</param>
+        /// <param name="value">The IP to check.</param>
+        [Theory]
+        [InlineData("192.168.2.1/24", "192.168.2.123")]
+        [InlineData("192.168.2.1/24, !192.168.2.122/32", "192.168.2.123")]
+        [InlineData("fd23:184f:2029:0::/56", "fd23:184f:2029:0:3139:7386:67d7:d517")]
+        [InlineData("fd23:184f:2029:0::/56, !fd23:184f:2029:0:3139:7386:67d7:d518/128", "fd23:184f:2029:0:3139:7386:67d7:d517")]
+        public void InNetwork_True_Success(string network, string value)
+        {
+            var ip = IPAddress.Parse(value);
+            var conf = new NetworkConfiguration()
+            {
+                EnableIPV6 = true,
+                EnableIPV4 = true,
+                LocalNetworkSubnets = network.Split(',')
+            };
+
+            using var networkManager = new NetworkManager(NetworkParseTests.GetMockConfig(conf), new NullLogger<NetworkManager>());
+
+            Assert.True(networkManager.IsInLocalNetwork(ip));
+        }
+
+        /// <summary>
+        /// Checks that thge given IP address is not in the network provided.
+        /// </summary>
+        /// <param name="network">Network address(es).</param>
+        /// <param name="value">The IP to check.</param>
+        [Theory]
+        [InlineData("192.168.10.0/24", "192.168.11.1")]
+        [InlineData("192.168.10.0/24, !192.168.10.60/32", "192.168.10.60")]
+        [InlineData("192.168.10.0/24", "fd23:184f:2029:0:3139:7386:67d7:d517")]
+        [InlineData("fd23:184f:2029:0::/56", "fd24:184f:2029:0:3139:7386:67d7:d517")]
+        [InlineData("fd23:184f:2029:0::/56, !fd23:184f:2029:0:3139:7386:67d7:d500/120", "fd23:184f:2029:0:3139:7386:67d7:d517")]
+        [InlineData("fd23:184f:2029:0::/56", "192.168.10.60")]
+        public void InNetwork_False_Success(string network, string value)
+        {
+            var ip = IPAddress.Parse(value);
+            var conf = new NetworkConfiguration()
+            {
+                EnableIPV6 = true,
+                EnableIPV4 = true,
+                LocalNetworkSubnets = network.Split(',')
+            };
+
+            using var nm = new NetworkManager(NetworkParseTests.GetMockConfig(conf), new NullLogger<NetworkManager>());
+
+            Assert.False(nm.IsInLocalNetwork(ip));
+        }
+    }
+}

+ 1 - 27
tests/Jellyfin.Networking.Tests/NetworkParseTests.cs

@@ -13,7 +13,7 @@ namespace Jellyfin.Networking.Tests
 {
     public class NetworkParseTests
     {
-        private static IConfigurationManager GetMockConfig(NetworkConfiguration conf)
+        internal static IConfigurationManager GetMockConfig(NetworkConfiguration conf)
         {
             var configManager = new Mock<IConfigurationManager>
             {
@@ -54,32 +54,6 @@ namespace Jellyfin.Networking.Tests
             Assert.Equal(nm.GetInternalBindAddresses().AsString(), value);
         }
 
-        /// <summary>
-        /// Check that the value given is in the network provided.
-        /// </summary>
-        /// <param name="network">Network address.</param>
-        /// <param name="value">Value to check.</param>
-        [Theory]
-        [InlineData("192.168.10.0/24, !192.168.10.60/32", "192.168.10.60")]
-        public void IsInNetwork(string network, string value)
-        {
-            if (network == null)
-            {
-                throw new ArgumentNullException(nameof(network));
-            }
-
-            var conf = new NetworkConfiguration()
-            {
-                EnableIPV6 = true,
-                EnableIPV4 = true,
-                LocalNetworkSubnets = network.Split(',')
-            };
-
-            using var nm = new NetworkManager(GetMockConfig(conf), new NullLogger<NetworkManager>());
-
-            Assert.False(nm.IsInLocalNetwork(value));
-        }
-
         /// <summary>
         /// Checks IP address formats.
         /// </summary>