import { assertEquals } from "@std/assert"; import { Effect, pipe } from "effect"; import { ALMA_LINUX_IMG_URL, ALPINE_ISO_URL, DEBIAN_CLOUD_IMG_URL, DEBIAN_ISO_URL, FEDORA_COREOS_IMG_URL, GENTOO_IMG_URL, NIXOS_ISO_URL, ROCKY_LINUX_IMG_URL, UBUNTU_CLOUD_IMG_URL, UBUNTU_ISO_URL, } from "./constants.ts"; import { constructAlmaLinuxImageURL, constructAlpineImageURL, constructCoreOSImageURL, constructDebianImageURL, constructGentooImageURL, constructNixOSImageURL, constructRockyLinuxImageURL, constructUbuntuImageURL, } from "./utils.ts"; Deno.test("Test Default Fedora CoreOS Image URL", () => { const url = Effect.runSync( pipe( constructCoreOSImageURL("fedora-coreos"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals(url, FEDORA_COREOS_IMG_URL); }); Deno.test("Test Default Fedora CoreOS Image URL", () => { const url = Effect.runSync( pipe( constructCoreOSImageURL("coreos"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals(url, FEDORA_COREOS_IMG_URL); }); Deno.test("Test Specific Fedora CoreOS Version", () => { const url = Effect.runSync( pipe( constructCoreOSImageURL("fedora-coreos-43.20251024.2.0"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals( url, "https://builds.coreos.fedoraproject.org/prod/streams/stable/builds/43.20251024.2.0/" + `${Deno.build.arch}/fedora-coreos-43.20251024.2.0-qemu.${Deno.build.arch}.qcow2.xz`, ); }); Deno.test("Test invalid Fedora CoreOS Image Name", () => { const url = Effect.runSync( pipe( constructCoreOSImageURL("fedora-coreos-latest"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals(url, null); }); Deno.test("Test Default NixOS Image URL", () => { const url = Effect.runSync( pipe( constructNixOSImageURL("nixos"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals(url, NIXOS_ISO_URL); }); Deno.test("Test Specific NixOS Version", () => { const url = Effect.runSync( pipe( constructNixOSImageURL("nixos-24.05"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals( url, `https://channels.nixos.org/nixos-24.05/latest-nixos-minimal-${Deno.build.arch}-linux.iso`, ); }); Deno.test("Test invalid NixOS Image Name", () => { const url = Effect.runSync( pipe( constructNixOSImageURL("nixos-latest"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals(url, null); }); Deno.test("Test valid Gentoo Image Name", () => { const url = Effect.runSync( pipe( constructGentooImageURL("gentoo-20251116T161545Z"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); const arch = Deno.build.arch === "aarch64" ? "arm64" : "amd64"; assertEquals( url, `https://distfiles.gentoo.org/releases/${arch}/autobuilds/20251116T161545Z/di-${arch}-console-20251116T161545Z.qcow2`, ); }); Deno.test("Test valid Gentoo Image Name", () => { const url = Effect.runSync( pipe( constructGentooImageURL("gentoo"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals(url, GENTOO_IMG_URL); }); Deno.test("Test invalid Gentoo Image Name", () => { const url = Effect.runSync( pipe( constructGentooImageURL("gentoo-latest"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals(url, null); }); Deno.test("Test valid Debian Image Name", () => { const url = Effect.runSync( pipe( constructDebianImageURL("debian-13.2.0"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); const arch = Deno.build.arch === "aarch64" ? "arm64" : "amd64"; assertEquals( url, `https://cdimage.debian.org/debian-cd/current/${arch}/iso-cd/debian-13.2.0-${arch}-netinst.iso`, ); }); Deno.test("Test valid Debian Image Name", () => { const url = Effect.runSync( pipe( constructDebianImageURL("debian"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals(url, DEBIAN_ISO_URL); }); Deno.test("Test valid Debian Image Name (Cloud)", () => { const url = Effect.runSync( pipe( constructDebianImageURL("debian", true), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals(url, DEBIAN_CLOUD_IMG_URL); }); Deno.test("Test invalid Debian Image Name", () => { const url = Effect.runSync( pipe( constructDebianImageURL("debian-latest"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals(url, null); }); Deno.test("Test valid Alpine Image Name", () => { const url = Effect.runSync( pipe( constructAlpineImageURL("alpine-3.22.2"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals( url, `https://dl-cdn.alpinelinux.org/alpine/v3.22/releases/cloud/generic_alpine-3.22.2-${Deno.build.arch}-uefi-tiny-r0.qcow2`, ); }); Deno.test("Test valid Alpine Image Name", () => { const url = Effect.runSync( pipe( constructAlpineImageURL("alpine"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals(url, ALPINE_ISO_URL); }); Deno.test("Test invalid Alpine Image Name", () => { const url = Effect.runSync( pipe( constructAlpineImageURL("alpine-latest"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals(url, null); }); // ubuntu Deno.test("Test valid Ubuntu Image Name", () => { const url = Effect.runSync( pipe( constructUbuntuImageURL("ubuntu"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals(url, UBUNTU_ISO_URL); }); Deno.test("Test valid Ubuntu Image Name (Cloud)", () => { const url = Effect.runSync( pipe( constructUbuntuImageURL("ubuntu", true), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals(url, UBUNTU_CLOUD_IMG_URL); }); Deno.test("Test valid AlmaLinux Image Name", () => { const url = Effect.runSync( pipe( constructAlmaLinuxImageURL("almalinux"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals(url, ALMA_LINUX_IMG_URL); }); Deno.test("Test valid RockyLinux Image Name", () => { const url = Effect.runSync( pipe( constructRockyLinuxImageURL("rockylinux"), Effect.catchAll((_error) => Effect.succeed(null as string | null)), ), ); assertEquals(url, ROCKY_LINUX_IMG_URL); });