64 lines
2.9 KiB
C#
64 lines
2.9 KiB
C#
using System.Net;
|
|
using Content.Server.IP;
|
|
using NUnit.Framework;
|
|
|
|
namespace Content.Tests.Server.Utility
|
|
{
|
|
public sealed class IPAddressExtTest
|
|
{
|
|
[Test]
|
|
[TestCase("192.168.5.85/24", "192.168.5.1")]
|
|
[TestCase("192.168.5.85/24", "192.168.5.254")]
|
|
[TestCase("10.128.240.50/30", "10.128.240.48")]
|
|
[TestCase("10.128.240.50/30", "10.128.240.49")]
|
|
[TestCase("10.128.240.50/30", "10.128.240.50")]
|
|
[TestCase("10.128.240.50/30", "10.128.240.51")]
|
|
public void IpV4SubnetMaskMatchesValidIpAddress(string netMask, string ipAddress)
|
|
{
|
|
var ipAddressObj = IPAddress.Parse(ipAddress);
|
|
Assert.That(ipAddressObj.IsInSubnet(netMask), Is.True);
|
|
}
|
|
|
|
[Test]
|
|
[TestCase("192.168.5.85/24", "192.168.4.254")]
|
|
[TestCase("192.168.5.85/24", "191.168.5.254")]
|
|
[TestCase("10.128.240.50/30", "10.128.240.47")]
|
|
[TestCase("10.128.240.50/30", "10.128.240.52")]
|
|
[TestCase("10.128.240.50/30", "10.128.239.50")]
|
|
[TestCase("10.128.240.50/30", "10.127.240.51")]
|
|
[TestCase("10.128.240.50/30", "2001:0DB8:ABCD:0012:0000:0000:0000:0000")]
|
|
public void IpV4SubnetMaskDoesNotMatchInvalidIpAddress(string netMask, string ipAddress)
|
|
{
|
|
var ipAddressObj = IPAddress.Parse(ipAddress);
|
|
Assert.That(ipAddressObj.IsInSubnet(netMask), Is.False);
|
|
}
|
|
|
|
// ReSharper disable StringLiteralTypo
|
|
[Test]
|
|
[TestCase("2001:db8:abcd:0012::0/64", "2001:0DB8:ABCD:0012:0000:0000:0000:0000")]
|
|
[TestCase("2001:db8:abcd:0012::0/64", "2001:0DB8:ABCD:0012:FFFF:FFFF:FFFF:FFFF")]
|
|
[TestCase("2001:db8:abcd:0012::0/64", "2001:0DB8:ABCD:0012:0001:0000:0000:0000")]
|
|
[TestCase("2001:db8:abcd:0012::0/64", "2001:0DB8:ABCD:0012:FFFF:FFFF:FFFF:FFF0")]
|
|
[TestCase("2001:db8:abcd:0012::0/128", "2001:0DB8:ABCD:0012:0000:0000:0000:0000")]
|
|
public void IpV6SubnetMaskMatchesValidIpAddress(string netMask, string ipAddress)
|
|
{
|
|
var ipAddressObj = IPAddress.Parse(ipAddress);
|
|
Assert.That(ipAddressObj.IsInSubnet(netMask), Is.True);
|
|
}
|
|
|
|
[Test]
|
|
[TestCase("2001:db8:abcd:0012::0/64", "2001:0DB8:ABCD:0011:FFFF:FFFF:FFFF:FFFF")]
|
|
[TestCase("2001:db8:abcd:0012::0/64", "2001:0DB8:ABCD:0013:0000:0000:0000:0000")]
|
|
[TestCase("2001:db8:abcd:0012::0/64", "2001:0DB8:ABCD:0013:0001:0000:0000:0000")]
|
|
[TestCase("2001:db8:abcd:0012::0/64", "2001:0DB8:ABCD:0011:FFFF:FFFF:FFFF:FFF0")]
|
|
[TestCase("2001:db8:abcd:0012::0/128", "2001:0DB8:ABCD:0012:0000:0000:0000:0001")]
|
|
[TestCase("2001:db8:abcd:0012::0/128", "10.128.239.50")]
|
|
// ReSharper restore StringLiteralTypo
|
|
public void IpV6SubnetMaskDoesNotMatchInvalidIpAddress(string netMask, string ipAddress)
|
|
{
|
|
var ipAddressObj = IPAddress.Parse(ipAddress);
|
|
Assert.That(ipAddressObj.IsInSubnet(netMask), Is.False);
|
|
}
|
|
}
|
|
}
|