spark-server/internal/pkg/reply/reply_test.go
zhr ae9a71034d feat: implement Spark IM V3 modular monolith
Add HTTP /v1 MVC, TCP send path, groups with server-side member-avatar collage, object-storage upload, and friends/favorites around the architecture-v3 layout.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-17 19:52:11 +08:00

47 lines
1.2 KiB
Go

package reply
import (
"encoding/json"
"testing"
"spark-server/internal/pkg/errs"
"spark-server/internal/pkg/i18n"
)
func TestOKAndFailEnvelope(t *testing.T) {
raw := MustMarshal(OK(map[string]int{"n": 1}))
var env Envelope
if err := json.Unmarshal(raw, &env); err != nil {
t.Fatal(err)
}
if env.Code != "0" || env.Msg != "ok" || string(env.Data) != `{"n":1}` {
t.Fatalf("%+v", env)
}
detail := FailData(errs.ErrAvailable.Code, "unavailable", map[string]string{"mysql": "down"})
if string(detail.Data) != `{"mysql":"down"}` {
t.Fatalf("data %s", detail.Data)
}
fail := FromError(errs.ErrNotAuthenticated.WithMsg("login first"))
if fail.Code != errs.ErrNotAuthenticated.Code || fail.Msg != "login first" || string(fail.Data) != "{}" {
t.Fatalf("fail %+v", fail)
}
zh := FromError(errs.ErrUnauthorized)
if zh.Msg != "未授权" {
t.Fatalf("zh %q", zh.Msg)
}
en := FromErrorLang(i18n.En, errs.ErrUnauthorized)
if en.Msg != "unauthorized" {
t.Fatalf("en %q", en.Msg)
}
}
func TestUnmarshal(t *testing.T) {
env, err := Unmarshal([]byte(`{"code":"0","msg":"ok"}`))
if err != nil {
t.Fatal(err)
}
if string(env.Data) != "{}" {
t.Fatalf("empty data %s", env.Data)
}
}