Files
junhong_cmp_fiber/pkg/wechat/official_account_test.go
2026-01-30 17:25:30 +08:00

77 lines
2.3 KiB
Go

package wechat
import (
"context"
"testing"
"github.com/break/junhong_cmp_fiber/pkg/errors"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.uber.org/zap"
)
func TestOfficialAccountService_ParameterValidation(t *testing.T) {
logger := zap.NewNop()
mockSvc := &MockOfficialAccountService{}
t.Run("GetUserInfo_空授权码", func(t *testing.T) {
mockSvc.GetUserInfoFn = func(ctx context.Context, code string) (string, string, error) {
if code == "" {
return "", "", errors.New(errors.CodeInvalidParam, "授权码不能为空")
}
return "openid_123", "unionid_123", nil
}
openID, unionID, err := mockSvc.GetUserInfo(context.Background(), "")
require.Error(t, err)
appErr, ok := err.(*errors.AppError)
require.True(t, ok)
assert.Equal(t, errors.CodeInvalidParam, appErr.Code)
assert.Empty(t, openID)
assert.Empty(t, unionID)
})
t.Run("GetUserInfo_成功", func(t *testing.T) {
mockSvc.GetUserInfoFn = func(ctx context.Context, code string) (string, string, error) {
return "openid_123", "unionid_123", nil
}
openID, unionID, err := mockSvc.GetUserInfo(context.Background(), "valid_code")
require.NoError(t, err)
assert.Equal(t, "openid_123", openID)
assert.Equal(t, "unionid_123", unionID)
})
t.Run("GetUserInfoDetailed_空授权码", func(t *testing.T) {
mockSvc.GetUserInfoDetailedFn = func(ctx context.Context, code string) (*UserInfo, error) {
if code == "" {
return nil, errors.New(errors.CodeInvalidParam, "授权码不能为空")
}
return &UserInfo{OpenID: "openid_123"}, nil
}
userInfo, err := mockSvc.GetUserInfoDetailed(context.Background(), "")
require.Error(t, err)
assert.Nil(t, userInfo)
})
t.Run("GetUserInfoByToken_空参数", func(t *testing.T) {
mockSvc.GetUserInfoByTokenFn = func(ctx context.Context, accessToken, openID string) (*UserInfo, error) {
if accessToken == "" || openID == "" {
return nil, errors.New(errors.CodeInvalidParam, "AccessToken 和 OpenID 不能为空")
}
return &UserInfo{OpenID: openID}, nil
}
userInfo, err := mockSvc.GetUserInfoByToken(context.Background(), "", "openid_123")
require.Error(t, err)
assert.Nil(t, userInfo)
userInfo, err = mockSvc.GetUserInfoByToken(context.Background(), "token_123", "")
require.Error(t, err)
assert.Nil(t, userInfo)
})
_ = logger
}