Files
ttstd-infinite-canvas/backend/internal/app/payment_order_identity_test.go

40 lines
1.3 KiB
Go

package app
import (
"encoding/json"
"strings"
"testing"
)
func TestPaymentOrderIdentityOnlyInAdminList(t *testing.T) {
base := PaymentOrderView{ID: "order", UserID: "user", MerchantOrderNo: "merchant"}
ordinary, err := json.Marshal(base)
if err != nil {
t.Fatal(err)
}
if strings.Contains(string(ordinary), `"user":`) || strings.Contains(string(ordinary), `"email":`) {
t.Fatalf("ordinary response includes identity: %s", ordinary)
}
admin, err := json.Marshal(AdminPaymentOrderView{PaymentOrderView: base, User: &AdminPaymentOrderUser{ID: "user", Username: "alice", DisplayName: "小林", Email: "alice@example.com"}})
if err != nil {
t.Fatal(err)
}
var result struct {
ID string `json:"id"`
User *AdminPaymentOrderUser `json:"user"`
}
if err := json.Unmarshal(admin, &result); err != nil {
t.Fatal(err)
}
if result.ID != "order" || result.User == nil || result.User.Email != "alice@example.com" {
t.Fatalf("invalid admin response: %s", admin)
}
missing, err := json.Marshal(AdminPaymentOrderView{PaymentOrderView: base})
if err != nil {
t.Fatal(err)
}
if !strings.Contains(string(missing), `"user":null`) || !strings.Contains(string(missing), `"userId":"user"`) {
t.Fatalf("missing user loses original identity: %s", missing)
}
}