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
70 lines
2.4 KiB
Go
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)
|
|
}
|