41 lines
1.6 KiB
Go
41 lines
1.6 KiB
Go
// Package grpc_test 验证 user-service gRPC 层的错误 reason 映射。
|
||
package grpc_test
|
||
|
||
import (
|
||
"context"
|
||
"testing"
|
||
|
||
userv1 "hyapp/api/proto/user/v1"
|
||
"hyapp/pkg/xerr"
|
||
authservice "hyapp/services/user-service/internal/service/auth"
|
||
userservice "hyapp/services/user-service/internal/service/user"
|
||
"hyapp/services/user-service/internal/storage/memory"
|
||
grpcserver "hyapp/services/user-service/internal/transport/grpc"
|
||
)
|
||
|
||
// TestLoginPasswordErrorCarriesReason 验证 transport 层把领域错误转换为 ErrorInfo.reason。
|
||
func TestLoginPasswordErrorCarriesReason(t *testing.T) {
|
||
// Auth service 没有完整输入时返回 INVALID_ARGUMENT,transport 必须转成 gRPC ErrorInfo.reason。
|
||
server := grpcserver.NewServer(authservice.New(authservice.Config{}), userservice.New(memory.NewRepository()))
|
||
|
||
_, err := server.LoginPassword(context.Background(), &userv1.LoginPasswordRequest{
|
||
Meta: &userv1.RequestMeta{DeviceId: "ios"},
|
||
})
|
||
if got := xerr.ReasonFromGRPC(err); got != xerr.InvalidArgument {
|
||
t.Fatalf("reason mismatch: got %s", got)
|
||
}
|
||
}
|
||
|
||
// TestResolveDisplayUserIDErrorCarriesReason 验证短号接口也使用 gRPC ErrorInfo.reason。
|
||
func TestResolveDisplayUserIDErrorCarriesReason(t *testing.T) {
|
||
// 短号格式错误也必须通过同一 gRPC 错误映射路径暴露稳定 reason。
|
||
server := grpcserver.NewServer(authservice.New(authservice.Config{}), userservice.New(memory.NewRepository()))
|
||
|
||
_, err := server.ResolveDisplayUserID(context.Background(), &userv1.ResolveDisplayUserIDRequest{
|
||
DisplayUserId: "bad",
|
||
})
|
||
if got := xerr.ReasonFromGRPC(err); got != xerr.DisplayUserIDInvalid {
|
||
t.Fatalf("reason mismatch: got %s", got)
|
||
}
|
||
}
|