Files
nix-ip-utils/tests/validate-tests.nix
2026-02-20 20:07:52 +00:00

267 lines
5.3 KiB
Nix

{ lib, validate }:
let
inherit (lib) runTests;
in runTests {
testIsValidIpBasic = {
expr = validate.isValidIp "192.168.1.1";
expected = true;
};
testIsValidIpZeros = {
expr = validate.isValidIp "0.0.0.0";
expected = true;
};
testIsValidIpMax = {
expr = validate.isValidIp "255.255.255.255";
expected = true;
};
testIsValidIpInvalidOctet = {
expr = validate.isValidIp "256.1.1.1";
expected = false;
};
testIsValidIpTooFewOctets = {
expr = validate.isValidIp "192.168.1";
expected = false;
};
testIsValidIpTooManyOctets = {
expr = validate.isValidIp "192.168.1.1.1";
expected = false;
};
testIsValidIpEmpty = {
expr = validate.isValidIp "";
expected = false;
};
testIsValidIpLetters = {
expr = validate.isValidIp "abc.def.ghi.jkl";
expected = false;
};
testIsValidIpNegative = {
expr = validate.isValidIp "-1.0.0.0";
expected = false;
};
testIsValidIpNotString = {
expr = validate.isValidIp 12345;
expected = false;
};
testIsValidCidrBasic = {
expr = validate.isValidCidr "192.168.1.0/24";
expected = true;
};
testIsValidCidrSlash0 = {
expr = validate.isValidCidr "0.0.0.0/0";
expected = true;
};
testIsValidCidrSlash32 = {
expr = validate.isValidCidr "192.168.1.1/32";
expected = true;
};
testIsValidCidrInvalidPrefix = {
expr = validate.isValidCidr "192.168.1.0/33";
expected = false;
};
testIsValidCidrNoPrefix = {
expr = validate.isValidCidr "192.168.1.0";
expected = false;
};
testIsValidCidrInvalidIp = {
expr = validate.isValidCidr "256.168.1.0/24";
expected = false;
};
testIsValidCidrEmpty = {
expr = validate.isValidCidr "";
expected = false;
};
testIsValidCidrNotString = {
expr = validate.isValidCidr 12345;
expected = false;
};
testTryParseIpValid = {
expr = validate.tryParseIp "192.168.1.1";
expected = 3232235777;
};
testTryParseIpInvalid = {
expr = validate.tryParseIp "invalid";
expected = null;
};
testTryParseCidrValid = {
expr = validate.tryParseCidr "192.168.1.0/24";
expected = { address = 3232235776; prefixLen = 24; };
};
testTryParseCidrInvalid = {
expr = validate.tryParseCidr "invalid";
expected = null;
};
testIsPrivate10 = {
expr = validate.isPrivate "10.1.2.3";
expected = true;
};
testIsPrivate172 = {
expr = validate.isPrivate "172.16.5.10";
expected = true;
};
testIsPrivate172Edge = {
expr = validate.isPrivate "172.31.255.255";
expected = true;
};
testIsPrivate172Outside = {
expr = validate.isPrivate "172.32.0.0";
expected = false;
};
testIsPrivate192 = {
expr = validate.isPrivate "192.168.100.50";
expected = true;
};
testIsPrivatePublic = {
expr = validate.isPrivate "8.8.8.8";
expected = false;
};
testIsLoopback127 = {
expr = validate.isLoopback "127.0.0.1";
expected = true;
};
testIsLoopback127Any = {
expr = validate.isLoopback "127.255.255.254";
expected = true;
};
testIsLoopbackFalse = {
expr = validate.isLoopback "128.0.0.1";
expected = false;
};
testIsLinkLocalTrue = {
expr = validate.isLinkLocal "169.254.1.1";
expected = true;
};
testIsLinkLocalFalse = {
expr = validate.isLinkLocal "169.255.1.1";
expected = false;
};
testIsMulticastTrue = {
expr = validate.isMulticast "224.0.0.1";
expected = true;
};
testIsMulticastMax = {
expr = validate.isMulticast "239.255.255.255";
expected = true;
};
testIsMulticastFalse = {
expr = validate.isMulticast "223.255.255.255";
expected = false;
};
testIsBroadcastTrue = {
expr = validate.isBroadcast "255.255.255.255";
expected = true;
};
testIsBroadcastFalse = {
expr = validate.isBroadcast "255.255.255.254";
expected = false;
};
testIsUnspecifiedTrue = {
expr = validate.isUnspecified "0.0.0.0";
expected = true;
};
testIsUnspecifiedFalse = {
expr = validate.isUnspecified "0.0.0.1";
expected = false;
};
testIsDocumentation192 = {
expr = validate.isDocumentation "192.0.2.1";
expected = true;
};
testIsDocumentation198 = {
expr = validate.isDocumentation "198.51.100.50";
expected = true;
};
testIsDocumentation203 = {
expr = validate.isDocumentation "203.0.113.100";
expected = true;
};
testIsDocumentationFalse = {
expr = validate.isDocumentation "192.0.3.1";
expected = false;
};
testIsGlobalUnicastPublic = {
expr = validate.isGlobalUnicast "8.8.8.8";
expected = true;
};
testIsGlobalUnicastPrivate = {
expr = validate.isGlobalUnicast "192.168.1.1";
expected = false;
};
testIsGlobalUnicastLoopback = {
expr = validate.isGlobalUnicast "127.0.0.1";
expected = false;
};
testClassifyLoopback = {
expr = validate.classify "127.0.0.1";
expected = "loopback";
};
testClassifyPrivate = {
expr = validate.classify "192.168.1.1";
expected = "private";
};
testClassifyLinkLocal = {
expr = validate.classify "169.254.1.1";
expected = "link-local";
};
testClassifyMulticast = {
expr = validate.classify "224.0.0.1";
expected = "multicast";
};
testClassifyGlobal = {
expr = validate.classify "8.8.8.8";
expected = "global-unicast";
};
}