69 lines
2 KiB
Go
69 lines
2 KiB
Go
|
|
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))
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
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)
|
||
|
|
}
|
||
|
|
}
|