refactor wallet domain management
This commit is contained in:
63
backend/api/internal/logic/platform/wallet_test.go
Normal file
63
backend/api/internal/logic/platform/wallet_test.go
Normal file
@@ -0,0 +1,63 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user