iop/apps/node/internal/adapters/factory_test.go
toki f873e27a15 feat: CLI profile proto message support
- Add runtime proto for CLI profile messages
- Update edge transport server with profile support
- Update node adapters factory for profile handling
- Regenerate protobuf code
2026-05-04 22:54:23 +09:00

79 lines
2.2 KiB
Go

package adapters_test
import (
"testing"
"go.uber.org/zap"
"iop/apps/node/internal/adapters"
iop "iop/proto/gen/iop"
)
func TestBuildFromPayload_MockAlwaysPresent(t *testing.T) {
reg, err := adapters.BuildFromPayload(&iop.NodeConfigPayload{}, zap.NewNop())
if err != nil {
t.Fatalf("build from payload: %v", err)
}
if _, ok := reg.Get("mock"); !ok {
t.Fatal("expected mock adapter to be registered")
}
if got := len(reg.All()); got != 1 {
t.Fatalf("expected 1 adapter, got %d", got)
}
}
func TestBuildFromPayload_OllamaEnabled(t *testing.T) {
reg, err := adapters.BuildFromPayload(&iop.NodeConfigPayload{
Adapters: []*iop.AdapterConfig{
{
Type: "ollama",
Enabled: true,
Config: &iop.AdapterConfig_Ollama{
Ollama: &iop.OllamaAdapterConfig{BaseUrl: "http://localhost:11434"},
},
},
},
}, zap.NewNop())
if err != nil {
t.Fatalf("build from payload: %v", err)
}
if _, ok := reg.Get("mock"); !ok {
t.Fatal("expected mock adapter to be registered")
}
if _, ok := reg.Get("ollama"); !ok {
t.Fatal("expected ollama adapter to be registered")
}
}
func TestBuildFromPayload_MultipleAdapters(t *testing.T) {
reg, err := adapters.BuildFromPayload(&iop.NodeConfigPayload{
Adapters: []*iop.AdapterConfig{
{Type: "ollama", Enabled: true, Config: &iop.AdapterConfig_Ollama{Ollama: &iop.OllamaAdapterConfig{BaseUrl: "x"}}},
{Type: "vllm", Enabled: true, Config: &iop.AdapterConfig_Vllm{Vllm: &iop.VllmAdapterConfig{Endpoint: "y"}}},
{Type: "cli", Enabled: true, Config: &iop.AdapterConfig_Cli{Cli: &iop.CLIAdapterConfig{
Profiles: map[string]*iop.CLIProfileConfig{
"codex": {Command: "codex", Persistent: true, ResponseIdleTimeoutMs: 1500, StartupIdleTimeoutMs: 300},
},
}}},
},
}, zap.NewNop())
if err != nil {
t.Fatalf("build from payload: %v", err)
}
for _, name := range []string{"mock", "ollama", "vllm", "cli"} {
if _, ok := reg.Get(name); !ok {
t.Fatalf("expected %s adapter to be registered", name)
}
}
}
func TestBuildFromPayload_UnknownType(t *testing.T) {
_, err := adapters.BuildFromPayload(&iop.NodeConfigPayload{
Adapters: []*iop.AdapterConfig{
{Type: "unknown", Enabled: true},
},
}, zap.NewNop())
if err == nil {
t.Fatal("expected unknown adapter type error")
}
}