微信相关能力
This commit is contained in:
76
pkg/wechat/official_account_test.go
Normal file
76
pkg/wechat/official_account_test.go
Normal file
@@ -0,0 +1,76 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user