cli/internal/bugseti/seeder_test.go
Snider 2a8963ffdf feat(bugseti): integrate marketplace MCP
- add MCP marketplace client for plugin/ethics discovery\n- resolve seed-agent-developer via marketplace and sanitize context\n- apply ethics guardrails for notifications and PR metadata\n- add bugseti tests for sanitization and skill lookup\n- include mcp-go dependency for BugSETI
2026-02-05 21:36:33 +00:00

97 lines
2.3 KiB
Go

package bugseti
import (
"context"
"fmt"
"os"
"path/filepath"
"testing"
)
type fakeMarketplaceClient struct {
plugins []MarketplacePlugin
infos map[string]*PluginInfo
listErr error
infoErr map[string]error
}
func (f *fakeMarketplaceClient) ListMarketplace(ctx context.Context) ([]MarketplacePlugin, error) {
if f.listErr != nil {
return nil, f.listErr
}
return f.plugins, nil
}
func (f *fakeMarketplaceClient) PluginInfo(ctx context.Context, name string) (*PluginInfo, error) {
if err, ok := f.infoErr[name]; ok {
return nil, err
}
info, ok := f.infos[name]
if !ok {
return nil, fmt.Errorf("plugin not found")
}
return info, nil
}
func (f *fakeMarketplaceClient) EthicsCheck(ctx context.Context) (*EthicsContext, error) {
return nil, fmt.Errorf("not implemented")
}
func (f *fakeMarketplaceClient) Close() error {
return nil
}
func TestFindSeedSkillScript_Good(t *testing.T) {
root := t.TempDir()
scriptPath := filepath.Join(root, "skills", seedSkillName, "scripts", "analyze-issue.sh")
if err := os.MkdirAll(filepath.Dir(scriptPath), 0755); err != nil {
t.Fatalf("failed to create script directory: %v", err)
}
if err := os.WriteFile(scriptPath, []byte("#!/bin/bash\n"), 0755); err != nil {
t.Fatalf("failed to write script: %v", err)
}
plugin := MarketplacePlugin{Name: "seed-plugin"}
client := &fakeMarketplaceClient{
plugins: []MarketplacePlugin{plugin},
infos: map[string]*PluginInfo{
plugin.Name: {
Plugin: plugin,
Path: root,
Skills: []string{seedSkillName},
},
},
}
found, err := findSeedSkillScript(context.Background(), client)
if err != nil {
t.Fatalf("expected script path, got error: %v", err)
}
if found != scriptPath {
t.Fatalf("expected %q, got %q", scriptPath, found)
}
}
func TestFindSeedSkillScript_Bad(t *testing.T) {
plugin := MarketplacePlugin{Name: "empty-plugin"}
client := &fakeMarketplaceClient{
plugins: []MarketplacePlugin{plugin},
infos: map[string]*PluginInfo{
plugin.Name: {
Plugin: plugin,
Path: t.TempDir(),
Skills: []string{"not-the-skill"},
},
},
}
if _, err := findSeedSkillScript(context.Background(), client); err == nil {
t.Fatal("expected error when skill is missing")
}
}
func TestSafeJoinUnder_Ugly(t *testing.T) {
if _, err := safeJoinUnder("", "skills"); err == nil {
t.Fatal("expected error for empty base path")
}
}