test(pay): 补 fake 三态/MockChannelEnabled 装配/devmock 端点/gateway currency_mismatch/限流 bucket 回收

This commit is contained in:
wangjia
2026-07-11 08:39:57 +08:00
parent 1f87b0fcbf
commit 9076b5e0b8
5 changed files with 353 additions and 0 deletions
@@ -96,3 +96,54 @@ func TestBuildRegistry(t *testing.T) {
})
}
}
// TestBuildRegistryMockChannelEnabled 覆盖 config.C.MockChannelEnabled=true 时的
// fake 装配分支:注册表含 "fake",且其结算币种被设成 ["CNY","USDT"](CNY 排首位,
// 对齐 pangolin 下单实际结算币种,见 registry.go 顶部注释)。config.C 是包级全局,
// 测试内直接改字段 + defer 复原,避免污染同包/其它包测试的默认值(与
// handler 包 ratelimit_test.go / refund_test.go 的 config.C 约定一致)。
func TestBuildRegistryMockChannelEnabled(t *testing.T) {
prev := config.C.MockChannelEnabled
config.C.MockChannelEnabled = true
defer func() { config.C.MockChannelEnabled = prev }()
acctReg := accounts.New(nil)
reg := providerbuild.BuildRegistry(acctReg)
methods := reg.Methods()
found := false
for _, m := range methods {
if m == "fake" {
found = true
}
}
if !found {
t.Fatalf("MockChannelEnabled=true 时 Methods() 应含 fake, got %v", methods)
}
fp, err := reg.Get("fake")
if err != nil {
t.Fatalf("Get(fake): %v", err)
}
caps := fp.Capabilities()
if len(caps.SettleCurrencies) == 0 || caps.SettleCurrencies[0] != "CNY" {
t.Fatalf("mock 装配应把 fake 结算币种设成 CNY 优先, got %v", caps.SettleCurrencies)
}
}
// TestBuildRegistryMockChannelDisabledByDefault 反向覆盖:MockChannelEnabled=false
// (生产默认值)时注册表不含 "fake",证明 mock 渠道对生产零影响。
func TestBuildRegistryMockChannelDisabledByDefault(t *testing.T) {
prev := config.C.MockChannelEnabled
config.C.MockChannelEnabled = false
defer func() { config.C.MockChannelEnabled = prev }()
acctReg := accounts.New(nil)
reg := providerbuild.BuildRegistry(acctReg)
for _, m := range reg.Methods() {
if m == "fake" {
t.Fatalf("MockChannelEnabled=false(默认)时 Methods() 不应含 fake, got %v", reg.Methods())
}
}
}