NetworkManagerTests.cs 2.9 KB

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