Register Alipay and WxPay option keys and sync option updates into runtime payment settings.
142 lines
7.4 KiB
Go
142 lines
7.4 KiB
Go
package model
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/QuantumNous/new-api/common"
|
|
"github.com/QuantumNous/new-api/setting"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestPaymentOptionsUpdateRuntimeSettings(t *testing.T) {
|
|
originalAlipay := setting.Alipay
|
|
originalWxpay := setting.Wxpay
|
|
common.OptionMapRWMutex.RLock()
|
|
originalOptionMap := common.OptionMap
|
|
common.OptionMapRWMutex.RUnlock()
|
|
t.Cleanup(func() {
|
|
setting.Alipay = originalAlipay
|
|
setting.Wxpay = originalWxpay
|
|
common.OptionMapRWMutex.Lock()
|
|
common.OptionMap = originalOptionMap
|
|
common.OptionMapRWMutex.Unlock()
|
|
})
|
|
|
|
common.OptionMapRWMutex.Lock()
|
|
common.OptionMap = map[string]string{}
|
|
common.OptionMapRWMutex.Unlock()
|
|
|
|
require.NoError(t, updateOptionMap(setting.AlipayEnabledOption, "true"))
|
|
require.NoError(t, updateOptionMap(setting.AlipayAppIDOption, "alipay-app"))
|
|
require.NoError(t, updateOptionMap(setting.AlipayPrivateKeyOption, "alipay-private"))
|
|
require.NoError(t, updateOptionMap(setting.AlipayPublicKeyOption, "alipay-public"))
|
|
require.NoError(t, updateOptionMap(setting.AlipayGatewayUrlOption, "https://alipay-gateway.test"))
|
|
require.NoError(t, updateOptionMap(setting.AlipayNotifyURLOption, "https://example.test/alipay/notify"))
|
|
require.NoError(t, updateOptionMap(setting.AlipayReturnURLOption, "https://example.test/alipay/return"))
|
|
|
|
require.True(t, setting.Alipay.Enabled)
|
|
require.Equal(t, "alipay-app", setting.Alipay.AppID)
|
|
require.Equal(t, "alipay-private", setting.Alipay.PrivateKey)
|
|
require.Equal(t, "alipay-public", setting.Alipay.PublicKey)
|
|
require.Equal(t, "https://alipay-gateway.test", setting.Alipay.GatewayUrl)
|
|
require.Equal(t, "https://example.test/alipay/notify", setting.Alipay.NotifyURL)
|
|
require.Equal(t, "https://example.test/alipay/return", setting.Alipay.ReturnURL)
|
|
|
|
require.NoError(t, updateOptionMap(setting.WxpayEnabledOption, "true"))
|
|
require.NoError(t, updateOptionMap(setting.WxpayAppIDOption, "wxpay-app"))
|
|
require.NoError(t, updateOptionMap(setting.WxpayMchIDOption, "wxpay-mch"))
|
|
require.NoError(t, updateOptionMap(setting.WxpayPrivateKeyOption, "wxpay-private"))
|
|
require.NoError(t, updateOptionMap(setting.WxpayMerchantSerialNoOption, "merchant-serial"))
|
|
require.NoError(t, updateOptionMap(setting.WxpayAPIv3KeyOption, "12345678901234567890123456789012"))
|
|
require.NoError(t, updateOptionMap(setting.WxpayPlatformPublicKeyOption, "wxpay-platform-public"))
|
|
require.NoError(t, updateOptionMap(setting.WxpayPlatformCertificateOption, "wxpay-platform-cert"))
|
|
require.NoError(t, updateOptionMap(setting.WxpayPlatformSerialNoOption, "platform-serial"))
|
|
require.NoError(t, updateOptionMap(setting.WxpayGatewayURLOption, "https://wxpay-gateway.test"))
|
|
require.NoError(t, updateOptionMap(setting.WxpayNotifyURLOption, "https://example.test/wxpay/notify"))
|
|
require.NoError(t, updateOptionMap(setting.WxpayReturnURLOption, "https://example.test/wxpay/return"))
|
|
require.NoError(t, updateOptionMap(setting.WxpayH5AppNameOption, "new-api"))
|
|
require.NoError(t, updateOptionMap(setting.WxpayH5AppURLOption, "https://example.test"))
|
|
|
|
require.True(t, setting.Wxpay.Enabled)
|
|
require.Equal(t, "wxpay-app", setting.Wxpay.AppID)
|
|
require.Equal(t, "wxpay-mch", setting.Wxpay.MchID)
|
|
require.Equal(t, "wxpay-private", setting.Wxpay.PrivateKey)
|
|
require.Equal(t, "merchant-serial", setting.Wxpay.MerchantSerialNo)
|
|
require.Equal(t, "12345678901234567890123456789012", setting.Wxpay.APIv3Key)
|
|
require.Equal(t, "wxpay-platform-public", setting.Wxpay.PlatformPublicKey)
|
|
require.Equal(t, "wxpay-platform-cert", setting.Wxpay.PlatformCertificate)
|
|
require.Equal(t, "platform-serial", setting.Wxpay.PlatformSerialNo)
|
|
require.Equal(t, "https://wxpay-gateway.test", setting.Wxpay.GatewayURL)
|
|
require.Equal(t, "https://example.test/wxpay/notify", setting.Wxpay.NotifyURL)
|
|
require.Equal(t, "https://example.test/wxpay/return", setting.Wxpay.ReturnURL)
|
|
require.Equal(t, "new-api", setting.Wxpay.H5AppName)
|
|
require.Equal(t, "https://example.test", setting.Wxpay.H5AppURL)
|
|
}
|
|
|
|
func TestInitOptionMapIncludesDirectPaymentOptions(t *testing.T) {
|
|
originalAlipay := setting.Alipay
|
|
originalWxpay := setting.Wxpay
|
|
common.OptionMapRWMutex.RLock()
|
|
originalOptionMap := common.OptionMap
|
|
common.OptionMapRWMutex.RUnlock()
|
|
t.Cleanup(func() {
|
|
setting.Alipay = originalAlipay
|
|
setting.Wxpay = originalWxpay
|
|
common.OptionMapRWMutex.Lock()
|
|
common.OptionMap = originalOptionMap
|
|
common.OptionMapRWMutex.Unlock()
|
|
})
|
|
|
|
setting.Alipay = setting.AlipaySetting{
|
|
Enabled: true,
|
|
AppID: "init-alipay-app",
|
|
PrivateKey: "init-alipay-private",
|
|
PublicKey: "init-alipay-public",
|
|
GatewayUrl: "https://init-alipay-gateway.test",
|
|
NotifyURL: "https://example.test/init-alipay/notify",
|
|
ReturnURL: "https://example.test/init-alipay/return",
|
|
}
|
|
setting.Wxpay = setting.WxpaySetting{
|
|
Enabled: true,
|
|
AppID: "init-wxpay-app",
|
|
MchID: "init-wxpay-mch",
|
|
PrivateKey: "init-wxpay-private",
|
|
MerchantSerialNo: "init-merchant-serial",
|
|
APIv3Key: "12345678901234567890123456789012",
|
|
PlatformPublicKey: "init-platform-public",
|
|
PlatformCertificate: "init-platform-cert",
|
|
PlatformSerialNo: "init-platform-serial",
|
|
GatewayURL: "https://init-wxpay-gateway.test",
|
|
NotifyURL: "https://example.test/init-wxpay/notify",
|
|
ReturnURL: "https://example.test/init-wxpay/return",
|
|
H5AppName: "init-new-api",
|
|
H5AppURL: "https://init.example.test",
|
|
}
|
|
|
|
InitOptionMap()
|
|
|
|
common.OptionMapRWMutex.RLock()
|
|
defer common.OptionMapRWMutex.RUnlock()
|
|
require.Equal(t, "true", common.OptionMap[setting.AlipayEnabledOption])
|
|
require.Equal(t, "init-alipay-app", common.OptionMap[setting.AlipayAppIDOption])
|
|
require.Equal(t, "init-alipay-private", common.OptionMap[setting.AlipayPrivateKeyOption])
|
|
require.Equal(t, "init-alipay-public", common.OptionMap[setting.AlipayPublicKeyOption])
|
|
require.Equal(t, "https://init-alipay-gateway.test", common.OptionMap[setting.AlipayGatewayUrlOption])
|
|
require.Equal(t, "https://example.test/init-alipay/notify", common.OptionMap[setting.AlipayNotifyURLOption])
|
|
require.Equal(t, "https://example.test/init-alipay/return", common.OptionMap[setting.AlipayReturnURLOption])
|
|
require.Equal(t, "true", common.OptionMap[setting.WxpayEnabledOption])
|
|
require.Equal(t, "init-wxpay-app", common.OptionMap[setting.WxpayAppIDOption])
|
|
require.Equal(t, "init-wxpay-mch", common.OptionMap[setting.WxpayMchIDOption])
|
|
require.Equal(t, "init-wxpay-private", common.OptionMap[setting.WxpayPrivateKeyOption])
|
|
require.Equal(t, "init-merchant-serial", common.OptionMap[setting.WxpayMerchantSerialNoOption])
|
|
require.Equal(t, "12345678901234567890123456789012", common.OptionMap[setting.WxpayAPIv3KeyOption])
|
|
require.Equal(t, "init-platform-public", common.OptionMap[setting.WxpayPlatformPublicKeyOption])
|
|
require.Equal(t, "init-platform-cert", common.OptionMap[setting.WxpayPlatformCertificateOption])
|
|
require.Equal(t, "init-platform-serial", common.OptionMap[setting.WxpayPlatformSerialNoOption])
|
|
require.Equal(t, "https://init-wxpay-gateway.test", common.OptionMap[setting.WxpayGatewayURLOption])
|
|
require.Equal(t, "https://example.test/init-wxpay/notify", common.OptionMap[setting.WxpayNotifyURLOption])
|
|
require.Equal(t, "https://example.test/init-wxpay/return", common.OptionMap[setting.WxpayReturnURLOption])
|
|
require.Equal(t, "init-new-api", common.OptionMap[setting.WxpayH5AppNameOption])
|
|
require.Equal(t, "https://init.example.test", common.OptionMap[setting.WxpayH5AppURLOption])
|
|
}
|