84 lines
2.4 KiB
Go
84 lines
2.4 KiB
Go
package cli
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
frameworkmanifest "gitea.lclr.dev/AI/mcp-framework/manifest"
|
|
frameworksecretstore "gitea.lclr.dev/AI/mcp-framework/secretstore"
|
|
)
|
|
|
|
func TestBuildAppReturnsConfiguredApp(t *testing.T) {
|
|
app := BuildApp("dev")
|
|
if app == nil {
|
|
t.Fatal("expected app instance")
|
|
}
|
|
if app.prompter == nil {
|
|
t.Fatal("expected config prompter to be configured")
|
|
}
|
|
if app.configStore == nil {
|
|
t.Fatal("expected config store to be configured")
|
|
}
|
|
if app.openSecretStore == nil {
|
|
t.Fatal("expected secret store opener to be configured")
|
|
}
|
|
if app.newMailService == nil {
|
|
t.Fatal("expected mail service factory to be configured")
|
|
}
|
|
if app.newRunner == nil {
|
|
t.Fatal("expected runner factory to be configured")
|
|
}
|
|
if app.loadManifest == nil {
|
|
t.Fatal("expected manifest loader to be configured")
|
|
}
|
|
}
|
|
|
|
func TestResolveSecretStorePolicyUsesManifestValue(t *testing.T) {
|
|
policy, err := resolveSecretStorePolicy(
|
|
func(string) (frameworkmanifest.File, string, error) {
|
|
return frameworkmanifest.File{
|
|
SecretStore: frameworkmanifest.SecretStore{
|
|
BackendPolicy: "env-only",
|
|
},
|
|
}, "/tmp/mcp.toml", nil
|
|
},
|
|
func() (string, error) { return "/tmp/bin/email-mcp", nil },
|
|
)
|
|
if err != nil {
|
|
t.Fatalf("resolveSecretStorePolicy returned error: %v", err)
|
|
}
|
|
if policy != frameworksecretstore.BackendEnvOnly {
|
|
t.Fatalf("policy = %q, want %q", policy, frameworksecretstore.BackendEnvOnly)
|
|
}
|
|
}
|
|
|
|
func TestResolveSecretStorePolicyReturnsErrorOnInvalidManifestValue(t *testing.T) {
|
|
_, err := resolveSecretStorePolicy(
|
|
func(string) (frameworkmanifest.File, string, error) {
|
|
return frameworkmanifest.File{
|
|
SecretStore: frameworkmanifest.SecretStore{
|
|
BackendPolicy: "invalid-policy",
|
|
},
|
|
}, "/tmp/mcp.toml", nil
|
|
},
|
|
func() (string, error) { return "/tmp/bin/email-mcp", nil },
|
|
)
|
|
if err == nil {
|
|
t.Fatal("expected invalid secret store policy error")
|
|
}
|
|
}
|
|
|
|
func TestResolveSecretStorePolicyFallsBackToAutoWhenManifestMissing(t *testing.T) {
|
|
policy, err := resolveSecretStorePolicy(
|
|
func(string) (frameworkmanifest.File, string, error) {
|
|
return frameworkmanifest.File{}, "", fmt.Errorf("manifest missing")
|
|
},
|
|
func() (string, error) { return "/tmp/bin/email-mcp", nil },
|
|
)
|
|
if err != nil {
|
|
t.Fatalf("resolveSecretStorePolicy returned error: %v", err)
|
|
}
|
|
if policy != frameworksecretstore.BackendAuto {
|
|
t.Fatalf("policy = %q, want %q", policy, frameworksecretstore.BackendAuto)
|
|
}
|
|
}
|