payment_webhook_availability_test.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. package controller
  2. import (
  3. "testing"
  4. "github.com/QuantumNous/new-api/setting"
  5. "github.com/QuantumNous/new-api/setting/operation_setting"
  6. "github.com/stretchr/testify/require"
  7. )
  8. func TestStripeWebhookEnabledRequiresTopUpAndWebhookConfig(t *testing.T) {
  9. originalAPISecret := setting.StripeApiSecret
  10. originalWebhookSecret := setting.StripeWebhookSecret
  11. originalPriceID := setting.StripePriceId
  12. t.Cleanup(func() {
  13. setting.StripeApiSecret = originalAPISecret
  14. setting.StripeWebhookSecret = originalWebhookSecret
  15. setting.StripePriceId = originalPriceID
  16. })
  17. setting.StripeWebhookSecret = ""
  18. setting.StripeApiSecret = "sk_test_123"
  19. setting.StripePriceId = "price_123"
  20. require.False(t, isStripeWebhookEnabled())
  21. setting.StripeWebhookSecret = "whsec_test"
  22. require.True(t, isStripeWebhookEnabled())
  23. setting.StripePriceId = ""
  24. require.False(t, isStripeWebhookEnabled())
  25. }
  26. func TestCreemWebhookEnabledRequiresTopUpAndWebhookConfig(t *testing.T) {
  27. originalAPIKey := setting.CreemApiKey
  28. originalProducts := setting.CreemProducts
  29. originalWebhookSecret := setting.CreemWebhookSecret
  30. t.Cleanup(func() {
  31. setting.CreemApiKey = originalAPIKey
  32. setting.CreemProducts = originalProducts
  33. setting.CreemWebhookSecret = originalWebhookSecret
  34. })
  35. setting.CreemWebhookSecret = ""
  36. setting.CreemApiKey = "creem_api_key"
  37. setting.CreemProducts = `[{"productId":"prod_123"}]`
  38. require.False(t, isCreemWebhookEnabled())
  39. setting.CreemWebhookSecret = "creem_secret"
  40. require.True(t, isCreemWebhookEnabled())
  41. setting.CreemProducts = "[]"
  42. require.False(t, isCreemWebhookEnabled())
  43. }
  44. func TestWaffoWebhookEnabledRequiresTopUpAndWebhookConfig(t *testing.T) {
  45. originalEnabled := setting.WaffoEnabled
  46. originalSandbox := setting.WaffoSandbox
  47. originalAPIKey := setting.WaffoApiKey
  48. originalPrivateKey := setting.WaffoPrivateKey
  49. originalPublicCert := setting.WaffoPublicCert
  50. originalSandboxAPIKey := setting.WaffoSandboxApiKey
  51. originalSandboxPrivateKey := setting.WaffoSandboxPrivateKey
  52. originalSandboxPublicCert := setting.WaffoSandboxPublicCert
  53. t.Cleanup(func() {
  54. setting.WaffoEnabled = originalEnabled
  55. setting.WaffoSandbox = originalSandbox
  56. setting.WaffoApiKey = originalAPIKey
  57. setting.WaffoPrivateKey = originalPrivateKey
  58. setting.WaffoPublicCert = originalPublicCert
  59. setting.WaffoSandboxApiKey = originalSandboxAPIKey
  60. setting.WaffoSandboxPrivateKey = originalSandboxPrivateKey
  61. setting.WaffoSandboxPublicCert = originalSandboxPublicCert
  62. })
  63. setting.WaffoEnabled = true
  64. setting.WaffoSandbox = false
  65. setting.WaffoApiKey = ""
  66. setting.WaffoPrivateKey = "private"
  67. setting.WaffoPublicCert = "public"
  68. require.False(t, isWaffoWebhookEnabled())
  69. setting.WaffoApiKey = "api"
  70. require.True(t, isWaffoWebhookEnabled())
  71. setting.WaffoEnabled = false
  72. require.False(t, isWaffoWebhookEnabled())
  73. setting.WaffoEnabled = true
  74. setting.WaffoSandbox = true
  75. setting.WaffoSandboxApiKey = ""
  76. setting.WaffoSandboxPrivateKey = "sandbox_private"
  77. setting.WaffoSandboxPublicCert = "sandbox_public"
  78. require.False(t, isWaffoWebhookEnabled())
  79. setting.WaffoSandboxApiKey = "sandbox_api"
  80. require.True(t, isWaffoWebhookEnabled())
  81. }
  82. func TestWaffoPancakeWebhookEnabledRequiresTopUpAndWebhookConfig(t *testing.T) {
  83. originalEnabled := setting.WaffoPancakeEnabled
  84. originalSandbox := setting.WaffoPancakeSandbox
  85. originalMerchantID := setting.WaffoPancakeMerchantID
  86. originalPrivateKey := setting.WaffoPancakePrivateKey
  87. originalWebhookPublicKey := setting.WaffoPancakeWebhookPublicKey
  88. originalWebhookTestKey := setting.WaffoPancakeWebhookTestKey
  89. originalStoreID := setting.WaffoPancakeStoreID
  90. originalProductID := setting.WaffoPancakeProductID
  91. t.Cleanup(func() {
  92. setting.WaffoPancakeEnabled = originalEnabled
  93. setting.WaffoPancakeSandbox = originalSandbox
  94. setting.WaffoPancakeMerchantID = originalMerchantID
  95. setting.WaffoPancakePrivateKey = originalPrivateKey
  96. setting.WaffoPancakeWebhookPublicKey = originalWebhookPublicKey
  97. setting.WaffoPancakeWebhookTestKey = originalWebhookTestKey
  98. setting.WaffoPancakeStoreID = originalStoreID
  99. setting.WaffoPancakeProductID = originalProductID
  100. })
  101. setting.WaffoPancakeEnabled = true
  102. setting.WaffoPancakeSandbox = false
  103. setting.WaffoPancakeMerchantID = "merchant"
  104. setting.WaffoPancakePrivateKey = "private"
  105. setting.WaffoPancakeStoreID = "store"
  106. setting.WaffoPancakeProductID = "product"
  107. setting.WaffoPancakeWebhookPublicKey = ""
  108. require.False(t, isWaffoPancakeWebhookEnabled())
  109. setting.WaffoPancakeWebhookPublicKey = "public"
  110. require.True(t, isWaffoPancakeWebhookEnabled())
  111. setting.WaffoPancakeEnabled = false
  112. require.False(t, isWaffoPancakeWebhookEnabled())
  113. setting.WaffoPancakeEnabled = true
  114. setting.WaffoPancakeSandbox = true
  115. setting.WaffoPancakeWebhookTestKey = ""
  116. require.False(t, isWaffoPancakeWebhookEnabled())
  117. setting.WaffoPancakeWebhookTestKey = "test_public"
  118. require.True(t, isWaffoPancakeWebhookEnabled())
  119. }
  120. func TestEpayWebhookEnabledRequiresTopUpAndWebhookConfig(t *testing.T) {
  121. originalPayAddress := operation_setting.PayAddress
  122. originalEpayID := operation_setting.EpayId
  123. originalEpayKey := operation_setting.EpayKey
  124. originalPayMethods := operation_setting.PayMethods
  125. t.Cleanup(func() {
  126. operation_setting.PayAddress = originalPayAddress
  127. operation_setting.EpayId = originalEpayID
  128. operation_setting.EpayKey = originalEpayKey
  129. operation_setting.PayMethods = originalPayMethods
  130. })
  131. operation_setting.PayAddress = "https://pay.example.com"
  132. operation_setting.EpayId = "epay_id"
  133. operation_setting.EpayKey = ""
  134. operation_setting.PayMethods = []map[string]string{{"type": "alipay"}}
  135. require.False(t, isEpayWebhookEnabled())
  136. operation_setting.EpayKey = "epay_key"
  137. require.True(t, isEpayWebhookEnabled())
  138. operation_setting.PayMethods = nil
  139. require.False(t, isEpayWebhookEnabled())
  140. }