267 lines
5.3 KiB
Nix
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";
|
|
};
|
|
}
|