diff --git a/service/submitqueue/gateway/server/BUILD.bazel b/service/submitqueue/gateway/server/BUILD.bazel index 0a2d9c205..96e2a7db9 100644 --- a/service/submitqueue/gateway/server/BUILD.bazel +++ b/service/submitqueue/gateway/server/BUILD.bazel @@ -86,8 +86,10 @@ go_test( srcs = ["main_test.go"], embed = [":gateway_lib"], # keep deps = [ + "//api/base/mergestrategy/protopb:go_default_library", "//api/submitqueue/gateway/protopb:go_default_library", "//platform/errs:go_default_library", + "//service/submitqueue/gateway/server/mapper:go_default_library", "//submitqueue/entity:go_default_library", "//submitqueue/extension/queueconfig/mock:go_default_library", "//submitqueue/gateway/controller:go_default_library", diff --git a/service/submitqueue/gateway/server/main_test.go b/service/submitqueue/gateway/server/main_test.go index 612fd42d5..54aea2986 100644 --- a/service/submitqueue/gateway/server/main_test.go +++ b/service/submitqueue/gateway/server/main_test.go @@ -22,8 +22,10 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/uber-go/tally" + mergestrategypb "github.com/uber/submitqueue/api/base/mergestrategy/protopb" pb "github.com/uber/submitqueue/api/submitqueue/gateway/protopb" "github.com/uber/submitqueue/platform/errs" + "github.com/uber/submitqueue/service/submitqueue/gateway/server/mapper" "github.com/uber/submitqueue/submitqueue/entity" qcmock "github.com/uber/submitqueue/submitqueue/extension/queueconfig/mock" "github.com/uber/submitqueue/submitqueue/gateway/controller" @@ -137,3 +139,12 @@ func TestGatewayStatusError(t *testing.T) { infraErr := errors.New("storage unavailable") assert.Equal(t, infraErr, gatewayStatusError(infraErr)) } + +func TestGatewayStatusErrorUnknownLandStrategy(t *testing.T) { + _, err := mapper.ProtoToLandRequest(&pb.LandRequest{ + Queue: "test-queue", + Strategy: mergestrategypb.Strategy(9999), + }) + require.Error(t, err) + assert.Equal(t, codes.InvalidArgument, status.Code(gatewayStatusError(err))) +} diff --git a/service/submitqueue/gateway/server/mapper/BUILD.bazel b/service/submitqueue/gateway/server/mapper/BUILD.bazel index b014aa3ea..4442956d8 100644 --- a/service/submitqueue/gateway/server/mapper/BUILD.bazel +++ b/service/submitqueue/gateway/server/mapper/BUILD.bazel @@ -17,6 +17,7 @@ go_library( "//api/submitqueue/gateway/protopb:go_default_library", "//platform/base/change:go_default_library", "//platform/base/mergestrategy:go_default_library", + "//platform/errs:go_default_library", "//submitqueue/entity:go_default_library", ], ) @@ -37,6 +38,7 @@ go_test( "//api/submitqueue/gateway/protopb:go_default_library", "//platform/base/change:go_default_library", "//platform/base/mergestrategy:go_default_library", + "//platform/errs:go_default_library", "//submitqueue/entity:go_default_library", "@com_github_stretchr_testify//assert:go_default_library", "@com_github_stretchr_testify//require:go_default_library", diff --git a/service/submitqueue/gateway/server/mapper/land.go b/service/submitqueue/gateway/server/mapper/land.go index b33fc2c03..67b5be817 100644 --- a/service/submitqueue/gateway/server/mapper/land.go +++ b/service/submitqueue/gateway/server/mapper/land.go @@ -26,6 +26,7 @@ import ( pb "github.com/uber/submitqueue/api/submitqueue/gateway/protopb" "github.com/uber/submitqueue/platform/base/change" "github.com/uber/submitqueue/platform/base/mergestrategy" + "github.com/uber/submitqueue/platform/errs" "github.com/uber/submitqueue/submitqueue/entity" ) @@ -38,7 +39,7 @@ var errUnknownStrategy = errors.New("unknown land strategy in proto message") func ProtoToLandRequest(req *pb.LandRequest) (entity.LandRequest, error) { strategy, err := resolveLandStrategy(req.GetStrategy()) if err != nil { - return entity.LandRequest{}, fmt.Errorf("failed to map land strategy: %w", err) + return entity.LandRequest{}, errs.NewUserError(fmt.Errorf("failed to map land strategy: %w", err)) } return entity.LandRequest{ Queue: req.GetQueue(), diff --git a/service/submitqueue/gateway/server/mapper/land_test.go b/service/submitqueue/gateway/server/mapper/land_test.go index f1e6ef253..5e788b60c 100644 --- a/service/submitqueue/gateway/server/mapper/land_test.go +++ b/service/submitqueue/gateway/server/mapper/land_test.go @@ -24,6 +24,7 @@ import ( pb "github.com/uber/submitqueue/api/submitqueue/gateway/protopb" "github.com/uber/submitqueue/platform/base/change" "github.com/uber/submitqueue/platform/base/mergestrategy" + "github.com/uber/submitqueue/platform/errs" "github.com/uber/submitqueue/submitqueue/entity" ) @@ -75,6 +76,7 @@ func TestProtoToLandRequest(t *testing.T) { got, err := ProtoToLandRequest(tt.req) if tt.expectedErr != nil { require.ErrorIs(t, err, tt.expectedErr) + assert.True(t, errs.IsUserError(err)) return } require.NoError(t, err)