package cluster import ( "os" "path/filepath" "testing" ) func TestEnsureNodeID_GeneratesAndPersists(t *testing.T) { dir := t.TempDir() path := filepath.Join(dir, "node-id") id1, err := EnsureNodeID(path) if err != nil { t.Fatalf("first call: %v", err) } if !validNodeID(id1) { t.Fatalf("invalid node id minted: %q", id1) } id2, err := EnsureNodeID(path) if err != nil { t.Fatalf("second call: %v", err) } if id1 != id2 { t.Errorf("node id should be stable: %q vs %q", id1, id2) } } func TestEnsureNodeID_RejectsCorruptFile(t *testing.T) { dir := t.TempDir() path := filepath.Join(dir, "node-id") if err := os.WriteFile(path, []byte("not a real id\n"), 0o640); err != nil { t.Fatal(err) } id, err := EnsureNodeID(path) if err != nil { t.Fatalf("EnsureNodeID: %v", err) } if !validNodeID(id) { t.Errorf("expected fresh id when file was junk, got %q", id) } // Re-read should now match the regenerated id. id2, _ := EnsureNodeID(path) if id != id2 { t.Errorf("regenerated id not persisted: %q vs %q", id, id2) } }