package app import ( "errors" "testing" "evening_detective_server/internal/services/team_service" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) func TestTeamErrorStatus(t *testing.T) { for _, tc := range []struct { name, internalMessage string err error code codes.Code message string }{ {"game not found", "add failed", team_service.ErrGameNotFound, codes.NotFound, "Игра не найдена"}, {"team not found", "delete failed", team_service.ErrTeamNotFound, codes.NotFound, "Команда не найдена"}, {"invalid captain email", "add failed", team_service.ErrInvalidCaptainEmail, codes.InvalidArgument, "Укажите корректную почту капитана"}, {"internal", "add failed", errors.New("private database detail"), codes.Internal, "add failed"}, } { t.Run(tc.name, func(t *testing.T) { err := teamErrorStatus(tc.err, tc.internalMessage) if status.Code(err) != tc.code || status.Convert(err).Message() != tc.message { t.Fatalf("status=%v, want %v %q", err, tc.code, tc.message) } if status.Convert(err).Message() == "private database detail" { t.Fatal("private error exposed") } }) } }