import { describe, expect, it } from "vitest"; import { validateDottedDecimalIPv4Input, validateIPv4AddressInput } from "./ipv4.js"; describe("shared/net/ipv4", () => { it("requires a value for custom bind mode", () => { expect(validateDottedDecimalIPv4Input(undefined)).toBe( "IP address is required for custom bind mode", ); expect(validateDottedDecimalIPv4Input("")).toBe("IP address is required for custom bind mode"); expect(validateDottedDecimalIPv4Input(" ")).toBe( "Invalid IPv4 address (e.g., 192.168.1.100)", ); }); it("accepts canonical dotted-decimal ipv4 only", () => { expect(validateDottedDecimalIPv4Input("0.0.0.0")).toBeUndefined(); expect(validateDottedDecimalIPv4Input("192.168.1.100")).toBeUndefined(); expect(validateDottedDecimalIPv4Input(" 192.168.1.100 ")).toBeUndefined(); expect(validateDottedDecimalIPv4Input("0177.0.0.1")).toBe( "Invalid IPv4 address (e.g., 192.168.1.100)", ); expect(validateDottedDecimalIPv4Input("[192.168.1.100]")).toBeUndefined(); expect(validateDottedDecimalIPv4Input("127.1")).toBe( "Invalid IPv4 address (e.g., 192.168.1.100)", ); expect(validateDottedDecimalIPv4Input("example.com")).toBe( "Invalid IPv4 address (e.g., 192.168.1.100)", ); }); it("keeps the backward-compatible alias wired to the same validation", () => { expect(validateIPv4AddressInput("192.168.1.100")).toBeUndefined(); expect(validateIPv4AddressInput("bad-ip")).toBe("Invalid IPv4 address (e.g., 192.168.1.100)"); }); });