63 lines
1.8 KiB
Go
63 lines
1.8 KiB
Go
package reply
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"spark-server/internal/pkg/errs"
|
|
"spark-server/internal/pkg/i18n"
|
|
"spark-server/internal/pkg/reqctx"
|
|
)
|
|
|
|
func TestOKAndFailEnvelope(t *testing.T) {
|
|
raw := MustMarshal(StampID(OK(map[string]int{"n": 1}), "rid-1"))
|
|
var env Envelope
|
|
if err := json.Unmarshal(raw, &env); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if env.Code != "0" || env.Msg != "ok" || env.RequestID != "rid-1" || string(env.Data) != `{"n":1}` {
|
|
t.Fatalf("%+v", env)
|
|
}
|
|
if !bytes.Contains(raw, []byte(`"request_id":"rid-1"`)) {
|
|
t.Fatalf("field order %s", raw)
|
|
}
|
|
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 := FromErrorLang(i18n.ZhCN, 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)
|
|
}
|
|
if env.RequestID != "" {
|
|
t.Fatalf("missing request_id %q", env.RequestID)
|
|
}
|
|
}
|
|
|
|
func TestFromContextStampsRequestID(t *testing.T) {
|
|
ctx := reqctx.With(t.Context(), &reqctx.RequestContext{RequestID: "rid-ctx", Language: "en"})
|
|
env := FromContext(ctx, errs.ErrUnauthorized)
|
|
if env.RequestID != "rid-ctx" || env.Code != errs.ErrUnauthorized.Code || env.Msg != "unauthorized" {
|
|
t.Fatalf("%+v", env)
|
|
}
|
|
}
|