package mcpgen import ( "os" "testing" fwmanifest "forge.lclr.dev/AI/mcp-framework/manifest" ) func TestGeneratedManifestFallsBackToEmbeddedRootManifest(t *testing.T) { previousDir, err := os.Getwd() if err != nil { t.Fatalf("Getwd returned error: %v", err) } if err := os.Chdir(t.TempDir()); err != nil { t.Fatalf("Chdir temp dir returned error: %v", err) } t.Cleanup(func() { if err := os.Chdir(previousDir); err != nil { t.Fatalf("restore working directory: %v", err) } }) manifestFile, source, err := LoadManifest(".") if err != nil { t.Fatalf("LoadManifest returned error: %v", err) } if source != fwmanifest.EmbeddedSource { t.Fatalf("source = %q, want %q", source, fwmanifest.EmbeddedSource) } if manifestFile.BinaryName != "email-mcp" { t.Fatalf("BinaryName = %q, want email-mcp", manifestFile.BinaryName) } if len(manifestFile.Config.Fields) != 3 { t.Fatalf("config fields = %d, want 3", len(manifestFile.Config.Fields)) } if manifestFile.SecretStore.BackendPolicy != "bitwarden-cli" { t.Fatalf("secret store backend policy = %q, want bitwarden-cli", manifestFile.SecretStore.BackendPolicy) } } func TestGeneratedConfigHelpersExposeIMAPResolutionFields(t *testing.T) { specs := ResolveFieldSpecs("work") if len(specs) != 3 { t.Fatalf("ResolveFieldSpecs returned %d fields, want 3", len(specs)) } if specs[0].Name != "host" || specs[0].EnvKey != "EMAIL_MCP_HOST" || specs[0].ConfigKey != "host" { t.Fatalf("host spec = %+v", specs[0]) } if specs[1].Name != "username" || specs[1].EnvKey != "EMAIL_MCP_USERNAME" || specs[1].ConfigKey != "username" { t.Fatalf("username spec = %+v", specs[1]) } if specs[2].Name != "password" || specs[2].EnvKey != "EMAIL_MCP_PASSWORD" || specs[2].SecretKey != "imap-password/work" { t.Fatalf("password spec = %+v", specs[2]) } } func TestGeneratedManifestPrefersRootFileWhenPresent(t *testing.T) { manifestFile, source, err := LoadManifest(".") if err != nil { t.Fatalf("LoadManifest returned error: %v", err) } if source == fwmanifest.EmbeddedSource { t.Fatalf("source = %q, want root manifest path", source) } if manifestFile.BinaryName != "email-mcp" { t.Fatalf("BinaryName = %q, want email-mcp", manifestFile.BinaryName) } }