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>
47 lines
1.2 KiB
Go
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)
|
|
}
|
|
}
|