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) } }