| import { assertEquals, assertThrows } from "./deps.ts"; |
| import { generateRandomIPv6 } from "../lib/helpers/ipv6Rotation.ts"; |
|
|
| Deno.test("generateRandomIPv6 - generates valid IPv6 addresses", () => { |
| const ipv6Block = "2001:db8::/32"; |
|
|
| |
| const addresses = new Set<string>(); |
| for (let i = 0; i < 100; i++) { |
| const addr = generateRandomIPv6(ipv6Block); |
| addresses.add(addr); |
|
|
| |
| |
| |
| const parts = addr.split(":"); |
| assertEquals(parts[0], "2001"); |
| assertEquals(parts[1], "db8"); |
| } |
|
|
| |
| |
| assertEquals(addresses.size > 50, true); |
| }); |
|
|
| Deno.test("generateRandomIPv6 - handles different block sizes", () => { |
| |
| const addr32 = generateRandomIPv6("2001:db8::/32"); |
| const parts32 = addr32.split(":"); |
| assertEquals(parts32[0], "2001"); |
| assertEquals(parts32[1], "db8"); |
|
|
| |
| const addr48 = generateRandomIPv6("2001:db8:1234::/48"); |
| const parts48 = addr48.split(":"); |
| assertEquals(parts48[0], "2001"); |
| assertEquals(parts48[1], "db8"); |
| assertEquals(parts48[2], "1234"); |
|
|
| |
| const addr64 = generateRandomIPv6("2001:db8::/64"); |
| const parts64 = addr64.split(":"); |
| assertEquals(parts64[0], "2001"); |
| assertEquals(parts64[1], "db8"); |
| }); |
|
|
| Deno.test("generateRandomIPv6 - throws error for invalid block size", () => { |
| assertThrows( |
| () => generateRandomIPv6("2001:db8::/129"), |
| Error, |
| "Invalid IPv6 block size", |
| ); |
|
|
| assertThrows( |
| () => generateRandomIPv6("2001:db8::/0"), |
| Error, |
| "Invalid IPv6 block size", |
| ); |
| }); |
|
|
| Deno.test("generateRandomIPv6 - handles compressed IPv6 notation", () => { |
| const ipv6Block = "2001:db8::/32"; |
| const addr = generateRandomIPv6(ipv6Block); |
|
|
| |
| const parts = addr.split(":"); |
| assertEquals(parts.length >= 3, true); |
| assertEquals(parts[0], "2001"); |
| assertEquals(parts[1], "db8"); |
| }); |
|
|