package event import ( "encoding/json" "testing" ) func TestValidate_ValidEvent(t *testing.T) { raw := `{ "schema": {"name": "agentmon.event", "version": 1}, "event": { "id": "e1", "type": "run.start", "ts": "2026-01-17T00:00:00Z", "source": {"framework": "claude-code", "client_id": "c1", "host": "myhost"} } }` var m map[string]any _ = json.Unmarshal([]byte(raw), &m) err := Validate(m) if err != nil { t.Fatalf("expected no error, got %v", err) } } func TestValidate_MissingEventID(t *testing.T) { raw := `{ "schema": {"name": "agentmon.event", "version": 1}, "event": { "type": "run.start", "ts": "2026-01-17T00:00:00Z", "source": {"framework": "claude-code", "client_id": "c1", "host": "myhost"} } }` var m map[string]any _ = json.Unmarshal([]byte(raw), &m) err := Validate(m) if err == nil { t.Fatal("expected error for missing event.id") } } func TestValidate_InvalidType(t *testing.T) { raw := `{ "schema": {"name": "agentmon.event", "version": 1}, "event": { "id": "e1", "type": "invalid.type", "ts": "2026-01-17T00:00:00Z", "source": {"framework": "claude-code", "client_id": "c1", "host": "myhost"} } }` var m map[string]any _ = json.Unmarshal([]byte(raw), &m) err := Validate(m) if err == nil { t.Fatal("expected error for invalid type") } } func TestValidate_WrongSchemaName(t *testing.T) { raw := `{ "schema": {"name": "wrong.schema", "version": 1}, "event": { "id": "e1", "type": "run.start", "ts": "2026-01-17T00:00:00Z", "source": {"framework": "claude-code", "client_id": "c1", "host": "myhost"} } }` var m map[string]any _ = json.Unmarshal([]byte(raw), &m) err := Validate(m) if err == nil { t.Fatal("expected error for wrong schema name") } }