package gateway import ( "context" "testing" capreg "git.yeij.top/AskaEth/Cyrene_v2/internal/capability/registry" ) // testChannel 是一个裸 sdk.Channel,用于演练 findChannel 的解析。 type testChannel struct{ name string } func (t testChannel) Name() string { return t.name } func (t testChannel) Connect(context.Context) error { return nil } func (t testChannel) Disconnect(context.Context) error { return nil } func (t testChannel) IsConnected() bool { return false } func (t testChannel) HealthCheck(context.Context) error { return nil } // TestFindChannelExactMatch 优先精确适配器名而非裸名匹配。 func TestFindChannelExactMatch(t *testing.T) { reg := capreg.New() _ = reg.Register(capreg.Capability{Name: "kook:conf0", Kind: capreg.KindChannel, Value: testChannel{name: "kook:conf0"}}) _ = reg.Register(capreg.Capability{Name: "telegram:conf0", Kind: capreg.KindChannel, Value: testChannel{name: "telegram:conf0"}}) ch, ok := findChannel(reg, "kook:conf0") if !ok || ch.Name() != "kook:conf0" { t.Fatalf("exact kook:conf0 not found, got %v/%v", ch, ok) } ch, ok = findChannel(reg, "telegram:conf0") if !ok || ch.Name() != "telegram:conf0" { t.Fatalf("exact telegram:conf0 not found, got %v/%v", ch, ok) } } // TestFindChannelBarePlatformResolvesToTokenAccount 验证非精确适配器名的 // 裸平台名("kook")会解析到该平台首个已注册账号 // (即携带 token 的那个,因为空 token 的裸账号 // 从不注册)。 func TestFindChannelBarePlatformResolvesToTokenAccount(t *testing.T) { reg := capreg.New() _ = reg.Register(capreg.Capability{Name: "kook:3fc8", Kind: capreg.KindChannel, Value: testChannel{name: "kook:3fc8"}}) ch, ok := findChannel(reg, "kook") if !ok || ch.Name() != "kook:3fc8" { t.Fatalf("bare kook should resolve to kook:3fc8, got %v/%v", ch, ok) } } // TestFindChannelUnknownOrBlank 拒绝不匹配任何渠道的名字。 func TestFindChannelUnknownOrBlank(t *testing.T) { reg := capreg.New() _ = reg.Register(capreg.Capability{Name: "kook:conf0", Kind: capreg.KindChannel, Value: testChannel{name: "kook:conf0"}}) if _, ok := findChannel(reg, "unknown"); ok { t.Fatal("unknown name should not be found") } if _, ok := findChannel(reg, ""); ok { t.Fatal("blank name should not be found") } // 已跳过:非渠道能力不得匹配。 _ = reg.Register(capreg.Capability{Name: "some-tool", Kind: capreg.KindTool, Value: testChannel{name: "some-tool"}}) if _, ok := findChannel(reg, "some-tool"); ok { t.Fatal("non-channel capability must not match findChannel") } }