package config import ( "errors" "os" "path/filepath" "testing" ) const edgecoreWithReportEventTrue = `apiVersion: edgecore.config.kube.io/v1alpha2 kind: EdgeCore edged: reportEvent: true nodeStatusUpdateFrequency: 10 ` const edgecoreWithReportEventFalse = `apiVersion: edgecore.config.kube.io/v1alpha2 kind: EdgeCore edged: reportEvent: false ` const edgecoreWithoutReportEvent = `apiVersion: edgecore.config.kube.io/v1alpha2 kind: EdgeCore edged: nodeStatusUpdateFrequency: 10 ` func writeFixture(t *testing.T, content string) string { t.Helper() path := filepath.Join(t.TempDir(), "edgecore.yaml") if err := os.WriteFile(path, []byte(content), 0o600); err != nil { t.Fatal(err) } return path } func TestReportEventTrue(t *testing.T) { report, present, err := ReportEvent(writeFixture(t, edgecoreWithReportEventTrue)) if err != nil { t.Fatalf("ReportEvent: %v", err) } if !present || !report { t.Fatalf("expected (true, true), got (%v, %v)", report, present) } } func TestReportEventFalse(t *testing.T) { report, present, err := ReportEvent(writeFixture(t, edgecoreWithReportEventFalse)) if err != nil { t.Fatalf("ReportEvent: %v", err) } if !present || report { t.Fatalf("expected (false, true), got (%v, %v)", report, present) } } func TestReportEventMissing(t *testing.T) { report, present, err := ReportEvent(writeFixture(t, edgecoreWithoutReportEvent)) if err != nil { t.Fatalf("ReportEvent: %v", err) } if present || report { t.Fatalf("expected (false, false), got (%v, %v)", report, present) } } func TestReportEventMissingFile(t *testing.T) { _, _, err := ReportEvent(filepath.Join(t.TempDir(), "does-not-exist.yaml")) if !errors.Is(err, ErrConfigNotFound) { t.Fatalf("expected ErrConfigNotFound, got %v", err) } } func TestReportEventMalformed(t *testing.T) { _, _, err := ReportEvent(writeFixture(t, "not: [valid")) if err == nil { t.Fatal("expected parse error, got nil") } } func TestReportEventNonBoolean(t *testing.T) { _, _, err := ReportEvent(writeFixture(t, "edged:\n reportEvent: \"yes\"")) if err == nil { t.Fatal("expected type error, got nil") } }