downloader_mgr_test.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // Copyright 2021 Tencent Inc. All rights reserved.
  2. package downloader_test
  3. import (
  4. "context"
  5. "testing"
  6. "time"
  7. "github.com/stretchr/testify/assert"
  8. "github.com/stretchr/testify/require"
  9. "github.com/wechatpay-apiv3/wechatpay-go/core"
  10. "github.com/wechatpay-apiv3/wechatpay-go/core/downloader"
  11. "github.com/wechatpay-apiv3/wechatpay-go/core/option"
  12. "github.com/wechatpay-apiv3/wechatpay-go/utils"
  13. )
  14. func TestAutoCertificateDownloader(t *testing.T) {
  15. patches := mockDownloadServer(t)
  16. defer patches.Reset()
  17. ctx := context.Background()
  18. mgr := downloader.NewCertificateDownloaderMgrWithInterval(ctx, 5*time.Second)
  19. require.NotNil(t, mgr)
  20. defer mgr.Stop()
  21. privateKey, err := utils.LoadPrivateKey(testingKey(mockMchPrivateKey))
  22. require.NoError(t, err)
  23. opts := []core.ClientOption{
  24. option.WithMerchantCredential(mockMchID, mockMchCertificateSerial, privateKey),
  25. option.WithoutValidator(),
  26. }
  27. client, err := core.NewClient(ctx, opts...)
  28. require.NoError(t, err)
  29. err = mgr.RegisterDownloaderWithClient(ctx, client, mockMchID, mockAPIv3Key)
  30. require.NoError(t, err)
  31. err = mgr.RegisterDownloaderWithPrivateKey(ctx, privateKey, mockMchCertificateSerial, mockMchID, mockAPIv3Key)
  32. require.NoError(t, err)
  33. provider := mgr.GetCertificateVisitor(mockMchID)
  34. assert.NotEmpty(t, provider.GetAll(ctx))
  35. for serialNo, cert := range provider.GetAll(ctx) {
  36. assert.Equal(t, serialNo, utils.GetCertificateSerialNumber(*cert))
  37. }
  38. time.Sleep(11 * time.Second)
  39. mgr.RemoveDownloader(ctx, mockMchID)
  40. assert.Empty(t, provider.GetAll(ctx))
  41. }