1
0

Added some IP address improvements

This commit is contained in:
2025-11-17 18:57:21 +01:00
parent feed3d5427
commit 48c30b5b83
3 changed files with 224 additions and 2 deletions

View File

@@ -1,4 +1,5 @@
using System.Net;
using System;
using System.Net;
namespace AMWD.Common.Tests.Extensions
{
@@ -82,5 +83,135 @@ namespace AMWD.Common.Tests.Extensions
// assert
Assert.AreEqual("255.255.255.255", decremented.ToString());
}
[TestMethod]
public void ShouldReturnCleanMappedIPAddressString()
{
// arrange
var mapped = IPAddress.Parse("::ffff:192.168.0.1");
// act
string cleaned = mapped.ToCleanString();
// assert
Assert.AreEqual("192.168.0.1", cleaned);
}
[TestMethod]
public void ShouldReturnCleanIPv6String()
{
// arrange
var ipv6 = IPAddress.Parse("2001:db8::1");
// act / assert
Assert.AreEqual("2001:db8::1", ipv6.ToCleanString());
}
[TestMethod]
[DataRow(0, "0.0.0.0")]
[DataRow(32, "255.255.255.255")]
[DataRow(8, "255.0.0.0")]
[DataRow(12, "255.240.0.0")]
[DataRow(24, "255.255.255.0")]
[DataRow(23, "255.255.254.0")]
public void ShouldReturnSubnetMask(int cidr, string expected)
{
// arrange
// act
string mask = cidr.ToSubnetMask().ToString();
// assert
Assert.AreEqual(expected, mask);
}
[TestMethod]
[DataRow(-1)]
[DataRow(33)]
public void ShouldThrowArgumentOutOfRangeExceptionForInvalidSubnetMask(int cidr)
{
// arrange
// act & assert
Assert.ThrowsExactly<ArgumentOutOfRangeException>(() => cidr.ToSubnetMask());
}
[TestMethod]
public void ShouldObfuscateIPv4()
{
// arrange
var ip = IPAddress.Parse("192.168.0.100");
// act
string ob = ip.ObfuscateIpAddress();
// assert
Assert.AreEqual("•.168.•.100", ob);
}
[TestMethod]
public void ShouldObfuscateIpAddressWithCustomString()
{
// arrange
var ip = IPAddress.Parse("10.0.0.5");
// act
string ob = ip.ObfuscateIpAddress("X");
// assert
Assert.AreEqual("X.0.X.5", ob);
}
[TestMethod]
public void ShouldNotObfuscateLocalhostIPv4()
{
// arrange
var ip = IPAddress.Parse("127.0.0.1");
// act
string ob = ip.ObfuscateIpAddress();
// assert
Assert.AreEqual("127.0.0.1", ob);
}
[TestMethod]
public void ShouldObfuscatedMappedIP()
{
// arrange
var ip = IPAddress.Parse("::ffff:10.0.0.5");
// act
string ob = ip.ObfuscateIpAddress("X");
// assert
Assert.AreEqual("X.0.X.5", ob);
}
[TestMethod]
public void ShouldObfuscateIPv6()
{
// arrange
var ip = IPAddress.Parse("2001:0db8:85a3:0000:0000:8a2e:0370:7334");
// act
string ob = ip.ObfuscateIpAddress();
// assert
Assert.AreEqual("•:db8:•::•:370:•", ob);
}
[TestMethod]
public void ShouldNotObfuscateLocalhostIPv6()
{
// arrange
var ip = IPAddress.Parse("::1");
// act
string ob = ip.ObfuscateIpAddress();
// assert
Assert.AreEqual("::1", ob);
}
}
}