f995a868e4
rafactor: payment
167 lines
5.7 KiB
Go
167 lines
5.7 KiB
Go
package controller
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/QuantumNous/new-api/setting"
|
|
"github.com/QuantumNous/new-api/setting/operation_setting"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestStripeWebhookEnabledRequiresTopUpAndWebhookConfig(t *testing.T) {
|
|
originalAPISecret := setting.StripeApiSecret
|
|
originalWebhookSecret := setting.StripeWebhookSecret
|
|
originalPriceID := setting.StripePriceId
|
|
t.Cleanup(func() {
|
|
setting.StripeApiSecret = originalAPISecret
|
|
setting.StripeWebhookSecret = originalWebhookSecret
|
|
setting.StripePriceId = originalPriceID
|
|
})
|
|
|
|
setting.StripeWebhookSecret = ""
|
|
setting.StripeApiSecret = "sk_test_123"
|
|
setting.StripePriceId = "price_123"
|
|
require.False(t, isStripeWebhookEnabled())
|
|
|
|
setting.StripeWebhookSecret = "whsec_test"
|
|
require.True(t, isStripeWebhookEnabled())
|
|
|
|
setting.StripePriceId = ""
|
|
require.False(t, isStripeWebhookEnabled())
|
|
}
|
|
|
|
func TestCreemWebhookEnabledRequiresTopUpAndWebhookConfig(t *testing.T) {
|
|
originalAPIKey := setting.CreemApiKey
|
|
originalProducts := setting.CreemProducts
|
|
originalWebhookSecret := setting.CreemWebhookSecret
|
|
t.Cleanup(func() {
|
|
setting.CreemApiKey = originalAPIKey
|
|
setting.CreemProducts = originalProducts
|
|
setting.CreemWebhookSecret = originalWebhookSecret
|
|
})
|
|
|
|
setting.CreemWebhookSecret = ""
|
|
setting.CreemApiKey = "creem_api_key"
|
|
setting.CreemProducts = `[{"productId":"prod_123"}]`
|
|
require.False(t, isCreemWebhookEnabled())
|
|
|
|
setting.CreemWebhookSecret = "creem_secret"
|
|
require.True(t, isCreemWebhookEnabled())
|
|
|
|
setting.CreemProducts = "[]"
|
|
require.False(t, isCreemWebhookEnabled())
|
|
}
|
|
|
|
func TestWaffoWebhookEnabledRequiresTopUpAndWebhookConfig(t *testing.T) {
|
|
originalEnabled := setting.WaffoEnabled
|
|
originalSandbox := setting.WaffoSandbox
|
|
originalAPIKey := setting.WaffoApiKey
|
|
originalPrivateKey := setting.WaffoPrivateKey
|
|
originalPublicCert := setting.WaffoPublicCert
|
|
originalSandboxAPIKey := setting.WaffoSandboxApiKey
|
|
originalSandboxPrivateKey := setting.WaffoSandboxPrivateKey
|
|
originalSandboxPublicCert := setting.WaffoSandboxPublicCert
|
|
t.Cleanup(func() {
|
|
setting.WaffoEnabled = originalEnabled
|
|
setting.WaffoSandbox = originalSandbox
|
|
setting.WaffoApiKey = originalAPIKey
|
|
setting.WaffoPrivateKey = originalPrivateKey
|
|
setting.WaffoPublicCert = originalPublicCert
|
|
setting.WaffoSandboxApiKey = originalSandboxAPIKey
|
|
setting.WaffoSandboxPrivateKey = originalSandboxPrivateKey
|
|
setting.WaffoSandboxPublicCert = originalSandboxPublicCert
|
|
})
|
|
|
|
setting.WaffoEnabled = true
|
|
setting.WaffoSandbox = false
|
|
setting.WaffoApiKey = ""
|
|
setting.WaffoPrivateKey = "private"
|
|
setting.WaffoPublicCert = "public"
|
|
require.False(t, isWaffoWebhookEnabled())
|
|
|
|
setting.WaffoApiKey = "api"
|
|
require.True(t, isWaffoWebhookEnabled())
|
|
|
|
setting.WaffoEnabled = false
|
|
require.False(t, isWaffoWebhookEnabled())
|
|
|
|
setting.WaffoEnabled = true
|
|
setting.WaffoSandbox = true
|
|
setting.WaffoSandboxApiKey = ""
|
|
setting.WaffoSandboxPrivateKey = "sandbox_private"
|
|
setting.WaffoSandboxPublicCert = "sandbox_public"
|
|
require.False(t, isWaffoWebhookEnabled())
|
|
|
|
setting.WaffoSandboxApiKey = "sandbox_api"
|
|
require.True(t, isWaffoWebhookEnabled())
|
|
}
|
|
|
|
func TestWaffoPancakeWebhookEnabledRequiresTopUpAndWebhookConfig(t *testing.T) {
|
|
originalEnabled := setting.WaffoPancakeEnabled
|
|
originalSandbox := setting.WaffoPancakeSandbox
|
|
originalMerchantID := setting.WaffoPancakeMerchantID
|
|
originalPrivateKey := setting.WaffoPancakePrivateKey
|
|
originalWebhookPublicKey := setting.WaffoPancakeWebhookPublicKey
|
|
originalWebhookTestKey := setting.WaffoPancakeWebhookTestKey
|
|
originalStoreID := setting.WaffoPancakeStoreID
|
|
originalProductID := setting.WaffoPancakeProductID
|
|
t.Cleanup(func() {
|
|
setting.WaffoPancakeEnabled = originalEnabled
|
|
setting.WaffoPancakeSandbox = originalSandbox
|
|
setting.WaffoPancakeMerchantID = originalMerchantID
|
|
setting.WaffoPancakePrivateKey = originalPrivateKey
|
|
setting.WaffoPancakeWebhookPublicKey = originalWebhookPublicKey
|
|
setting.WaffoPancakeWebhookTestKey = originalWebhookTestKey
|
|
setting.WaffoPancakeStoreID = originalStoreID
|
|
setting.WaffoPancakeProductID = originalProductID
|
|
})
|
|
|
|
setting.WaffoPancakeEnabled = true
|
|
setting.WaffoPancakeSandbox = false
|
|
setting.WaffoPancakeMerchantID = "merchant"
|
|
setting.WaffoPancakePrivateKey = "private"
|
|
setting.WaffoPancakeStoreID = "store"
|
|
setting.WaffoPancakeProductID = "product"
|
|
setting.WaffoPancakeWebhookPublicKey = ""
|
|
require.False(t, isWaffoPancakeWebhookEnabled())
|
|
|
|
setting.WaffoPancakeWebhookPublicKey = "public"
|
|
require.True(t, isWaffoPancakeWebhookEnabled())
|
|
|
|
setting.WaffoPancakeEnabled = false
|
|
require.False(t, isWaffoPancakeWebhookEnabled())
|
|
|
|
setting.WaffoPancakeEnabled = true
|
|
setting.WaffoPancakeSandbox = true
|
|
setting.WaffoPancakeWebhookTestKey = ""
|
|
require.False(t, isWaffoPancakeWebhookEnabled())
|
|
|
|
setting.WaffoPancakeWebhookTestKey = "test_public"
|
|
require.True(t, isWaffoPancakeWebhookEnabled())
|
|
}
|
|
|
|
func TestEpayWebhookEnabledRequiresTopUpAndWebhookConfig(t *testing.T) {
|
|
originalPayAddress := operation_setting.PayAddress
|
|
originalEpayID := operation_setting.EpayId
|
|
originalEpayKey := operation_setting.EpayKey
|
|
originalPayMethods := operation_setting.PayMethods
|
|
t.Cleanup(func() {
|
|
operation_setting.PayAddress = originalPayAddress
|
|
operation_setting.EpayId = originalEpayID
|
|
operation_setting.EpayKey = originalEpayKey
|
|
operation_setting.PayMethods = originalPayMethods
|
|
})
|
|
|
|
operation_setting.PayAddress = "https://pay.example.com"
|
|
operation_setting.EpayId = "epay_id"
|
|
operation_setting.EpayKey = ""
|
|
operation_setting.PayMethods = []map[string]string{{"type": "alipay"}}
|
|
require.False(t, isEpayWebhookEnabled())
|
|
|
|
operation_setting.EpayKey = "epay_key"
|
|
require.True(t, isEpayWebhookEnabled())
|
|
|
|
operation_setting.PayMethods = nil
|
|
require.False(t, isEpayWebhookEnabled())
|
|
}
|