mirror of
https://github.com/itdoginfo/podkop.git
synced 2026-05-20 03:18:25 +03:00
42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
import { describe, it, expect } from 'vitest';
|
|
import { validateSubnet } from '../validateSubnet';
|
|
|
|
export const validSubnets = [
|
|
['Simple IP', '192.168.1.1'],
|
|
['With CIDR /24', '192.168.1.1/24'],
|
|
['CIDR /0', '10.0.0.1/0'],
|
|
['CIDR /32', '172.16.0.1/32'],
|
|
['Loopback', '127.0.0.1'],
|
|
['Broadcast with mask', '255.255.255.255/32'],
|
|
];
|
|
|
|
export const invalidSubnets = [
|
|
['Empty string', ''],
|
|
['Bad format letters', 'abc.def.ghi.jkl'],
|
|
['Octet too large', '300.1.1.1'],
|
|
['Negative octet', '-1.2.3.4'],
|
|
['Too many octets', '1.2.3.4.5'],
|
|
['Not enough octets', '192.168.1'],
|
|
['Leading zero octet', '01.2.3.4'],
|
|
['Invalid CIDR (too high)', '192.168.1.1/33'],
|
|
['Invalid CIDR (negative)', '192.168.1.1/-1'],
|
|
['CIDR not number', '192.168.1.1/abc'],
|
|
['Forbidden 0.0.0.0', '0.0.0.0'],
|
|
];
|
|
|
|
describe('validateSubnet', () => {
|
|
describe.each(validSubnets)('Valid subnet: %s', (_desc, subnet) => {
|
|
it(`returns {valid:true} for "${subnet}"`, () => {
|
|
const res = validateSubnet(subnet);
|
|
expect(res.valid).toBe(true);
|
|
});
|
|
});
|
|
|
|
describe.each(invalidSubnets)('Invalid subnet: %s', (_desc, subnet) => {
|
|
it(`returns {valid:false} for "${subnet}"`, () => {
|
|
const res = validateSubnet(subnet);
|
|
expect(res.valid).toBe(false);
|
|
});
|
|
});
|
|
});
|