Files
sub2api/backend/internal/repository/tencent_captcha_service_test.go
T
李建琦 6d655c9903
Release / update-version (push) Has been cancelled
Release / build-frontend (push) Has been cancelled
Release / release (push) Has been cancelled
Release / sync-version-file (push) Has been cancelled
CI / shell (push) Canceled after 0s
CI / test (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
CI / golangci-lint (push) Canceled after 0s
Security Scan / backend-security (push) Canceled after 0s
Security Scan / frontend-security (push) Canceled after 0s
Sub2API v1.0 - AI API 网关(二开初始版本,基于上游 Wei-Shaw/sub2api)
2026-08-21 18:30:13 +08:00

70 lines
2.4 KiB
Go

//go:build unit
package repository
import (
"context"
"testing"
"github.com/Wei-Shaw/sub2api/internal/service"
"github.com/stretchr/testify/require"
capcha "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/captcha/v20190722"
)
type tencentCaptchaAPIStub struct {
request *capcha.DescribeCaptchaResultRequest
response *capcha.DescribeCaptchaResultResponse
err error
}
func (s *tencentCaptchaAPIStub) DescribeCaptchaResultWithContext(_ context.Context, request *capcha.DescribeCaptchaResultRequest) (*capcha.DescribeCaptchaResultResponse, error) {
s.request = request
return s.response, s.err
}
func TestTencentCaptchaVerifierMapsCredentialsRequestAndResponse(t *testing.T) {
code := int64(1)
message := "OK"
requestID := "request-id"
client := &tencentCaptchaAPIStub{response: &capcha.DescribeCaptchaResultResponse{
Response: &capcha.DescribeCaptchaResultResponseParams{
CaptchaCode: &code,
CaptchaMsg: &message,
RequestId: &requestID,
},
}}
var gotSecretID, gotSecretKey, gotEndpoint string
verifier := &tencentCaptchaVerifier{
newClient: func(secretID, secretKey, endpoint string) (tencentCaptchaAPI, error) {
gotSecretID, gotSecretKey, gotEndpoint = secretID, secretKey, endpoint
return client, nil
},
}
result, err := verifier.VerifyTicket(context.Background(), service.TencentCaptchaCredentials{
AppID: 123456789,
AppSecretKey: "app-secret",
CloudSecretID: "cloud-secret-id",
CloudSecretKey: "cloud-secret-key",
Endpoint: "captcha.intl.tencentcloudapi.com",
}, service.TencentCaptchaProof{Ticket: "ticket", Randstr: "@rand"}, "203.0.113.10")
require.NoError(t, err)
require.Equal(t, "cloud-secret-id", gotSecretID)
require.Equal(t, "cloud-secret-key", gotSecretKey)
// 接入点由 service 按站点下发,repository 不得再写死国内站
require.Equal(t, "captcha.intl.tencentcloudapi.com", gotEndpoint)
require.NotNil(t, client.request)
require.Equal(t, uint64(9), *client.request.CaptchaType)
require.Equal(t, uint64(123456789), *client.request.CaptchaAppId)
require.Equal(t, "app-secret", *client.request.AppSecretKey)
require.Equal(t, "ticket", *client.request.Ticket)
require.Equal(t, "@rand", *client.request.Randstr)
require.Equal(t, "203.0.113.10", *client.request.UserIp)
require.Equal(t, &service.TencentCaptchaVerifyResponse{
CaptchaCode: 1,
CaptchaMsg: "OK",
RequestID: "request-id",
}, result)
}