69 lines
2.6 KiB
C#
69 lines
2.6 KiB
C#
using System.Net;
|
|
using System.Net.Sockets;
|
|
|
|
namespace NitroxModel.Helper;
|
|
|
|
[TestClass]
|
|
public class NetHelperTest
|
|
{
|
|
[TestMethod]
|
|
public void ShouldMatchPrivateIps()
|
|
{
|
|
// Tested subnet ranges that are reserved for private networks:
|
|
// 10.0.0.0/8
|
|
// 127.0.0.0/8
|
|
// 172.16.0.0/12
|
|
// 192.0.0.0/24
|
|
// 192.168.0.0/16
|
|
// 198.18.0.0/15
|
|
|
|
IPAddress.Parse("10.0.0.0").IsPrivate().Should().BeTrue();
|
|
IPAddress.Parse("10.0.0.255").IsPrivate().Should().BeTrue();
|
|
IPAddress.Parse("172.31.255.255").IsPrivate().Should().BeTrue();
|
|
IPAddress.Parse("172.31.255.255").IsPrivate().Should().BeTrue();
|
|
IPAddress.Parse("192.0.0.255").IsPrivate().Should().BeTrue();
|
|
IPAddress.Parse("192.168.2.1").IsPrivate().Should().BeTrue();
|
|
IPAddress.Parse("192.168.2.254").IsPrivate().Should().BeTrue();
|
|
IPAddress.Parse("192.168.2.255").IsPrivate().Should().BeTrue();
|
|
IPAddress.Parse("198.18.0.1").IsPrivate().Should().BeTrue();
|
|
IPAddress.Parse("198.19.255.255").IsPrivate().Should().BeTrue();
|
|
|
|
IPAddress.Parse("9.255.255.255").IsPrivate().Should().BeFalse();
|
|
IPAddress.Parse("91.63.176.12").IsPrivate().Should().BeFalse();
|
|
IPAddress.Parse("172.32.0.1").IsPrivate().Should().BeFalse();
|
|
IPAddress.Parse("192.0.1.0").IsPrivate().Should().BeFalse();
|
|
IPAddress.Parse("198.17.255.255").IsPrivate().Should().BeFalse();
|
|
IPAddress.Parse("198.20.0.0").IsPrivate().Should().BeFalse();
|
|
}
|
|
|
|
[TestMethod]
|
|
public void ShouldMatchLocalhostIps()
|
|
{
|
|
IPAddress GetSlightlyDifferentIp(IPAddress address)
|
|
{
|
|
if (address.AddressFamily != AddressFamily.InterNetwork)
|
|
{
|
|
throw new Exception("Only supports IPv4");
|
|
}
|
|
byte[] bytes = address.GetAddressBytes();
|
|
unchecked
|
|
{
|
|
while (bytes[3] is < 1 or > 253)
|
|
{
|
|
bytes[3]++;
|
|
}
|
|
bytes[3]++;
|
|
}
|
|
return new IPAddress(bytes);
|
|
}
|
|
|
|
IPAddress.Parse("127.0.0.1").IsLocalhost().Should().BeTrue();
|
|
IPAddress.Parse("127.0.0.2").IsLocalhost().Should().BeTrue();
|
|
IPAddress.Parse("192.168.0.255").IsLocalhost().Should().BeFalse();
|
|
NetHelper.GetLanIp().IsLocalhost().Should().BeTrue();
|
|
IPAddress differentIp = GetSlightlyDifferentIp(NetHelper.GetLanIp());
|
|
differentIp.Should().NotBeEquivalentTo(NetHelper.GetLanIp());
|
|
differentIp.IsLocalhost().Should().BeFalse();
|
|
}
|
|
}
|