IPAddressExtTest.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System.Net;
  2. using Content.Server.IP;
  3. using NUnit.Framework;
  4. namespace Content.Tests.Server.Utility
  5. {
  6. public sealed class IPAddressExtTest
  7. {
  8. [Test]
  9. [TestCase("192.168.5.85/24", "192.168.5.1")]
  10. [TestCase("192.168.5.85/24", "192.168.5.254")]
  11. [TestCase("10.128.240.50/30", "10.128.240.48")]
  12. [TestCase("10.128.240.50/30", "10.128.240.49")]
  13. [TestCase("10.128.240.50/30", "10.128.240.50")]
  14. [TestCase("10.128.240.50/30", "10.128.240.51")]
  15. public void IpV4SubnetMaskMatchesValidIpAddress(string netMask, string ipAddress)
  16. {
  17. var ipAddressObj = IPAddress.Parse(ipAddress);
  18. Assert.That(ipAddressObj.IsInSubnet(netMask), Is.True);
  19. }
  20. [Test]
  21. [TestCase("192.168.5.85/24", "192.168.4.254")]
  22. [TestCase("192.168.5.85/24", "191.168.5.254")]
  23. [TestCase("10.128.240.50/30", "10.128.240.47")]
  24. [TestCase("10.128.240.50/30", "10.128.240.52")]
  25. [TestCase("10.128.240.50/30", "10.128.239.50")]
  26. [TestCase("10.128.240.50/30", "10.127.240.51")]
  27. [TestCase("10.128.240.50/30", "2001:0DB8:ABCD:0012:0000:0000:0000:0000")]
  28. public void IpV4SubnetMaskDoesNotMatchInvalidIpAddress(string netMask, string ipAddress)
  29. {
  30. var ipAddressObj = IPAddress.Parse(ipAddress);
  31. Assert.That(ipAddressObj.IsInSubnet(netMask), Is.False);
  32. }
  33. // ReSharper disable StringLiteralTypo
  34. [Test]
  35. [TestCase("2001:db8:abcd:0012::0/64", "2001:0DB8:ABCD:0012:0000:0000:0000:0000")]
  36. [TestCase("2001:db8:abcd:0012::0/64", "2001:0DB8:ABCD:0012:FFFF:FFFF:FFFF:FFFF")]
  37. [TestCase("2001:db8:abcd:0012::0/64", "2001:0DB8:ABCD:0012:0001:0000:0000:0000")]
  38. [TestCase("2001:db8:abcd:0012::0/64", "2001:0DB8:ABCD:0012:FFFF:FFFF:FFFF:FFF0")]
  39. [TestCase("2001:db8:abcd:0012::0/128", "2001:0DB8:ABCD:0012:0000:0000:0000:0000")]
  40. public void IpV6SubnetMaskMatchesValidIpAddress(string netMask, string ipAddress)
  41. {
  42. var ipAddressObj = IPAddress.Parse(ipAddress);
  43. Assert.That(ipAddressObj.IsInSubnet(netMask), Is.True);
  44. }
  45. [Test]
  46. [TestCase("2001:db8:abcd:0012::0/64", "2001:0DB8:ABCD:0011:FFFF:FFFF:FFFF:FFFF")]
  47. [TestCase("2001:db8:abcd:0012::0/64", "2001:0DB8:ABCD:0013:0000:0000:0000:0000")]
  48. [TestCase("2001:db8:abcd:0012::0/64", "2001:0DB8:ABCD:0013:0001:0000:0000:0000")]
  49. [TestCase("2001:db8:abcd:0012::0/64", "2001:0DB8:ABCD:0011:FFFF:FFFF:FFFF:FFF0")]
  50. [TestCase("2001:db8:abcd:0012::0/128", "2001:0DB8:ABCD:0012:0000:0000:0000:0001")]
  51. [TestCase("2001:db8:abcd:0012::0/128", "10.128.239.50")]
  52. // ReSharper restore StringLiteralTypo
  53. public void IpV6SubnetMaskDoesNotMatchInvalidIpAddress(string netMask, string ipAddress)
  54. {
  55. var ipAddressObj = IPAddress.Parse(ipAddress);
  56. Assert.That(ipAddressObj.IsInSubnet(netMask), Is.False);
  57. }
  58. }
  59. }