64 lines
1.9 KiB
Go
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)
|
|
}
|
|
}
|