package daemon import ( "context" "os" "path/filepath" "testing" "banger/internal/model" "banger/internal/store" ) func TestEnsureDefaultImageUsesConfiguredDefaultRootfs(t *testing.T) { dir := t.TempDir() rootfs := filepath.Join(dir, "rootfs-docker.ext4") kernel := filepath.Join(dir, "vmlinux") for _, path := range []string{rootfs, kernel} { if err := os.WriteFile(path, []byte("test"), 0o644); err != nil { t.Fatalf("write %s: %v", path, err) } } db, err := store.Open(filepath.Join(dir, "state.db")) if err != nil { t.Fatalf("open store: %v", err) } t.Cleanup(func() { _ = db.Close() }) d := &Daemon{ config: model.DaemonConfig{ DefaultImageName: "default", DefaultRootfs: rootfs, DefaultKernel: kernel, }, store: db, } if err := d.ensureDefaultImage(context.Background()); err != nil { t.Fatalf("ensureDefaultImage: %v", err) } image, err := db.GetImageByName(context.Background(), "default") if err != nil { t.Fatalf("GetImageByName: %v", err) } if image.RootfsPath != rootfs { t.Fatalf("RootfsPath = %q, want %q", image.RootfsPath, rootfs) } if image.KernelPath != kernel { t.Fatalf("KernelPath = %q, want %q", image.KernelPath, kernel) } } func TestSetDNSUsesConfiguredMapDNSDataFile(t *testing.T) { t.Parallel() dataFile := filepath.Join(t.TempDir(), "mapdns", "records.json") runner := &scriptedRunner{ t: t, steps: []runnerStep{ { call: runnerCall{ name: "custom-mapdns", args: []string{"set", "--data-file", dataFile, "devbox.vm", "172.16.0.8"}, }, }, }, } d := &Daemon{ runner: runner, config: model.DaemonConfig{ MapDNSBin: "custom-mapdns", MapDNSDataFile: dataFile, }, } if err := d.setDNS(context.Background(), "devbox", "172.16.0.8"); err != nil { t.Fatalf("setDNS: %v", err) } runner.assertExhausted() } func TestSetDNSUsesMapDNSDefaultsWhenDataFileUnset(t *testing.T) { t.Parallel() runner := &scriptedRunner{ t: t, steps: []runnerStep{ { call: runnerCall{ name: "mapdns", args: []string{"set", "devbox.vm", "172.16.0.8"}, }, }, }, } d := &Daemon{ runner: runner, config: model.DaemonConfig{}, } if err := d.setDNS(context.Background(), "devbox", "172.16.0.8"); err != nil { t.Fatalf("setDNS: %v", err) } runner.assertExhausted() }