NetworkManagerTests.cs 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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 the 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. [InlineData("2001:abcd:abcd:6b40::0/60", "192.168.10.60")]
  45. public void InNetwork_False_Success(string network, string value)
  46. {
  47. var ip = IPAddress.Parse(value);
  48. var conf = new NetworkConfiguration()
  49. {
  50. EnableIPV6 = true,
  51. EnableIPV4 = true,
  52. LocalNetworkSubnets = network.Split(',')
  53. };
  54. using var nm = new NetworkManager(NetworkParseTests.GetMockConfig(conf), new NullLogger<NetworkManager>());
  55. Assert.False(nm.IsInLocalNetwork(ip));
  56. }
  57. }
  58. }