40 lines
1.3 KiB
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)
|
|
}
|
|
}
|