MCPcopy Create free account
hub / github.com/compozy/agh / TestConfigValidateReportsInvalidConfigAsJSON

Function TestConfigValidateReportsInvalidConfigAsJSON

internal/cli/config_test.go:423–520  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

421}
422
423func TestConfigValidateReportsInvalidConfigAsJSON(t *testing.T) {
424 t.Run("Should emit an invalid JSON record for TOML parse errors", func(t *testing.T) {
425 t.Parallel()
426
427 homePaths, err := aghconfig.ResolveHomePathsFrom(t.TempDir())
428 if err != nil {
429 t.Fatalf("ResolveHomePathsFrom() error = %v", err)
430 }
431 if err := os.MkdirAll(filepath.Dir(homePaths.ConfigFile), 0o755); err != nil {
432 t.Fatalf("os.MkdirAll(config dir) error = %v", err)
433 }
434 if err := os.WriteFile(homePaths.ConfigFile, []byte("[[mcp_servers\nname = \"oops\"\n"), 0o600); err != nil {
435 t.Fatalf("os.WriteFile(config) error = %v", err)
436 }
437
438 deps := newTestDeps(t, &stubClient{})
439 deps.resolveHome = func() (aghconfig.HomePaths, error) {
440 return homePaths, nil
441 }
442 deps.resolveHomeForWorkspace = func(string) (aghconfig.HomePaths, error) {
443 return homePaths, nil
444 }
445 stdout, _, err := executeRootCommand(t, deps, "config", "validate", "-o", "json")
446 if err == nil {
447 t.Fatal("config validate error = nil, want invalid config failure")
448 }
449
450 var record configValidateRecord
451 if err := json.Unmarshal([]byte(stdout), &record); err != nil {
452 t.Fatalf("json.Unmarshal(config validate invalid) error = %v; stdout=%s", err, stdout)
453 }
454 if record.Status != "invalid" {
455 t.Fatalf("Status = %q, want invalid", record.Status)
456 }
457 if len(record.Errors) != 1 {
458 t.Fatalf("Errors = %#v, want one config parse error", record.Errors)
459 }
460 got := record.Errors[0]
461 if got.Code != "config.parse" {
462 t.Fatalf("Errors[0].Code = %q, want config.parse", got.Code)
463 }
464 if got.File != homePaths.ConfigFile {
465 t.Fatalf("Errors[0].File = %q, want %q", got.File, homePaths.ConfigFile)
466 }
467 if got.Line == 0 || strings.TrimSpace(got.Message) == "" {
468 t.Fatalf("Errors[0] = %#v, want line and message", got)
469 }
470 })
471
472 t.Run("Should include config path for validation errors", func(t *testing.T) {
473 t.Parallel()
474
475 homePaths, err := aghconfig.ResolveHomePathsFrom(t.TempDir())
476 if err != nil {
477 t.Fatalf("ResolveHomePathsFrom() error = %v", err)
478 }
479 if err := os.MkdirAll(filepath.Dir(homePaths.ConfigFile), 0o755); err != nil {
480 t.Fatalf("os.MkdirAll(config dir) error = %v", err)

Callers

nothing calls this directly

Calls 4

newTestDepsFunction · 0.85
executeRootCommandFunction · 0.85
RunMethod · 0.65
WriteFileMethod · 0.65

Tested by

no test coverage detected