Files
platforms/backend/api/internal/logic/platform/wallet_test.go
2026-07-28 09:25:49 +08:00

64 lines
1.9 KiB
Go

package platform
import (
"testing"
"time"
)
func TestResolveWalletOwnerAcceptsOnlyStablePlatformOwner(t *testing.T) {
id, err := resolveWalletOwner("platform", "heqi")
if err != nil || id != 0 {
t.Fatalf("platform wallet owner = (%d, %v)", id, err)
}
if _, err := resolveWalletOwner("platform", "admin"); err == nil {
t.Fatal("arbitrary platform owner was accepted")
}
if _, err := resolveWalletOwner("unknown", "identity"); err == nil {
t.Fatal("unknown wallet owner type was accepted")
}
}
func TestDateNumberBuildsWalletRecordIndexes(t *testing.T) {
value := time.Date(2026, time.July, 28, 10, 30, 0, 0, time.UTC)
if got := dateNumber(value, "20060102"); got != 20260728 {
t.Fatalf("ymd = %d", got)
}
if got := dateNumber(value, "200601"); got != 202607 {
t.Fatalf("ym = %d", got)
}
}
func TestProtectWalletResponseMasksAccountsAndListDetails(t *testing.T) {
value := map[string]any{
"alipay_id": "account@example.com",
"card_no_last4": "1234",
"card_owner": "张三",
"args": "sensitive",
"callback_msg": "sensitive",
}
protectWalletResponse(value, false)
if value["alipay_id"] == "account@example.com" {
t.Fatal("payment account was not masked")
}
if value["card_no_masked"] != "****1234" {
t.Fatalf("masked card = %#v", value["card_no_masked"])
}
if _, exists := value["card_no_last4"]; exists {
t.Fatal("raw card last four remains in response")
}
if _, exists := value["args"]; exists {
t.Fatal("payment args remain in list response")
}
if _, exists := value["callback_msg"]; exists {
t.Fatal("callback message remains in list response")
}
}
func TestProtectWalletResponseRetainsDetailOnlyFields(t *testing.T) {
value := map[string]any{"args": "detail", "callback_msg": "detail"}
protectWalletResponse(value, true)
if value["args"] != "detail" || value["callback_msg"] != "detail" {
t.Fatalf("detail fields were removed: %#v", value)
}
}