A Docker-like CLI and HTTP API for managing headless VMs
1import { assertEquals } from "@std/assert";
2import { stringify } from "@std/yaml";
3import { snakeCase } from "./xorriso.ts";
4
5Deno.test("Serialize Seed Data to YAML", () => {
6 const seed = {
7 metaData: {
8 instanceId: "vmx-12345",
9 localHostname: "vmx-test",
10 },
11 userData: {
12 users: [
13 {
14 name: "testuser",
15 shell: "/bin/bash",
16 sudo: ["ALL=(ALL) NOPASSWD:ALL"],
17 sshAuthorizedKeys: ["ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAr..."],
18 },
19 ],
20 sshPwauth: false,
21 packages: ["curl", "git"],
22 },
23 };
24
25 const expectedMetaDataYAML = `instance_id: vmx-12345
26local_hostname: vmx-test
27`;
28
29 const expectedUserDataYAML = `users:
30 - name: testuser
31 shell: /bin/bash
32 sudo:
33 - 'ALL=(ALL) NOPASSWD:ALL'
34 ssh_authorized_keys:
35 - ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAr...
36ssh_pwauth: false
37packages:
38 - curl
39 - git
40`;
41
42 assertEquals(stringify(snakeCase(seed.metaData)), expectedMetaDataYAML);
43 assertEquals(stringify(snakeCase(seed.userData)), expectedUserDataYAML);
44});