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