123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- 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));
- }
- }
- }
|