package main import ( "os" "path/filepath" "testing" ) func TestReadJournalOperation(t *testing.T) { path := filepath.Join(t.TempDir(), "status.json") if err := os.WriteFile(path, []byte(`{"format_version":1,"operation_id":"fw-123","state":"validated","ignored":"allowed"}`), 0o600); err != nil { t.Fatal(err) } identity, err := readJournalOperation(path) if err != nil || identity.OperationID != "fw-123" || identity.State != "validated" { t.Fatalf("identity = %+v, error = %v", identity, err) } } func TestReadJournalOperationRejectsMissingOrTrailingIdentity(t *testing.T) { for name, content := range map[string]string{ "missing-operation": `{"state":"validated"}`, "missing-state": `{"operation_id":"fw-123"}`, "trailing-json": `{"operation_id":"fw-123","state":"validated"}{}`, } { t.Run(name, func(t *testing.T) { path := filepath.Join(t.TempDir(), "status.json") if err := os.WriteFile(path, []byte(content), 0o600); err != nil { t.Fatal(err) } if _, err := readJournalOperation(path); err == nil { t.Fatal("invalid journal was accepted") } }) } }