metis/testing/inventory_test.go

57 lines
1.1 KiB
Go

package testing_test
import (
"os"
"path/filepath"
"testing"
"metis/pkg/inventory"
)
func TestLoadAndFindNode(t *testing.T) {
invPath := filepath.Join(t.TempDir(), "inventory.yaml")
if err := os.WriteFile(invPath, []byte(`
classes:
- name: rpi5
arch: arm64
os: ubuntu
image: file:///tmp/base.img
checksum: sha256:deadbeef
default_labels:
hardware: rpi5
nodes:
- name: titan-04
class: rpi5
hostname: titan-04
ip: 192.168.22.30
k3s_role: agent
`), 0o644); err != nil {
t.Fatal(err)
}
inv, err := inventory.Load(invPath)
if err != nil {
t.Fatalf("Load: %v", err)
}
node, class, err := inv.FindNode("titan-04")
if err != nil {
t.Fatalf("FindNode: %v", err)
}
if node.Hostname != "titan-04" {
t.Fatalf("hostname = %q", node.Hostname)
}
if class.Arch != "arm64" {
t.Fatalf("arch = %q", class.Arch)
}
}
func TestFindNodeMissing(t *testing.T) {
inv := inventory.Inventory{Classes: nil, Nodes: nil}
node, class, err := inv.FindNode("missing")
if err == nil {
t.Fatal("expected missing node error")
}
if node != nil || class != nil {
t.Fatalf("unexpected node/class: %#v %#v", node, class)
}
}