generated from VLADIMIR/template
36 lines
1.2 KiB
Go
36 lines
1.2 KiB
Go
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")
|
|
}
|
|
})
|
|
}
|
|
}
|