| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- //go:build unit
- package handler
- import (
- "encoding/json"
- "testing"
- "github.com/Wei-Shaw/sub2api/internal/service"
- "github.com/stretchr/testify/require"
- )
- func TestAuthRequestsBindTencentCaptchaProof(t *testing.T) {
- const payload = `{"email":"user@example.com","password":"secret-123","tencent_captcha_ticket":"ticket-value","tencent_captcha_randstr":"@rand-value"}`
- tests := []struct {
- name string
- decode func([]byte) service.CaptchaProof
- }{
- {
- name: "登录",
- decode: func(raw []byte) service.CaptchaProof {
- var req LoginRequest
- require.NoError(t, json.Unmarshal(raw, &req))
- return captchaProof(req.TurnstileToken, req.TencentCaptchaTicket, req.TencentCaptchaRandstr)
- },
- },
- {
- name: "注册",
- decode: func(raw []byte) service.CaptchaProof {
- var req RegisterRequest
- require.NoError(t, json.Unmarshal(raw, &req))
- return captchaProof(req.TurnstileToken, req.TencentCaptchaTicket, req.TencentCaptchaRandstr)
- },
- },
- {
- name: "发送邮箱验证码",
- decode: func(raw []byte) service.CaptchaProof {
- var req SendVerifyCodeRequest
- require.NoError(t, json.Unmarshal(raw, &req))
- return captchaProof(req.TurnstileToken, req.TencentCaptchaTicket, req.TencentCaptchaRandstr)
- },
- },
- {
- name: "忘记密码",
- decode: func(raw []byte) service.CaptchaProof {
- var req ForgotPasswordRequest
- require.NoError(t, json.Unmarshal(raw, &req))
- return captchaProof(req.TurnstileToken, req.TencentCaptchaTicket, req.TencentCaptchaRandstr)
- },
- },
- {
- name: "OAuth启动",
- decode: func(raw []byte) service.CaptchaProof {
- var req oauthStartCaptchaRequest
- require.NoError(t, json.Unmarshal(raw, &req))
- return captchaProof(req.TurnstileToken, req.TencentCaptchaTicket, req.TencentCaptchaRandstr)
- },
- },
- {
- name: "Passkey登录",
- decode: func(raw []byte) service.CaptchaProof {
- var req passkeyBeginLoginRequest
- require.NoError(t, json.Unmarshal(raw, &req))
- return captchaProof(req.TurnstileToken, req.TencentCaptchaTicket, req.TencentCaptchaRandstr)
- },
- },
- {
- name: "OAuth待处理账号发送邮箱验证码",
- decode: func(raw []byte) service.CaptchaProof {
- var req sendPendingOAuthVerifyCodeRequest
- require.NoError(t, json.Unmarshal(raw, &req))
- return captchaProof(req.TurnstileToken, req.TencentCaptchaTicket, req.TencentCaptchaRandstr)
- },
- },
- {
- name: "OAuth待处理账号创建",
- decode: func(raw []byte) service.CaptchaProof {
- var req createPendingOAuthAccountRequest
- require.NoError(t, json.Unmarshal(raw, &req))
- return captchaProof(req.TurnstileToken, req.TencentCaptchaTicket, req.TencentCaptchaRandstr)
- },
- },
- }
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- proof := test.decode([]byte(payload))
- require.Equal(t, "ticket-value", proof.TencentTicket)
- require.Equal(t, "@rand-value", proof.TencentRandstr)
- })
- }
- }
|