NetworkManagerTests.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System.Net;
  2. using Jellyfin.Networking.Configuration;
  3. using Jellyfin.Networking.Manager;
  4. using Microsoft.Extensions.Logging.Abstractions;
  5. using Xunit;
  6. namespace Jellyfin.Networking.Tests
  7. {
  8. public class NetworkManagerTests
  9. {
  10. /// <summary>
  11. /// Checks that the given IP address is in the specified network(s).
  12. /// </summary>
  13. /// <param name="network">Network address(es).</param>
  14. /// <param name="value">The IP to check.</param>
  15. [Theory]
  16. [InlineData("192.168.2.1/24", "192.168.2.123")]
  17. [InlineData("192.168.2.1/24, !192.168.2.122/32", "192.168.2.123")]
  18. [InlineData("fd23:184f:2029:0::/56", "fd23:184f:2029:0:3139:7386:67d7:d517")]
  19. [InlineData("fd23:184f:2029:0::/56, !fd23:184f:2029:0:3139:7386:67d7:d518/128", "fd23:184f:2029:0:3139:7386:67d7:d517")]
  20. public void InNetwork_True_Success(string network, string value)
  21. {
  22. var ip = IPAddress.Parse(value);
  23. var conf = new NetworkConfiguration()
  24. {
  25. EnableIPV6 = true,
  26. EnableIPV4 = true,
  27. LocalNetworkSubnets = network.Split(',')
  28. };
  29. using var networkManager = new NetworkManager(NetworkParseTests.GetMockConfig(conf), new NullLogger<NetworkManager>());
  30. Assert.True(networkManager.IsInLocalNetwork(ip));
  31. }
  32. /// <summary>
  33. /// Checks that thge given IP address is not in the network provided.
  34. /// </summary>
  35. /// <param name="network">Network address(es).</param>
  36. /// <param name="value">The IP to check.</param>
  37. [Theory]
  38. [InlineData("192.168.10.0/24", "192.168.11.1")]
  39. [InlineData("192.168.10.0/24, !192.168.10.60/32", "192.168.10.60")]
  40. [InlineData("192.168.10.0/24", "fd23:184f:2029:0:3139:7386:67d7:d517")]
  41. [InlineData("fd23:184f:2029:0::/56", "fd24:184f:2029:0:3139:7386:67d7:d517")]
  42. [InlineData("fd23:184f:2029:0::/56, !fd23:184f:2029:0:3139:7386:67d7:d500/120", "fd23:184f:2029:0:3139:7386:67d7:d517")]
  43. [InlineData("fd23:184f:2029:0::/56", "192.168.10.60")]
  44. public void InNetwork_False_Success(string network, string value)
  45. {
  46. var ip = IPAddress.Parse(value);
  47. var conf = new NetworkConfiguration()
  48. {
  49. EnableIPV6 = true,
  50. EnableIPV4 = true,
  51. LocalNetworkSubnets = network.Split(',')
  52. };
  53. using var nm = new NetworkManager(NetworkParseTests.GetMockConfig(conf), new NullLogger<NetworkManager>());
  54. Assert.False(nm.IsInLocalNetwork(ip));
  55. }
  56. }
  57. }