Files
Memoh/internal/channel/helpers_test.go
T
BBQ 5a35ef34ac feat: channel gateway implementation and multi-bot refactor
- Refactor channel manager with support for Sender/Receiver interfaces and hot-swappable adapters.
- Implement identity routing and pre-authentication logic for inbound messages.
- Update database schema to support bot pre-auth keys and extended channel session metadata.
- Add Telegram and Feishu channel configuration and adapter enhancements.
- Update Swagger documentation and internal handlers for channel management.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-06 14:41:54 +08:00

66 lines
1.3 KiB
Go

package channel
import (
"testing"
"github.com/google/uuid"
)
func TestDecodeConfigMap(t *testing.T) {
t.Parallel()
cfg, err := DecodeConfigMap([]byte(`{"a":1}`))
if err != nil {
t.Fatalf("expected no error, got %v", err)
}
if cfg["a"] == nil {
t.Fatalf("expected key in map")
}
cfg, err = DecodeConfigMap([]byte(`null`))
if err != nil {
t.Fatalf("expected no error, got %v", err)
}
if cfg == nil || len(cfg) != 0 {
t.Fatalf("expected empty map")
}
}
func TestReadString(t *testing.T) {
t.Parallel()
raw := map[string]any{
"bot_token": 123,
}
got := ReadString(raw, "bot_token")
if got != "123" {
t.Fatalf("unexpected value: %s", got)
}
}
func TestParseUUID(t *testing.T) {
t.Parallel()
id := uuid.NewString()
if _, err := parseUUID(id); err != nil {
t.Fatalf("expected no error, got %v", err)
}
if _, err := parseUUID("invalid"); err == nil {
t.Fatalf("expected error, got nil")
}
}
func TestBindingCriteriaFromIdentity(t *testing.T) {
t.Parallel()
criteria := BindingCriteriaFromIdentity(Identity{
ExternalID: "u1",
Attributes: map[string]string{"username": "alice"},
})
if criteria.ExternalID != "u1" {
t.Fatalf("unexpected external id: %s", criteria.ExternalID)
}
if criteria.Attribute("username") != "alice" {
t.Fatalf("unexpected username: %s", criteria.Attribute("username"))
}
}