Files
sbc-sip-sidecar/test/utils.js
Markus Frindt b190d8a312 improvement of ipv4 regex and test cases (#73)
* improvement of ipv4 regex and test cases

* require utils test

* change example

---------

Co-authored-by: Markus Frindt <m.frindt@cognigy.com>
2024-08-21 11:47:06 -04:00

43 lines
2.3 KiB
JavaScript

const test = require('tape');
const clearModule = require('clear-module');
const { isValidIPv4 } = require('../lib/utils');
process.on('unhandledRejection', (reason, p) => {
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);
});
const testData = [
{ input: "192.168.1.1", expectedOutput: true, description: "Valid IPv4 address" },
{ input: "10.0.0.1", expectedOutput: true, description: "Valid IPv4 address" },
{ input: "255.255.255.255", expectedOutput: true, description: "Valid IPv4 address (broadcast)" },
{ input: "0.0.0.0", expectedOutput: true, description: "Valid IPv4 address (unspecified)" },
{ input: "127.0.0.1", expectedOutput: true, description: "Valid IPv4 address (localhost)" },
{ input: "1.2.3.4", expectedOutput: true, description: "Valid IPv4 address" },
{ input: "192.168.0.255", expectedOutput: true, description: "Valid IPv4 address" },
{ input: "255.0.0.0", expectedOutput: true, description: "Valid IPv4 address" },
{ input: "", expectedOutput: false, description: "Empty string" },
{ input: "192.168.1", expectedOutput: false, description: "Missing octet" },
{ input: "192.168.1.256", expectedOutput: false, description: "Octet out of range" },
{ input: "192.168.1.2.3", expectedOutput: false, description: "Too many octets" },
{ input: "192.168.a.1", expectedOutput: false, description: "Non-numeric character" },
{ input: "192..1.1", expectedOutput: false, description: "Consecutive dots" },
{ input: ".192.168.1.1", expectedOutput: false, description: "Leading dot" },
{ input: "192.168.1.1.", expectedOutput: false, description: "Trailing dot" },
{ input: " 192.168.1.1 ", expectedOutput: false, description: "Leading/trailing spaces" },
{ input: "192,168,1,1", expectedOutput: false, description: "Commas instead of dots" },
{ input: "2001:0db8:85a3:0000:0000:8a2e:0370:7334", expectedOutput: false, description: "IPv6 address" },
{ input: "localhost", expectedOutput: false, description: "Hostname, not IP" },
{ input: "10.0.0.1/24", expectedOutput: false, description: "IPv4 with subnet mask" },
{ input: "991240413047.primary.companyflex.de:0", expectedOutput: false, description: "Hostname with port, not IP" },
];
test('register tests', (t) => {
clearModule.all();
for (const data of testData) {
t.equal(isValidIPv4(data.input), data.expectedOutput, data.description);
}
t.end();
});