tencent_captcha_settings_test.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. //go:build unit
  2. package service
  3. import (
  4. "context"
  5. "encoding/json"
  6. "testing"
  7. "github.com/Wei-Shaw/sub2api/internal/config"
  8. "github.com/stretchr/testify/require"
  9. )
  10. func TestSettingService_ParseSettingsMasksTencentCaptchaCredentials(t *testing.T) {
  11. svc := NewSettingService(&settingGetAllRepoStub{values: map[string]string{
  12. SettingKeyTencentCaptchaEnabled: "true",
  13. SettingKeyTencentCaptchaAppID: "123456789",
  14. SettingKeyTencentCaptchaAppSecretKey: "app-secret",
  15. SettingKeyTencentCaptchaCloudSecretID: "cloud-secret-id",
  16. SettingKeyTencentCaptchaCloudSecretKey: "cloud-secret-key",
  17. }}, &config.Config{})
  18. settings, err := svc.GetAllSettings(context.Background())
  19. require.NoError(t, err)
  20. require.True(t, settings.TencentCaptchaEnabled)
  21. require.Equal(t, "123456789", settings.TencentCaptchaAppID)
  22. require.True(t, settings.TencentCaptchaAppSecretKeyConfigured)
  23. require.True(t, settings.TencentCaptchaCloudSecretIDConfigured)
  24. require.True(t, settings.TencentCaptchaCloudSecretKeyConfigured)
  25. require.Equal(t, "app-secret", settings.TencentCaptchaAppSecretKey)
  26. require.Equal(t, "cloud-secret-id", settings.TencentCaptchaCloudSecretID)
  27. require.Equal(t, "cloud-secret-key", settings.TencentCaptchaCloudSecretKey)
  28. }
  29. func TestSettingService_GetPublicSettingsExposesOnlyTencentCaptchaAppID(t *testing.T) {
  30. svc := NewSettingService(&settingPublicRepoStub{values: map[string]string{
  31. SettingKeyTencentCaptchaEnabled: "true",
  32. SettingKeyTencentCaptchaAppID: "123456789",
  33. SettingKeyTencentCaptchaAppSecretKey: "app-secret",
  34. SettingKeyTencentCaptchaCloudSecretID: "cloud-secret-id",
  35. SettingKeyTencentCaptchaCloudSecretKey: "cloud-secret-key",
  36. SettingKeyTencentCaptchaRegion: TencentCaptchaRegionINTL,
  37. }}, &config.Config{})
  38. settings, err := svc.GetPublicSettings(context.Background())
  39. require.NoError(t, err)
  40. require.True(t, settings.TencentCaptchaEnabled)
  41. require.Equal(t, "123456789", settings.TencentCaptchaAppID)
  42. // 站点必须原样公开下发:前端据此决定加载哪个站点的 SDK 脚本与构造函数形态。
  43. require.Equal(t, TencentCaptchaRegionINTL, settings.TencentCaptchaRegion)
  44. raw, err := json.Marshal(settings)
  45. require.NoError(t, err)
  46. require.NotContains(t, string(raw), "app-secret")
  47. require.NotContains(t, string(raw), "cloud-secret-id")
  48. require.NotContains(t, string(raw), "cloud-secret-key")
  49. }
  50. func TestSettingService_GetTencentCaptchaConfig(t *testing.T) {
  51. repo := &settingPublicRepoStub{values: map[string]string{
  52. SettingKeyTencentCaptchaEnabled: "true",
  53. SettingKeyTencentCaptchaAppID: "123456789",
  54. SettingKeyTencentCaptchaAppSecretKey: "app-secret",
  55. SettingKeyTencentCaptchaCloudSecretID: "cloud-secret-id",
  56. SettingKeyTencentCaptchaCloudSecretKey: "cloud-secret-key",
  57. }}
  58. svc := NewSettingService(repo, &config.Config{})
  59. got := svc.GetTencentCaptchaConfig(context.Background())
  60. require.Equal(t, TencentCaptchaConfig{
  61. Enabled: true,
  62. AppID: "123456789",
  63. AppSecretKey: "app-secret",
  64. CloudSecretID: "cloud-secret-id",
  65. CloudSecretKey: "cloud-secret-key",
  66. // 未配置站点时回落中国站,保持存量部署行为不变
  67. Region: TencentCaptchaRegionCN,
  68. }, got)
  69. }