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) { 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) { 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) } }