package main import ( "os" "testing" "git.daviestechlabs.io/daviestechlabs/handler-base/messages" "github.com/vmihailenco/msgpack/v5" ) func TestChatRequestDecode(t *testing.T) { // Verify a msgpack-encoded map decodes cleanly into typed struct. raw := map[string]any{ "request_id": "req-1", "user_id": "user-1", "message": "hello", "premium": true, "top_k": 10, } data, _ := msgpack.Marshal(raw) var req messages.ChatRequest if err := msgpack.Unmarshal(data, &req); err != nil { t.Fatal(err) } if req.RequestID != "req-1" { t.Errorf("RequestID = %q", req.RequestID) } if req.EffectiveQuery() != "hello" { t.Errorf("EffectiveQuery = %q", req.EffectiveQuery()) } if !req.Premium { t.Error("Premium should be true") } if req.TopK != 10 { t.Errorf("TopK = %d", req.TopK) } } func TestChatResponseRoundtrip(t *testing.T) { resp := &messages.ChatResponse{ UserID: "user-1", Response: "answer", Success: true, Audio: []byte{0x01, 0x02, 0x03}, } data, err := msgpack.Marshal(resp) if err != nil { t.Fatal(err) } var decoded messages.ChatResponse if err := msgpack.Unmarshal(data, &decoded); err != nil { t.Fatal(err) } if decoded.UserID != "user-1" || !decoded.Success { t.Errorf("decoded = %+v", decoded) } if len(decoded.Audio) != 3 { t.Errorf("audio len = %d", len(decoded.Audio)) } } func TestGetEnvHelpers(t *testing.T) { t.Setenv("CHAT_TEST", "hello") if got := getEnv("CHAT_TEST", "x"); got != "hello" { t.Errorf("getEnv = %q", got) } if got := getEnv("NO_SUCH_VAR", "x"); got != "x" { t.Errorf("getEnv fallback = %q", got) } t.Setenv("CHAT_PORT", "9090") if got := getEnvInt("CHAT_PORT", 0); got != 9090 { t.Errorf("getEnvInt = %d", got) } if got := getEnvInt("NO_SUCH_VAR", 80); got != 80 { t.Errorf("getEnvInt fallback = %d", got) } t.Setenv("CHAT_FLAG", "true") if got := getEnvBool("CHAT_FLAG", false); !got { t.Error("getEnvBool should be true") } if got := getEnvBool("NO_SUCH_VAR", false); got { t.Error("getEnvBool fallback should be false") } } func TestMainBinaryBuilds(t *testing.T) { // Verify the binary exists after build if _, err := os.Stat("main.go"); err != nil { t.Skip("main.go not found") } }