Files
tbd-station-14/Content.Tests/Server/Utility/IPAddressExtTest.cs
2022-02-16 18:23:23 +11:00

62 lines
2.8 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")]
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")]
// ReSharper restore StringLiteralTypo
public void IpV6SubnetMaskDoesNotMatchInvalidIpAddress(string netMask, string ipAddress)
{
var ipAddressObj = IPAddress.Parse(ipAddress);
Assert.That(ipAddressObj.IsInSubnet(netMask), Is.False);
}
}
}